들어가기 전...
앙상블(Ensenbles)이란?
: 여러 모델을 이용하여 데이터를 학습하고, 모든 모델의 예측 결과를 평균하여 예측
- 앙상블 기법은 sampling하는 방법이나 최종 의사결정을 내는 방법 등에 따라 3가지 기법이 있음
(1) Boosting
: sequential 하게 모델링 하면서 i-1번째 모델에서 잘 예측하지 못한 sample들이 i번째 모델의 학습데이터로 활용될 수 있게 weight를 조정하는 방식으로 sampling한다. 그리고 새로운 sample이 들어오면 k개의 예측결과를 살펴보고, 각 모델의 중요도(α)의 합이 큰 결과를 최종 예측 결과로 도출한다.
(2) Bagging
: 전체 sample로 모형을 만드는 것이 아니라 k 개의 Bootstrap sample을 통해 k개의 모형을 학습하고, 새로운 sample이 들어왔을 때, k개의 예측결과의 다수결(분류 문제의 경우) 혹은 가중평균(회귀문제의 경우)을 최종 예측결과로 도출(Aggregating)한다.
(3) Stacking
: 전체 데이터로 모형을 k개 만들고, k개의 예측 결과를 입력으로 받는 모델을 추가로 학습한다. 다른 앙상블 알고리즘들에 비해 학습에 필요한 시간이 많은 편이다. (본 챕터에서 stacking은 다루지 않는다.)
Boosting
: 머신러닝 앙상블 기법 중 하나로, 약한 학습기(weak learner)들을 순차적(sequential)으로 여러 개 결합하여 예측 혹은 분류 성능을 높이는 알고리즘
1. 데이터에 모델을 적용한다.
2. 잘못 분류된 레코드들(또는 예측 오차가 큰 레코드들)이 더 높은 확률로 선택되도록 데이터로부터 표본을 추출한다.
3. 새로운 표본에 모델을 적용한다.
4. 이 단계들을 2-3번 반복한다.
-> 기존 학습 데이터에서 random sampling을 하고 1번 weak learner로 학습시킨다. 그 결과로 생긴 에러를 반영해 그다음 데이터 샘플링과 2번 weak learner를 잡고 학습을 반복한다. 이 과정을 N번 하면 iteration N번 돌린 부스팅 모델이 되는 것이다.
- 부스팅 계열 모델 : AdaBoost, GBM(Gradient Boosting Machine), XGBoost, LightGBM, CatBoost 등
1. AdaBoost (Adaptive Boosting)
: 기존 모델이 예측에 실패한 sample이 다음에 다시 학습 될 수 있도록 sample에 weight를 부과하는 방식으로 sampling하는 기법
- 관측치들에 가중치를 더하면서 동작
- 분류하기 어려운 Instances에는 가중치를 더하고 이미 잘 분류된(다루어진) Instances는 가중치를 덜 함
-> 약한 학습기(weak learner)의 오류에 가중치를 더하면서 부스팅을 수행하는 알고리즘
-> 약한 학습기(weak learner)로 의사 결정 트리(Decision Tree)를 사용함
① 첫 번째 약한 학습기가 첫번째 분류기준(D1)으로 + 와 - 를 분류
② 잘못 분류된 데이터에 대해 가중치를 부여(두 번째 그림에서 커진 + 표시)
③ 두번째 약한 학습기가 두 번째 분류기준(D2)으로 +와 -를 다시 분류
④ 잘못 분류된 데이터에 대해 가중치를 부여(세 번째 그림에서 커진 - 표시)
⑤ 세 번째 약한 학습기가 세번째 분류기준(D3)으로 +와 -를 다시 분류해서 오류 데이터를 찾음
⑥ 마지막으로 분류기들을 결합하여 최종 예측 수행(네 번째 그림)
2. GBM (Gradient Boosting Machine) (1997)
: label를 y로 학습하는 것이 아니라 잔차를 label로 설정해서 학습하는 기법
- AdaBoost처럼 앙상블에 이전까지의 오차를 보정하도록 예측기를 순차적(Sequential)으로 추가함
- AdaBoost처럼 매 반복 마다 샘플의 가중치를 조정하는 대신에 이전 예측기가 만든 잔여 오차(Resudial Error)에 새로운 예측기를 학습시킴
-> 가중치 업데이트를 경사하강법(Gradient Descent) 기법을 사용하여 최적화된 결과를 얻는 알고리즘
- 속도가 느리고 과적합 경향이 심하다는 단점
3. XGBoost(Extreme Gradient Boosting) (2014)
- GBM의 단점(과적합, 속도 등)을 보완하기 위해 나온 모델
-> GBM보다 빠른 속도
-> 과적합(Overfitting) 방지를 위한 규제(Regularization)가 있음
- CART(Classification And Regression Tree) 기반으로 분류(Classification)와 회귀(Regression) 모두 가능
- GBM과 마찬가지로 가중치 업데이트를 경사하강법(Gradient Descent) 기법을 사용
- Tree 모형을 기반으로 하기 때문에 복잡한 비선형 문제를 빠른 시간에 풀 수 있고, 특히 해석이 가능하다는 장점
4. LightGBM (2020)
- XGBoost의 가장 큰 단점인 학습시간을 개선시킨 모델
-> XGBoost에 비해 대용량 처리가 가능하며 더 작은 자원(메모리)을 사용하며, GPU 연산 지원
- Tree 기반 알고리즘과는 다르게 동작함
- ex) Tree 기반 알고리즘인 XGBoost의 경우 균형 트리 분할(Level Wise) 방식을 사용했다면, LightGBM은 리프 중심 트리 분할(Leaf Wise) 방식을 사용함
(1) 균형 트리 분할(Level Wise) : 균형을 잡아주어야 하기 때문에 Tree의 깊이(depth)가 줄어들고 연산이 추가되는 것이 단점
(2) 리프 중심 트리 분할(Leaf Wise) : 트리의 균형을 맞추지 않고 최대 손실 값(Max data loss)를 가지는 leaf 노드를 지속적으로 분할하면서 Tree의 깊이(depth)가 깊어지고 비대칭적인 트리가 생성됨
> 최대 손실값을 가지는 leaf node를 반복할수록 균형 트리 분할(Lever wise) 방식보다 예측 오류 손실을 최소화할 수 있음
5. CatBoost (2017)
- GBM의 치명적인 문제점 중 하나인 과적합 문제를 해결하면서, 동시에 기존 GBM 계열 알고리즘인 XGBoost, LightGBM 알고리즘보다 학습 속도를 개선하는 장점을 앞세워 개발됨
(1) LightGBM : 알고리즘 종류 중 DFS(깊이 우선 탐색) 처럼 트리를 우선적으로 깊게 형성하는 방식을 취함
(2) XGBoost : BFS(너비 우선 탐색)처럼 우선적으로 넓게 트리를 형성함
-> XGBoost 와 CatBoost와 차이점이 없는 것처럼 보이지만 자세히 보면 트리가 나누어지는 Feature들이 대칭인지 여부에 따라 차이점이 드러남
(3) CatBoost : Feature를 모두 동일하게 대칭적인 트리 구조를 형성함. 겉으로 보기에 이러한 대칭 트리 형성 구조가 비합리적이라고 보일 수 있지만 이는 예측 시간을 감소시킴으로써 기존 Boosting 계열 알고리즘이 느린 학습 속도라는 측면에서는 CatBoost 만의 장점
References
https://hyunlee103.tistory.com/25
https://sonsnotation.blogspot.com/2020/11/4-boosting.html
https://sevillabk.github.io/Boosting/
https://sonsnotation.blogspot.com/2020/11/data-mining-classification-ensemble.html
https://swalloow.github.io/bagging-boosting/
https://techblog-history-younghunjo1.tistory.com/199
https://dailyheumsi.tistory.com/136