[트리계열 이해하기] 5. XGBoost
2023.07.29 - [DataScience/MachineLearning] - [트리계열 이해하기] 4. GBM
[트리계열 이해하기] 4. GBM
1. 기본 컨셉 Gradient Boosting Machine 은 이름처럼 Boosting 계열의 트리 모델입니다. 2023.07.28 - [DataScience/MachineLearning] - [트리계열 이해하기] 3. AdaBoost [트리계열 이해하기] 3. AdaBoost AdaBoost는 이름에서 알
mkk4726.tistory.com
GBM은 뛰어난 성능을 보이지만 학습 속도가 굉장히 오래 걸린다는 문제가 있습니다.
eXtreme Gradient Boosting, XGBoost는 이러한 GBM의 문제를 해결한 optimized version of GBM이라고 볼 수 있습니다.
XGBoost는 어떻게 성능을 향상시켰는지에 대해 정리해보겠습니다.
1. Approximate Algorithm
이 전까지는 Information Gain이 가장 높은 피처를 찾기 위해 많은 시간 소비해야했고,
그 이유 중 하나는 피처 간에는 병렬처리가 가능하지만,
한 피처에서 최적인 기준을 찾는 과정에서는 병렬처리가 불가능하기 때문입니다.
이를 개선하기 위해 XGBoost에서는 Bucket을 도입했습니다.
전체 데이터셋을 정렬한 후 여러 개의 Bucket으로 나누고 , 그 버켓 안에서의 최적을 구한 후 그 값끼리 비교해 최적의 점을 찾습니다.
버킷끼리 계산을 하기에 이 과정은 병렬처리를 가능하게 해줍니다.
최적 점을 찾은 후의 과정에 따라 "Global(Per Tree)"와" Local(Per Split)"으로 나뉩니다.
글로벌한 방법은 처음 나눈 버킷을 그대로 가져가면서 분할하는 것을 말합니다.
로컬한 방법은 매 분기마다 버킷을 새로 나누는 것을 말합니다.
글로벌한 방법은 버켓의 수가 많아야 로컬과 비슷한 성능을 보입니다. ( $# of bucket = \frac{1}{\epsilon}$ )
2. Column Wise sorting

1번 과정에서 처음에 정렬할 때 많은 시간이 소요되는데, CSC Format으로 정렬하게 되면 data마다 index를 가지고 있어 처음에 정렬을 하면, 그 이후에는 정렬할 필요가 없게 됩니다.
이를 통해 정렬하는 시간을 단축시켰습니다.
3. Cache-aware access
데이터를 처리하는데는 CPU 근처에 있을 수록 빠르고, Hard Disk에 가까울 수록 느려지게 됩니다.
- HDD < SSD < Main Memory < Cache
따라서 XGBoost는 Cache 용량을 조절하며, 최대한 Cache를 이용하도록 해 성능을 향상시켰다고 합니다.
4. Sparsity-Aware Split Finding
XGBoost는 효율적으로 Missing Data(또는 0)를 처리하고 이는 XGBoost가 자주 사용되는 이유 중 하나입니다.
특히 One-hot encoding 시 대부분이 값이 0인 sparse matrix가 생성되게 되는데 이를 잘 처리합니다.
그 원리는 간단합니다.
" 결측치나 0인 값들을 한 쪽으로 몰아놓는 것 " 입니다.
그림 8처럼 왼쪽으로 몰아넣는 것과 오른쪽으로 몰아넣는 것을 비교해 최적인 방향을 찾고,
그 방향대로 데이터를 몰아넣어 분류합니다.
단순한 컨셉이지만, 이를 통해 뛰어난 성능을 보인다고 합니다.
5. Overfitting 방지
앞서 Random Forest에서 한 것처럼, 데이터와 피처를 랜덤하게 뽑아 학습을 진행합니다.
이 과정에서 noise에 강건해지고 오버피팅을 방지할 수 있습니다.
또한 트리의 깊이에 패널티를 부여해 오버피팅을 방지합니다.
정리하자면 XGBoost는 GBM을 최적화한 모델입니다.
Bucket 단위로 IG를 계산해 병렬처리를 계산하도록 했고, 캐쉬를 효율적으로 처리해 연산 속도를 높였습니다.
결측치를 한쪽 방향을 정해 몰아넣어 처리할 수 있습니다.
트리 깊이에 패널티를 부여하고, 데이터와 피처를 랜덤으로 샘플링해 사용해서 오버피팅을 방지합니다.
정형데이터에서는 killer model로써 사용되는, 아주 뛰어난 모델이라고 합니다.
- 출처
그림2 : https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.linkedin.com%2Fpulse%2Fxgboost-classifier-algorithm-machine-learning-kavya-kumar&psig=AOvVaw2S-Wg0xdcWD4zftCrsugeO&ust=1690687679415000&source=images&cd=vfe&opi=89978449&ved=0CBEQjRxqFwoTCJiOrsb8soADFQAAAAAdAAAAABAE
그림3:
- Reference
패스트캠퍼스, 초격차 패키지 : 50개 프로젝트로 완벽하게 끝내는 머신러닝