들어가기 전...
앙상블(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
[머신러닝] Boosting Algorithm
처음 머신러닝을 공부할 때, 가장 어려웠던 부스팅 계열 알고리즘, 보아즈에서 발표를 하게 되면서 다시 한번 내용을 정리해두려고 한다. 학부생의 철없는 질문을 받아주신 건국대학교 권성훈
hyunlee103.tistory.com
부스팅 알고리즘 (Boosting Algorithm)
부스팅(Boosting) 부스팅은 머신러닝 앙상블 기법 중 하나로 약한 학습기(weak learner)들을 순차적으로 여러개 결합하여 예측 혹은 분류 성능을 높이는 알고리즘이다.
velog.io
https://sonsnotation.blogspot.com/2020/11/4-boosting.html
[머신러닝/딥러닝] 4. Boosting
sonsnotation.blogspot.com
https://sevillabk.github.io/Boosting/
[사이킷런] 부스팅 알고리즘(AdaBoost & GBM)
부스팅 알고리즘의 개념과 그 종류 중 하나인 AdaBoost, GBM 소개
SevillaBK.github.io
https://sonsnotation.blogspot.com/2020/11/data-mining-classification-ensemble.html
[Data Mining] 11. Classification - Ensemble
sonsnotation.blogspot.com
https://swalloow.github.io/bagging-boosting/
Bagging과 Boosting 그리고 Stacking
오늘은 머신러닝 성능을 최대로 끌어올릴 수 있는 앙상블 기법에 대해 정리해보았습니다. Ensemble, Hybrid Method 앙상블 기법은 동일한 학습 알고리즘을 사용해서 여러 모델을 학습하는 개념입니다.
swalloow.github.io
https://techblog-history-younghunjo1.tistory.com/199
[ML] Unbiased boosting : CatBoost
이번 포스팅에서는 Boosting 계열의 알고리즘 중에서 GBM(Gradient Boosting Machines) 알고리즘에 기반하여 만들어진 CatBoost 알고리즘에 대해 알아보려고 한다. CatBoost는 2017년 논문에서 소개되었으며 현재
techblog-history-younghunjo1.tistory.com
https://dailyheumsi.tistory.com/136
Catboost 주요 개념과 특징 이해하기
비교적 가장 최근에 등장한 Catboost 에 대해 관심이 생기던 찰나, 최근에 Medium Article 로 Catboost 를 잘 정리해놓은 글이 있어, 이를 참고하여 Catboost 에 관한 내용들을 정리해본다. (참고가 아니라 사
dailyheumsi.tistory.com