캐글을 풀게 되다가 알게 된 내용.
기본적으로 Ensemble 은 보팅, 배깅과 부스팅으로 나뉘는데, 부스팅은 약화된 학습기를 가지고 중첩해서 학습을 하는거였다면, 배깅과 보팅은 기본적으로 투표를 활용한다.
- 보팅 : 한 데이터 세트에 대해서 "서로 다른 알고리즘"을 가진 분류기들을 결합하는 방식
- 배깅 : 각 분류기는 모두 같은 유형의 알고리즘, 데이터 샘플링이 달라짐(부트스트래핑)
여기서, 보팅의 경우는 하드보팅과 소프트 보팅으로 나뉜다.
- 하드 보팅 : 각 분류기의 최종 결과에 따른 다수결
- 소프트 보팅 : 각 분류기마다 Class의 확률을 정하고, 그 확률들의 평균값이 큰 값을 최종으로 결정.
from sklearn.ensemble import VotingClassifier vo_clf = VotingClassifier(estimators = [('lgbm',model_lgbmc), ('gb', model_gbc), ('cb', model_cbc)], voting = 'soft') vo_clf.fit(X, y) final_ensemble_voclf = vo_clf.predict_proba(test_df) get_final_df(final_ensemble_voclf)
다음과 같이 각 모델들을 넣고, 해당 모델들을 학습시킨다.
voting에서 이제 soft로 할지 hard로 할지 결정하면 된다.
실전에서 많이 쓸지는 모르겠는데, 캐글 등의 경진대회 에서는 유용하게 사용할 것으로 예상된다.
'Archive > TIL' 카테고리의 다른 글
[TIL] Dacon 하면서 자잘하게 배운 내용들 정리 (0) | 2024.01.20 |
---|---|
[TIL] 0808 아침스터디 - 다차원척도법 (MDS) (0) | 2022.08.08 |
[TIL] 0805 아침스터디 - 나이브 베이즈 복습 (0) | 2022.08.05 |
[TIL] 0729 아침스터디 - Kernel Trick (0) | 2022.07.29 |
[TIL] 0725 아침스터디 - ROC curve, 비용민감 곡선 (0) | 2022.07.25 |