오늘 공부한 내용은 앙상블!
여러 모델을 결합해 더 나은 성능을 얻는 기법
개별 모델이 가진 약점을 보완해 전체적인 성능을 향상시킨다.
여러 모델의 예측 결과를 합치는 방식이다.
단, 성능 좋은 모델을 합쳐야 좋게 나온다.
bias(편향) : 실제 값과 예측 값의 차이
variance(분산) : 모델의 예측값이 같은 샘플에 대해 얼마나 달라지는지 차이
error = bias + variance + 데이터 내재 오차
bias가 높으면 과소적합, variance가 높으면 과대적합(모델이 복잡해 일반화 x)
일반적으로 단일 모델에서 bias와 variance는 trade-off관계다.
그래서 앙상블로 각 모델의 예측을 결합하면 단점(high bias or variance)을 보완해서 성능을 높인다.
같은 알고리즘을 사용해 여러 모델을 학습시키고 각각의 모델이 서로 다른 학습 데이터를 사용해 예측한다. 그 후 각 모델의 결과를 평균 or voting로 결합해 최종 예측을 만든다.
high bias
를 줄일 수 있다.
분류문제의 voting 방식에선 hard voting과 soft voting이 있다.
hard는 각 모델의 결과물 label로 판단, soft는 각 label의 확률을 보고 결과를 낸다.
Random Forest가 대표적인 bagging.
여러 weak learner를 순차적으로 학습시켜 이전 모델이 틀린 예측을 다음 모델이 더 잘 맞출 수 있도록 weight를 조정하는 방식이다.
high variance
를 줄일 수 있다.
AdaBoost, Gradient Boosting, XGBoost 등이 대표적인 Boosting
k-fold CV를 통해 각 폴드에서 학습을 진행하고 각 폴드별로 예측 결과를 낸 뒤에 voting을 통해서 학습된 모델들의 예측을 취합해 최종 예측을 수행한다.
과적합을 막고 일반화 성능을 높일 수 있다. 다만 시간과 비용이 많이 든다.
그리고 이 방식을 쓰려면 데이터가 충분히 많아야 한다.
서로 다른 모델을 결합해 성능을 향상시키는 방법