본문 바로가기
데이터 사이언스/데이터 사이언스

GBM vs XGB vs LGBM vs CATB

by 끙정 2021. 4. 25.
728x90

안녕하세요, 끙정입니다.

 

오늘은 정형 데이터 모델링에서 최강의 성능을 보이는 전통 강자, 부스팅 모델들에 대해 살펴보려고 합니다. 그러나 부스팅은 종류가 매우 많고, 각 부스팅 알고리즘들이 어떤 차이를 가지고 있는지 알기 어렵습니다. 오늘 각 알고리즘을 비교 분석하면서 어떤 부스팅은 어떤 강점과 단점이 있는지 알아보겠습니다.

 

가정.

본 글에서 다룰 부스팅 종류는 총 3가지입니다. GBM(Gradient Boosting Machine)은 부스팅 가문의 시조입니다. 그러나 현재 널리 활용되고 있는 알고리즘은 아니기에 따로 다루지는 않겠습니다. 그리고 NGB(Natural Gradient Boosting)는 가장 최근에 나온 알고리즘이기는 하지만, 아직 많은 연구가 이루어지지 않고 있습니다. 따라서 우리는 XGB(eXtreme Gradient Boosting), LGBM(LightGBM), CATB(Categorical Boosting Machine)을 다루겠습니다.

 

또한 각 부스팅 알고리즘은 이전 알고리즘을 개선하는 방향으로 나왔습니다. 그렇기 때문에 무엇이 바뀌었는가를 살펴볼 것입니다.

 

 

GBM -> XGB.

GBM은 강력한 알고리즘이었지만 단점이 많았습니다. 그렇기 때문에 XGB는 GBM이 가지고 있지 않은 많은 부분을 개선해서 나왔습니다. 그만큼 XGB는 여전히 많이 쓰이고 있고, 여전히 강력합니다.

 

XGB가 GBM으로부터 개선한 부분은 드라마틱합니다. 

 

1) 병렬 처리 지원: 본래 부스팅은 알고리즘의 특성상 순차적으로 모델을 생성하고 학습합니다. 그래서 GBM은 학습 속도가 매우 느립니다. 그런데 XGB는(그리고 이후의 모든 모델이) 병렬 처리를 지원합니다. 따라서 학습 속도가 매우 빨라졌습니다. 

 

2) 가지치기 방식 변화: 다른 부스팅 알고리즘들은 Leaf-wise (Best-first) 방식, 즉 보통 Information Gain을 기준으로 가지를 뻗쳐나갑니다. Information Gain이 없다면 굳이 가지를 뻗쳐나갈 이유가 없습니다. 그러나 XGB는 반대로 지정된 최대 깊이(max_depth)까지 분할 한 다음, 이득이 없는 가지를 쳐냅니다. 때로는 Information Gain이 없는 가지 밑에도 Information Gain이 있는 가지가 생겨날 수 있다는 가정입니다. (물론 XGB도 하이퍼 파라미터 튜닝으로 Leaf-wise를 선택할 수 있습니다.)

 

 

3) 규제 기능 추가: L1, L2 규제 기능이 추가되었습니다.

4) 결측치 처리 성능 증가: XGB는 자동으로 최상의 결측 값을 학습해서 결측치를 처리합니다.

5) 크로스 밸리데이션: 밸리데이션 기능이 추가되었습니다.

 

그 외에도 많은 부분이 있지만, 이것은 출시 시점의 큰 개선사항입니다. 지금은 거의 모든 알고리즘들이 다른 알고리즘이 가지고 나온 강점을 사용할 수 있게 개선되었습니다.

 

XGB -> LGBM

XGB에서 LGBM으로 넘어오면서 변경된 부분은 앞서 언급한 Leaf-wise 방식을 들고 나왔다는 것입니다. LGBM은 GOSS(Gradient-based One-Side Sampling)을 채택합니다. 부스팅이 오차를 기반으로 해당 데이터를 증폭시켜 샘플링될 확률을 높이고, 그로 인해 오차 부분을 더 잘 학습하도록 설계되어 있다는 것을 잘 아실 겁니다.(wyatt37.tistory.com/1) GOSS방식은 Information Gain이 적은 가지의 데이터를 증폭시켜서 데이터 분포를 많이 바꾸지 않더라도 훈련이 잘 되지 않은 부분에 초점을 잘 맞출 수 있게 하였습니다.

 

이러한 방식은 학습 속도를 더 많이 개선하고, 성능 또한 높일 수 있었습니다. 다만 데이터가 적을 경우 과대 적합될 가능성이 있기 때문에 데이터가 많아야 합니다.

 

 

LGBM -> CATB

CATB는 이름부터 Categorical Boosting Machine인 것처럼 범주형 변수를 잘 처리하기 위한 모델이라는 것을 알 수 있습니다. 트리 기반 모델들은 범주형 변수를 정수로 인코딩해서 학습시키면 연속형 변수라고 인식하기 때문에 인코딩 방식이 매우 중요합니다. CATB는 범주형 변수에 대한 인코딩 방식으로 원핫인코딩(One-hot Encoding)과 Advanced Mean Encoding을 사용합니다. 범주형 변수가 많지 않은 경우에는 원핫인코딩을 사용하지만, 범주형 변수가 많은 경우에는 Advanced Mean Encoding을 사용합니다. 그러나 이러한 인코딩은 모델의 학습 속도를 늦추는 단점이 있습니다.

 

또한 CATB는 샘플링 방식에서 MVS(Minimum Variance Sampling) 방식을 가지고 나왔습니다. 최소 분산 샘플링이라고 하는 이 방식은 샘플링 가중치를 분할 단계가 아닌 트리 단계에서 준다고 합니다.

 

 

정리.

그러나 각각의 알고리즘들은 새로운 알고리즘들이 가지고 나온 새로운 방식을 모두 추가하며 개선하고 있습니다. 따라서 각각의 알고리즘은 사실 큰 차이는 없습니다. 오히려 하이퍼 파라미터 튜닝을 얼마나 잘하느냐가 성능을 내는 차이라는 생각이 듭니다.

 

추가적으로 단순히 해당 알고리즘의 내부 구조나 성능 때문에 그 알고리즘이 선택되는 것은 아닐 것입니다. 커뮤니티가 얼마나 잘 조성되어 있는가도 중요하고, 설명 가능성도 매우 중요합니다.

 

아래의 글들을 매우 많이 참고했습니다.

statinknu.tistory.com/33

 

XGBoost, LightGBM, CatBoost 정리 및 비교

 도입 Kaggle을 비롯한 데이터 경진대회 플랫폼에서 항상 상위권을 차지하는 알고리즘 XGBoost, LightGBM, CatBoost에 대해 정리하고 차이점을 비교해보고자 합니다. 세 알고리즘은 모두 Gradient Boosting기

statinknu.tistory.com

m.blog.naver.com/nicolechae0627/221811579005

 

[내가 공부하려고 정리하는 머신러닝] XGBoost vs GBM

내가 공부하려고 정리하는 머신러닝이다. 자료출처가 인터넷이기 때문 부정확할 수 있음 주의! 잘못된 내용...

blog.naver.com

medium.com/riskified-technology/xgboost-lightgbm-or-catboost-which-boosting-algorithm-should-i-use-e7fda7bb36bc#:~:text=Categorical%20features%20handling,and%20an%20advanced%20mean%20encoding.&text=LightGBM%20splits%20categorical%20features%20by,training%20objective%20at%20each%20split.

 

XGBoost, LightGBM or CatBoost — which boosting algorithm should I use?

Gradient boosted trees have become the go-to algorithms when it comes to training on tabular data. Over the past couple of years, we’ve…

medium.com

towardsdatascience.com/catboost-vs-light-gbm-vs-xgboost-5f93620723db

 

CatBoost vs. Light GBM vs. XGBoost

Who is going to win this war of predictions and on what cost? Let’s explore.

towardsdatascience.com

 

728x90

댓글