빅콘테스트 퓨처스 대회 준비 중 학습 모델로 Ensemble 모델을 사용하기로 결정했다. 대회 준비 중 Ensemble 공부했던 내용을 정리해 보고자 한다.
1. Voting Ensemble(투표 앙상블)
Voting Ensemble이란, 성능을 향상시키기 위해 개별 모델들의 예측치(prediction)를 합치는 앙상블 기법이다. regression 문제인 경우, 투표 앙상블은 다수의 모델에서 산출된 예측치의 평균을 최종 예측치로 선정한다. Classification 문제인 경우, Hard Voting과 Soft Voting으로 나눌 수 있다. Hard Voting은 가장 많은 득표를 한 class를 최종 예측치로 선정하고 Soft Voting은 각 class별로 예측된 확률의 총합을 구해 가장 큰 값을 가진 class를 최종 예측치로 선정한다.
투표 앙상블은 모델별로 다른 hyperparameter를 가지는 모델들의 예측 결과를 합칠 때 효과적이며 2개 이상의 모델들이 예측에 사용될 때 효과적이다.
투표 앙상블은 기존의 여러 머신 러닝 모델을 사용한다. 예측 모델링 작업에서는 학습 계획이 비교적 잘 수행되는 경우에만 유의미하다. 3개 중 2개의 모델이 완전히 잘못된 예측을 하면, 투표 앙상블의 의미는 퇴색한다.
투표 앙상블 vs. 개별 모델 | |
성능 | 투표 앙상블이 항상 더 나은 성능을 보장하지 못 함. |
예측 분산 | 투표 앙상블 < 개별 모델 (회귀 예측오차, 분류작업) |
모델의 높은 안전성과 신뢰성에 도움을 주며, 개별 모델보다 항상 좋은 성능 및 낮은 분산을 가질 때 투표 앙상블을 사용해야 한다.
1.1 장점
- 여러 모델의 예측치를 모두 고려하는 것이기 때문에 개별 모델의 예측 성능보다 좋을 수 있다.
- 투표 앙상블을 예측해 이용하면 개별 모델을 이용하는 것보다 더 낮은 분산을 제공한다.
- 분산이 낮다는 것은 모델의 신뢰도와 안전성이 높다는 것을 의미한다.
- 회귀에서는 predict error(예측 오차) 분산을 낮춘다.
- 분류에서는 accuracy(정확도) 분산을 낮춘다.
1.2 단점
- 일부의 모델은 좋은 성능을 가지고, 다른 일부의 모델은 나쁜 성능을 가져도 모든 모델을 동일한 중요도로 통합한다.
- 항상 최적의 결과를 보장하지 못한다.
- 최적을 보장하지 못 하는 이유는 앙상블을 이루는 모델이 서로 독립이라면, 투표 앙상블이 최적의 방법이 될 테지만, 앙상블을 구성하는 개별 모델이 동일한 데이터로 훈련되기 때문에 서로 독립적인 경우가 드물다.
1.3 Hard Voting Ensemble vs. Soft Voting Ensemble
[Hard Voting Ensemble]
여러 모델을 생성하고 그 성과를 비교한다. classifier의 결과들을 집계하여 가장 많은 표를 얻는 클래스를 최종 예측값으로 정하는 것을 Hard Voting Classifier라고 한다.
[Soft Voting Ensemble]
앙상블에 사용되는 모든 분류기가 클래스의 확률을 예측할 수 있을 때 사용한다. 각 분류기의 예측을 평균 내어 확률이 가장 높은 클래스로 예측하게 된다.
2. Weighted Average Ensemble(가중 평균 앙상블)
Voting Ensemble의 단점 중 하나가 일부의 모델은 좋은 성능을 가지고, 다른 일부의 모델은 나쁜 성능을 가져도 모든 모델을 동일한 중요도로 통합하는 점이다. 이를 고려한 모델이 Weighted Average Ensemble이다.
Weighted Average Ensemble이란, 기여도에 따라 각 모델의 예측값에 가중치(weight)를 주어, 최종 예측값을 만드는 앙상블 기법이다.
[가정] : 앙상블의 일부 모델이 다른 모델보다 더 많은 기술을 가지고 있고, 예측을 할 때 더 많은 기여를 한다.
- 모델 예측 값에 고정 가중치가 할당된다.
- 투표 앙상블의 확장 : 모든 모델이 동일하게 학습되고, 앙상블에 의해 만들어진 예측에 비례적 기여를 한다.
- 기여도 결정 = 기능 또는 기술에 비례하여 가중치 부여
- 투표 앙상블에서 모델 예측의 평균 = 가중 평균 앙상블에서의 모델의 기여도에 비례하여 계산
- 모든 모델이 동등하게 효과적이라 투표 앙상블의 한계를 극복했다.
- classification : 각 클래스 레이블에 대한 가중치 합을 계산한다.
- regression : 앙상블 구성원의 예측 산술 평균을 계산한다.
가중 평균 앙상블(weighted average ensemble)과 가중 합계 앙상블(weighted sum ensemble) 모두 voting ensemble의 확장형(extension)이다. 투표 앙상블(voting ensemble)의 경우, 모든 모델이 예측에 있어서 동일하게 영향을 준다고 가정하기 때문에 모델의 기여도에 따라 가중치를 부여하는 가중 펴균 앙상블은 투표 앙상블보다 더 나은 성능이 기대된다.
모델의 상대적 가중치 = train dataset에 대한 ensemble 모델의 성능 사용
- 분류 정확도를 0과 1 사이의 예측 백분율로 사용하고, 값이 클수록 더 나은 모형이므로 예측에 더 많은 기여
- validation 정확도 = 모델 가중치
from sklearn.ensemble import VotingClassifier
from sklearn.linear_model import LinearRegression
from sklearn.neighbors import KNeighborhood
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
lr = LinearRegression()
knn = KNeighborhood()
svc = SVC()
rf = RandomForestClassifier()
estimators = [
('lr', lr),
('knn', knn),
('svc', svc),
('rf', rf)]
## voting ensemble
ensemble_1 = VotingClassifier(estimators = models, voting = 'hard')
## weighted average ensemble
ensemble_2 = VotingClassifier(esitmators=models, voting='soft', weights=scores)
'Machine Learning > Ensemble' 카테고리의 다른 글
Stacking Ensemble (1) | 2022.10.17 |
---|---|
Ensemble Member Selection (1) | 2022.10.17 |