본문 바로가기
Data Analytics with python/[Theory]

[Machine Learning][Classification] Ensemble Learning

by 보끔밥0130 2023. 2. 15.
728x90

앙상블 학습

여러 개의 분류기(Classifier)를 생성하고 그 예측을 결합함으로써 보다 정확한 최종 예측을 도출하는 기법입니다.

 

앙상블 학습의 유형

대표적으로 ① 보팅(Voting), ② 배깅(Bagging), ③ 부스팅(Boosting) 이 있고 이외에도 스태깅 등 다양한 앙상블 방법이 있습니다.

 

보팅 VS 배깅 VS 부스팅

 

● 보팅 : 서로 다른 알고리즘을 가진 분류기를 결합하여, 데이터 샘플링을 같게 가져가면서 학습을 수행합니다.

- Hard Voting : 각각 분류기가 예측한 결괏값들 중 다수의 분류기가 결정한 예측값을 최종 보팅 결괏값으로 선정합니다.

 즉, 마치 '다수결 원칙' 처럼 결과값을 선정합니다. 

 

- Soft Voting : 분류기들의 레이블 값 결정 확률을 각 class별로 모두 더하여 평균해서 이들 중 확률이 가장 높은 레이블 값을 최종 보팅 결괏값으로 선정합니다.

 

 배깅 : 여러 개의 분류기가 모두 같은 유형의 알고리즘 기반이나, 데이터 샘플링을 서로 다르게 가져가면서 학습을 수행합니다.

테이터 샘플링은 부트스트래핑(Bootstrapping) 방식으로 샘플링합니다.

 

* 부트스트래핑 : 주어진 데이터로부터 복원 추출로 표본을 구하는 작업을 여러 번 반복해 원하는 값을 추정

출처 : 파이썬 머신러닝 완벽가이드

 부스팅 : 여러 개의 분류기가 순차적으로 학습을 수행하지만, 앞서 학습한 분류기가 예측이 틀린 데이터에 대한 올바른 예측이 이루어지도록 다음 분류기에는 가중치를 부여하면서 학습과 예측을 진행하는 방식입니다.

 

sklearn-Voting Classifier

from sklearn.ensemble import VotingClassifier

# soft voting 
# 하드보팅은 'hard'
vo_clf = VotingClassifier( estimators = [('모델이름1',model1),('모델이름2',model2)], voting = 'soft') 

vo_clf.fit(X_train, y_train)
y_pred = vo_clf.predict(X_test)
accuracy_score(y_test, y_pred)

 

728x90

댓글