본문 바로가기
머신러닝/개념익히기

머신러닝 앙상블 학습, 보팅 배깅 부스팅

by ADELA_J 2023. 8. 30.

<앙상블 학습 Ensemble Learning >

- 앙상블 학습을 통한 분류는 여러 개의 분류기(Classifier)를 생성하고 그 예측을 결합함으로써

보다 정확한 최종 예측을 도출하는 기법

 ▶ 다양한 분류기의 예측 결과를 결합함으로써 단일 분류기보다 신뢰성이 높은 예측값을 얻는 것.

- 대부분 정형 데이터 분류 할 때 더 뛰어난 성능을 나타내고 있음. 

- 랜덤포레스트, 그래디언트 부스팅 알고리즘이 많이 애용되면서 XGBoost, LightGBM 등 다양한 알고리즘이 인기

 

<앙상블 학습 유형>

* 보팅 Voting : 여러 개의 분류기가 투표를 통해 최종 예측 결과를 결정,

  일반적으로 서로 다른 알고리즘을 가진 분류기를 결합

* 배깅 Bagging : 여러 개의 분류기가 투표를 통해 최종 예측 결과를 결정222,

  각각의 분류기가 모두 같은 유형의 알고리즘 기반, 데이터 샘플링을 서로 다르게 가져가면서

   학습을 수행해 보팅을 수행하는 것  대표적으로 랜덤포레스트 알고리즘

출처 : https://velog.io/@jiselectric/Ensemble-Learning-Voting-and-Bagging-at6219ae

▶ Voting : 선형 회귀, K 최근접 이웃, SVM 이라는 3개의 ML 알고리즘이 같은 데이터 세트에 대해 학습, 예측 후

보팅을 통해 최종 예측 결과를 선정

▶ Bagging : 결정트리라는 단일 ML 알고리즘으로 여러 분류기가 학습으로 개별 예측을 하는데, 데이터 세트가 다름

  -부트스트래핑(Bootstrapping) 분할 방식

   : 샘플링해 추출하는데 이렇게 개별 classifier에게 데이터를 샘플링해서 추출하는 방식

  - 개별 분류기가 부트스트래핑 방식으로 샘플링된 데이터 세트에 대해서 학습을 통해 개별적인 예측을 수행한 결과를 보팅을 통해 최종 예측 결과를 선정하는 방식. 

  - 배깅은 데이터 세트 간 중첩을 허용함. 

     : ex , 1000개 데이터를 10개의 분류기가 1나누면 100개의 데이터 내에는 중복된 데이터가 있음.

 

*Boosting : 여러 개의 분류기가 순차적으로 학습을 수행하되, 앞에서 학습한 분류기가 예측이 틀린 데이터에 대해서는 올바르게 예측할 수 있도록 다음 분류기에게는 가중치(weight)를 부여하며 학습과 예측을 진행하는 것

   ▶ 계속해서 분류기에 가중치를 부스팅하면서 학습을 진행하는 것

   - 예측 성능이 뛰어남. 

   - 대표적으로 그래디언트 부스트, XGBoost(eXtra Gradient Boost), LightGBM(Light Gradient Boost)가 있음

 

* 스태킹 : 여러 가지 다른 모델의 예측 결과값을 다시 학습 데이터로 만들어서 다른 모델로 재학습시켜 결과 예측

 

<Voting 보팅 유형>

1. 하드 보팅 Hard Voting

 - 하드 보팅을 이용한 분류 Classification는 다수결의 원칙과 비슷.

 - 예측한 결괏값들 중 다수의 분류기가 결정한 예측값을 최종 보팅 결괏값으로 선정

 

2. 소프트 보팅 Soft Voting

 - 분류기들의 레이블 값 결정 확률을 모두 더해 이를 평균해 이들 중 확률이 가장 높은 레이블 값을 최종 보팅 결괏값으로 선정

- 일반적으로 이걸로 적용됨

출처 : https://heeya-stupidbutstudying.tistory.com/entry/ML-%EC%95%99%EC%83%81%EB%B8%94Ensemble-Learning-Voting-Bagging-Boosting

▶ 왼쪽그림, 하드보팅 

 - 1,3,4번이 1로 레이블 값을 예측하고 분류기 2번이 2로 예측하면 다수결 원칙에 따라 최종 예측은 1이 됨

▶ 오른쪽 그림, 소프트 보딩

 - 레이블 1의 평균 예측 확률은 (0.7 + 0.2 + 0.8 + 0.9 ) / 4 = 0.65

 - 레이블 2의 평균 예측 확률은 (0.3 + 0.8 + 0.2 + 0.1 ) / 4 = 0.35

   : 따라서 확률이 0.65로 더 높은 레이블 1로 최종 보팅되는 것. 

 - 소프트 보딩이 일반적으로 예측 성능이 더 좋음. 

 

<보팅 분류기 Voting Classifier>

-사이킷런 VotingClassifier 클래스를 제공중

# 예제 데이터 : 위스콘신 유방암 데이터, 악성/양성 여부를 결정하는 이진 분류 데이터 세트. 

# 종양크기, 모양 등 관련된 많은 피처를 가지고 있음.

▶ 필요한 모듈과 데이터를 로딩함 ( load_breast_cancer을 통해 불러옴)

▶ 로지스틱회귀와 KNN을 기반으로 소프트 보딩 방식으로 새롭게 보딩 분류기를 만들어봄

▶ VotingClassifier 클래스는 주요 생성 인자로 estimators와 voting 값을 받음

  ▷ estimators 는 리스트 값으로 보팅에 사용될 여러 개의 classifier 객체들을 튜플 형식으로 입력받음

  ▷ voting은 소프트할건지 하드 할건지 기재. 디폴트값은 hard

▶ 보팅 분류기가 조금 더 높게 나오긴했는데, 무조건 예측 성능이 향상되지는 않음.

▷하지만 보팅, 배깅, 부스팅 등 앙상블 방법은 다른 단일 ML 알고리즘보다 뛰어난 예측 성능을 가지는 경우가 많음

 - 고정된 데이터 세트에서 단일 ML 알고리즘이 뛰어난 성능을 발휘하더라도 현실 세계는 다양한 변수와 예측이 어려운 규칙으로 구성되어있음. 

: ML 모델의 성능은 다양한 테스트 데이터에 의해 검증되므로 어떻게 높은 유연성을 가지고 현실에 대처할 수 있는 가가 중요한 ML 모델의 평가요소  ▷ 편향-분산 트레이드오프는 ML모델이 극복해야 할 중요 과제