# 오늘 코드 - 조은 강사님과 함께하는 수업💖
# 9주차 동안 진행한 3일의 수업 중 더 공부해보고싶거나 복습해보고 싶었던 내용 정리입니다.
Boosting
- Boosting 이란?
- 머신러닝 앙상블 기법 중 하나로 약한 학습기(weak learner)들을 순차적으로 여러개 결합하여 예측 혹은 분류 성능을 높이는 알고리즘
- 여러 개의 알고리즘이 순차적으로 학습-예측을 하면서 이전에 학습한 알고리즘의 예측이 틀린 데이터를 올바르게 예측할 수 있도록, 다음 알고리즘에, 가중치를 부여하여 학습과 예측을 진행하는 방식
- 앙상블(Ensemble) 아이디어에서 Sequential이 추가된 형태
- Boosting Algorithm 종류
- AdaBoost
- GBM(Gradient Boosting Machine)
- XGBoost
- LightGBM
- CatBoost
◆ XGBoost
- XGBoost 란?
GBM은 residaul을 줄이는 방향으로 weak learner를 결합해 강력한 성능을 자랑하지만, 해당 train data에 residual을 계속 줄이니까 overfitting 되기 쉽다는 문제점이 있음
=> 이를 해결하기 위해 XGBoost는 GBM에 regularization term을 추가한 알고리즘
- Regularization term
![]() |
# T는 우리가 weak learner로 쓰는 tree의 최종 node의 개수
# w는 최종 node의 score인데 loss function에 의해 학습되는 값
# Regularization term은 tree 복잡도가 증가할수록 loss에 페널티를 주는 방식으로 overfitting을 막고 있음
- 특징
1) 다양한 loss function을 지원해 task에 따른 유연한 튜닝이 가능
2) GBM보다 빠름
3) CART(Classification And Regresstion Tree)를 기반으로 함 (= 분류와 회귀 모두 가능)
4) 조기 종료(early stopping)을 제공한다
(성능이 더이상 좋아지지 않을때 시간낭비를 하지 않고 최고의 모델을 뽑기 위함)
5) Gradient Boost을 기반으로함
◆ LightGBM
- LightGBM의 특징
- leaf wise tree 분할 방식 사용
기존의 tree기반 알고리즘은 level wise(균형 트리 분할) 방식을 사용했음
이는 tree의 깊이가 최소화될 수 있지만, 연산이 추가되고 시간이 오래걸림
💡 leaf wise tree분할 방식
tree의 균형을 고려하지 않고 최대 손실 값(max data loss)를 가지는 leaf node를 지속적으로 분할하면서
tree의 깊이가 깊어지고 비대칭적인 tree가 생성
=> 최대 손실값을 가지는 leaf node를 반복 분할하는 방식은
level wise tree분할 방식보다 예측 오류 손실을 최소화 - 높은 cost 문제 해결
부스팅 계열의 대부분 computational cost는 각 단계에서 weak learner인 best tree를 찾는데 쓰임
즉, 백만 개의 데이터를 XGBoost로 iteration=1000을 학습시킨 경우, 각 단계에서 tree를 fitting 시키기위해 백만개 데이터를 전부 scan해야 함 => computational cost가 많이 들고 시간이 오래 걸림- 💡 histogram-based/GOSS/EFB 등의 알고리즘을 통해 tree를 구축하기 위한 scan 데이터 양을 줄임
- 🔎 GOSS: 데이터셋의 샘플 (instance) 수를 줄이는 알고리즘
기본가정은 instance의 gradient가 클수록 영향력이 크고 덜 학습된 instance라는 것
=> 이러한 instance를 포함하면서 데이터셋의 샘플 수를 줄이려고 시도 - 🔎 EFB: 데이터셋의 Feature 수를 줄이는 알고리즘
고차원의 데이터는 sparse하다는 가정 하에,
상호배타적인 변수들을 하나의 bucket으로 묶어서 Feature 수를 줄이는 방식
( 여기서, 상호배타적인 변수들은 동시에 0이 아닌 값을 갖지 않는 변수들을 말함 )
- 🔎 GOSS: 데이터셋의 샘플 (instance) 수를 줄이는 알고리즘
- 💡 histogram-based/GOSS/EFB 등의 알고리즘을 통해 tree를 구축하기 위한 scan 데이터 양을 줄임
- Categorical feature들의 자동 변환과 최적 분할
- GPU 학습 지원
- leaf wise tree 분할 방식 사용
◆ 참고 및 출처
부스팅 알고리즘 (Boosting Algorithm)
부스팅(Boosting) 부스팅은 머신러닝 앙상블 기법 중 하나로 약한 학습기(weak learner)들을 순차적으로 여러개 결합하여 예측 혹은 분류 성능을 높이는 알고리즘이다.
velog.io
https://lsjsj92.tistory.com/547
머신러닝 앙상블(ensemble) xgboost란? - Python 예제와 함께 살펴보기
머신러닝에서는 앙상블(ensemble) 모델을 빼놓을 수가 없습니다. 이 앙상블에는 배깅(bagging)과 부스팅(boosting) 그리고 보팅(voting) 방법이 있습니다. 크게 보면 말이죠 이 중 ensemble bagging에 대해서는
lsjsj92.tistory.com
https://mac-user-guide.tistory.com/79
[Machine Learning] LightGBM이란? ✔ 설명 및 장단점
📌 Remind LightGBM에 들어가기전에 복습 겸 reminding을 해보자. Light GBM의 GBM은 Gradient Boosting Model로, tree를 기반으로 하는 학습 알고리즘이다. 이 GBM의 학습방식을 쉽게말하면, 틀린부분에 가중치를
mac-user-guide.tistory.com
https://kicarussays.tistory.com/38
[논문리뷰/설명] LightGBM: A Highly efficient Gradient Boosting Decision Tree
LightGBM은 예전에 한 프로젝트에서 정형 데이터 (Table 형태의 데이터) 에 여러 머신러닝 기법들을 적용해보던 중에 발견한 방법이었습니다. CPU만 사용하면서도 GPU를 쓰는 XGBoost보다 훨씬 더 빠르
kicarussays.tistory.com
https://hyunlee103.tistory.com/25
[머신러닝] Boosting Algorithm
처음 머신러닝을 공부할 때, 가장 어려웠던 부스팅 계열 알고리즘, 보아즈에서 발표를 하게 되면서 다시 한번 내용을 정리해두려고 한다. 학부생의 철없는 질문을 받아주신 건국대학교 권성훈
hyunlee103.tistory.com
'2022년 > [멋쟁이 사자처럼] AI 회고' 카테고리의 다른 글
[12주차] 추가공부 (1) | 2022.12.08 |
---|---|
[10주차] 추가공부 (1) | 2022.11.24 |
[8주차] 추가공부 (0) | 2022.11.10 |
[7주차] 추가공부 (0) | 2022.11.03 |
[2주차] 추가 공부 (1) | 2022.09.29 |