앙상블 학습(Ensemble Learning)
앙상블 학습: 여러 개의 개별 모델을 조합하여 최적의 모델로 일반화하는 방법
목적: weak classifier 들을 결합하여 strong classifier 를 만드는 것
대표적인 앙상블 기법: 앙상블 기법에는 보팅(voting), 배깅(bagging), 스태킹(stacking), 부스팅(boosting)이 있습니다.
Voting
Voting 방식은 말 그대로 투표하는 방식이다. Voting은 각각 다른 알고리즘을 이용한 분류기를 결합하는 방식으로 최종 예측 값을 투표하는 방식이다. 투표와 같이 가장 많은 투표를 받는 후보자를 선택하는 방식이라고 생각하면 된다. 크게 하드 보팅과 소프트 보팅으로 나뉘는데, 아래 사진이 이를 표현한 것이다.
Bagging
Bagging은 bootstrap aggregation의 줄임말로, 샘플을 여러번 뽑아서(bootstrap) 각 모델을 학습시킨 다음 결과물을 집계(aggregation) 하는 방법이다.
Orginal Data에서 복원 랜덤 추출한 데이터들로 모델을 학습시킨다. 또한 모두 서로 같은 분류기를 사용한다는 특징이 있다. 데이터셋의 종류에 따라 집계하는 방식이 조금씩 다른데, Categorical Data는 투표방식 voting으로 집계하고 Continuous Data는 평균으로 집계한다.
Categorical Data 일 때, 투표 방식으로 집계한다는 것의 의미는 전체 모델에서 예측한 값 중 가장 많은 값을 최종 예측값으로 선정한다는 뜻이다.
예를 들어, 8개의 결정 트리 모델. 4개는 A로 예측, 2개는 B로 예측, 1개는 C로 예측했다면, 결과적으로 4표로 제일 많은 예측을 받은 A를 최종 결과로 예측하는 방식이다.
Continuous Data 일 때, 평균으로 집계한다는 것의 의미는 각각의 결정 트리 모델이 예측한 값에 평균을 취해 최종 Bagging Model의 예측값을 결정한다는 뜻이다.
이는 학습데이터가 충분하지 않더라도 충분한 학습효과를 낼 수 있으며, 높은 bias의 underfitting 문제나 높은 variance의 overfitting 문제에 도움이 된다.
Voting vs Bagging
이 둘의 차이점에 대해서 조금 더 다루자면, Voting은 분류기를 다른것들을 함께 사용하여 약한 분류기를 강하게 만드는 방식이며, Bagging은 다 같은 분류기를 여러개 사용하여 더욱 강화시킨다는 점이다.
[정리]
Voting - 여러 분류기 사용
Bagging - 하나의 분류기 사용
Stacking
Stacking은 CV(cross validation)기반으로 개별 모델이 예측한 데이터를 다시 meta dataset 으로 사용하여 최종 모델 Meta Learner 에서 학습하는 방식이다.
CV(cross validation)는 교차검증으로, training folds 와 validation fold로 나누게 되는데 이 과정을 k 번 반복한다. 이를 k-fold CV라고 한다. 다음 그림과 같이 k번까지 반복해가면서 train set 과 test set를 나누어 사용한다. 이는 주로 크기가 큰 데이터에서 사용하면 유용하다. 데이터가 많을 경우, Base Learner (model stack) 에서 동일한 데이터 원본을 가지고 학습하게 되면 overfitting의 문제가 발생할 수 있다. 그러므로 이처럼 데이터셋을 k 번 나누어 train set 과 test set 에 활용하는 것이다.
Boosting
Boosting은 머신러닝 앙상블 기법 중 하나로 약한 학습기(weak learner)들을 순차적으로 여러 개 결합하여 예측 혹은 분류 성능을 높이는 알고리즘이다.
대표적인 알고리즘에는 Adaptive Boosting, Gradient Boosting, XG Boosting이 있다. 아래는 각 알고리즘을 간단하게 정리한 것이다.
Adaptive Boosting(AdaBoost) - Freund and Schapire, 1997
- 약한 학습기(weak learner)의 오류에 가중치를 더하면서 부스팅 수행하는 알고리즘이다.
- 약한 학습기(weak learner)로 의사 결정 트리(Decision Tree)를 사용한다.
- 분류하기 어려운 Instances에는 가중치를 더하고 / 이미 잘 분류되어진(다루어진) Instances는 가중치를 덜 합니다.
Gradient Boosting : GBM(Gradient Boosting Machine) - Friedman, 2000
- AdaBoost처럼 매 반복 마다 샘플의 가중치를 조정
- 매 반복마다 가중치 조정하여 이전 예측기가 만든 잔여 오차(Resudial Error)에 새로운 예측기를 학습한다.
- 가중치 업데이트를 경사하강법(Gradient Descent) 기법을 사용하여 최적화된 결과를 얻는 알고리즘이다.
- 해당 방식은 과적합, 속도 문제가 존재한다.
- GBM의 단점을 보완하기 위한 모델이다.
- GBM과 마찬가지로 가중치 업데이트를 경사하강법(Gradient Descent) 기법을 사용한다.
- 과적합(Overfitting) 방지를 위한 규제(Regularization) 존재한다.
- CART(Classification And Regression Tree) 기반이다. 즉, 분류(Classification)와 회귀(Regression) 둘 다 가능하다.
모든 알고리즘을 구체적으로 다루면 Boosting 내용을 자세히 다루면 너무 길어져서, 필요하면 다음에 한번더 포스팅할게요:) 주 출처는 아래 첨부하였습니다.