//
Search

Q. 앙상블 하면 배깅이랑 부스팅이 대표적으로 항상 언급되는 것 같은데 혹시 다른 방법은 없는지 ? (스태킹도 있는걸로 알고 있어요!) 일반적으로 성능은 뭐가 가장 좋은지도 궁금해요!

Ensemble

Stacking

잘 사용되지는 않지만 대회에서 성능을 조금이라도 높이고자 사용하는데 향상한다는 보장은 못함
다수의 여러 가지 알고리즘의 예측 데이터를 기반으로 다시 예측을 수행
여기서 알고리즘은 SVM, Random Forest 등등 사용
예시)
m개의 instance, n개의 feature 데이터 셋에서 3개의 모델을 사용

Voting

Voting은 다른 알고리즘 model을 조합해서 사용
Bagging은 같은 알고리즘 내에서 다른 sample 조합을 사용
서로 다른 알고리즘이 도출해 낸 결과물에 대하여 최종 투표하는 방식

Hard Voting

5개의 샘플에 대해 분류를 예측한 값이 1, 0, 0, 1, 1 이었다고 가정한다면
1이 3표, 0이 2표를 받았기 때문에 Hard Voting 방식에서는 1이 최종 값으로 예측
hard_vote = VotingClassifier(models, voting='hard')

Soft Voting

soft vote 방식은 각각의 확률의 평균 값을 계산한다음에 가장 확률이 높은 값으로 확정
가령 class 0이 나올 확률이 (0.4, 0.9, 0.9, 0.4, 0.4)이었고
class 1이 나올 확률이 (0.6, 0.1, 0.1, 0.6, 0.6)이면
class 0이 나올 최종 확률은 (0.4+0.9+0.9+0.4+0.4) / 5 = 0.44
class 1이 나올 최종 확률은 (0.6+0.1+0.1+0.6+0.6) / 5 = 0.4
앞선 Hard Vote의 결과와는 다른 결과 값이 최종 으로 선출되게 됩니다.
soft_vote = VotingClassifier(models, voting='soft')
이후 학습 후 예측.

차이

절대적으로 어떤 방법이 더 좋다 보다는 그때 그때 상황에 따라 다른 방법을 사용함.
근데 일반적으로는 Boosting 방법이 성능은 제일 좋음.
outlier가 많거나 데이터의 variance가 높으면 bagging 방법을 통해 과적합을 방지하는 방향으로 구성할 수도,