앙상블 보팅(Voting)

딩나·2023년 11월 20일

앙상블이란

여러 머신 러닝 모델을 결합하여 각각의 모델에서 발생할 수 있는 오류를 줄이고, 전체적인 예측 성능을 향상시키는 기법

보팅(Voting)

여러 머신러닝 모델의 예측을 결합하여 최종적인 예측을 도출하는 앙상블 기법. 각 모델이 독립적으로 예측을 수행하고 그 결과를 투표에 의해 종합함.

장점

  • 다양한 모델들이 서로 다르 방식으로 데이터의 특성을 학습하기 때문에, 보팅을 통해 개별 모델보다 더 정확한 예측 가능
  • 단일 모델이 특정 데이터에 과적합되는 것을 방지하고, 다양한 모델을 결합함으로써 일반화 능력 향상

단점

  • 앙상블에 포함된 모델의 성능이 다양할 때, 성능이 낮은 모델이 최종 결과에 부정적인 영향을 줄 수 있음
  • 비슷한 유형의 오류를 범하는 모델들이 많다면, 다수결이 그 오류를 반영할 수 있으며, 이는 잘못된 결정을 내릴 가능성을 높임
  • 여러 모델을 훈련시키고 조합해야 하므로, 단일 모델보다 계산 비용이 더 많이 들어감

하드 보팅(Hard Voting)

얻은 예측값들을 투표하여 가장 많은 표를 얻은 클래스를 최종 예측 결과로 선정함. 각 모델은 동일한 데이터셋에 대해 독립적으로 학습하고 예측을 수행함.

mode() 메서드를 사용하여 각 행별로 가장 많이 예측된 값을 찾음(최빈값)

pred_df.mode(axis = 1)[0]

소프트 보팅(Soft Voting)

여러 개의 머신러닝 모델의 예측 확률을 평균내어, 가장 확률이 높은 클래스를 최종 예측 결과로 선정함. 각 모델의 확신도를 고려하므로, 하트보팅에 비해 더 세밀하고 정확한 결정을 내릴 수 있게 함.

idxmax() 메서드를 사용하여 데이터프레임에서 각 행별로 가장 높은 평균 확률을 가진 클래스를 찾아냄.

soft_pred_mean.idxmax(axis = 1)

사이킷런을 활용한 보팅 앙상블

from sklearn.ensemble import VotingClassifier

가중치 부여는 앙상블 모델에서 각각의 분류기가 최정 결정에 미치는 영향을 조정하는 방식

VotingClassifier의 파라미터

  • estimators : 모델의 리스트를 튜플 형태로 입력
    - 각 튜플은 (이름,모델) 형식으로 구성되어야 함
  • voting : 보팅 방식을 선택함. 'hard'로 설정하면 하드 보팅을 수행하고, 'soft'로 설정하면 소프트 보팅을 수행함
  • weights : 각 분류기의 투표에 가중치를 부여할 수 있음. 기본값은 모든 분류기에 동일한 가중치를 부여함. 만약 특정 분류기에 더 높은 가중치를 주고 싶다면, 이 파라미터를 사용하여 조정할 수 있음.

0개의 댓글