Ensemble
유튜브(허민석) 앙상블-하드보팅, 소프트보팅
에서 가져온 사진. 앙상블의 이름을 잘 설명해주는 사진 같다.
1. 목적
- 여러 분류기를 하나의 분류기로 연결하여, 개별 분류기보다 더 좋은 성능을 달성
- 일반화(
generalizability
), 강건성(robustness
)를 향상시키기 위해 여러 모델의 예측값을 결합
2. 방법
- 여러 분류 알고리즘 사용 : 다수결 투표(Voting)
- 하나의 분류 알고리즘 사용 : 배깅(Bagging), 부스팅(Boosting)
3. 종류
3-1. Voting (Soft Voting, Hard Voting)
- 동일한 훈련세트
- 같은 훈련세트를 여러 모델에 넣어서 돌린다.
3-2. 배깅(bootstrap aggregating)
- 하나의 모델
- 훈련세트를 여러 개로 쪼개서 돌린다.
- 랜덤포레스트-의사결정나무가
가장 대표적인 앙상블 학습 알고리즘
- 부트스트랩(Bootstrap) 실시 : 데이터로부터 복원추출(
중복허용
) 샘플링 이용
- 7개 중에 하나를 뽑아서 돌린 다음, 뽑힌 것을 제외하고 다시 추출하는 것이 아니라, 다시 7개 중에 하나를 뽑아 돌린다.
- 분산을 줄이고 과적합을 막는다.
3-3 부스팅
- 샘플. 학습하고 나서 수정 or 가중치
- 결합된 모델의 편향을 감소시키기 위해서 노력
- 여러 모델을 결합해 하나의 강력한 앙상블 모델을 구축
- 샘플을 뽑을 때 잘못 분류된 data 50% 를 재학습
3-4 라이브러리
- 그레이디언트 부스팅 : 이전 트리의 손실을 보완하는 식으로 얕은 결정트리를 연속하여 추가
- from sklearn.ensemble import GradientBoosingClassifier
- 전용 라이브러리인 LightGBM이 있을 정도로 추천이 많이 되는 라이브러리
- XGBoost vs LightGBM
- MS사에서 만든 LightGBM : 그레디언트 전용 라이브러리. 히스토그램 기반 부스팅 지원으로 인기가 높았다. 히스토그램 기반 부스팅 지원은 XGBoost나 히스토그램기반 그레디언트 부스팅도 있다. (from lightgbm import LGBMClassifier)
- XGBoost : LightGBM과 마찬가지로 오픈소스 라이브러리. 캐글에서 많이 사용하는 라이브러리이다.(from xgboost import XGBClassifier)
- import 명에서 알 수 있듯이 Classifier말고 regressor도 있다.
4. 참고
유튜브 : 강서대학교 빅데이터경영학과 이상철 교수 채널- 앙상블학습
한빛미디어 [혼자 공부하는 머신러닝+딥러닝] 13강 트리의 앙상블
https://scikit-learn.org/stable/modules/ensemble.html
5. 추가 공부할 것
그레디언트 부스팅 할 때 경사하강법이 나왔는데, 그 개념을 알아보자.
soft voting과 hard voting의 차이점
XGBoost와 LightGBM의 자세한 학습