Search

CatBoost

태그
모델링
목차
출처

1. 정의

범주형 변수를 처리하는 데 초점을 맞춰 XGBoost, LightGBM 등 기존 GBM 기반 모델을 개선한 모델이다. 자체적으로 과적합을 해결하기 때문에 hyperparameter tuning 없이도 성능이 좋은 편이다.

2. 기존 GBM 기반 모델의 문제점

Boosting 특성상 과적합 위험이 큼
→ 이전 트리를 고려해 다음 트리를 생성(Prediction Shift)하기에 학습 데이터 의존성이 높아짐(Target Leakage)
Decision Tree 기반 모델 특성상 범주형 변수 인코딩 필요
→ cardinality가 높은 고차원 데이터를 원핫인코딩할 경우 너무 많은 변수가 생성됨

3. CatBoost의 해결방법

Level-wise 방식, Ordered Boosting → 과적합 방지
Ordered Target Encoding(Mean Encoding), Categorical Feauture Combinations → 범주형 변수 처리
Level-wise 방식
XGBoost의 Level-wise 방식을 사용하지만 대칭적(symmetric)으로 Tree를 생성해 과적합을 최소화한다. 이처럼 동일한 레벨의 Tree에서는 동일한 cut-offf를 사용하는 ODT(Obilvious Decision Tree)로 Tree를 생성하기 때문에 메모리 효율 또한 높일 수 있다.
Ordered Boosting
전체 데이터셋을 한 번에 사용하는 기존 GBM 기반 모델들과 달리 전체 데이터셋을 샘플링해 일부 데이터만을 사용해 Boosting을 진행한다. 이 때 데이터셋의 순서를 임의로 섞어야 한다.
1.
x1의 잔차로 모델 학습 → x2의 잔차를 예측
2.
x1, x2의 잔차로 모델 학습 → x3, x4의 잔차를 예측
3.
x1, x2, x3, x4의 잔차로 모델 학습 → x5, x6, x7, x8의 잔차를 예측
4.
1~3 반복
Ordered Target Encoding
cardinality가 낮은 변수 - 기존 방식대로 원핫인코딩
cardinality가 높은 변수 - target class가 동일한 이전 시점의 데이터의 평균으로 인코딩
※ friday를 인코딩할 때는 saturday의 class label을 사용해서는 안됨
Categorical Feauture Combinations
Information Gain이 동일한 범주형 변수를 하나로 묶어 cardinality를 낮춤
country만으로 hair color가 결정됨

4. 장단점

🙂
범주형 변수 처리에 있어 속도 빠름 & 메모리 사용량 적음
XGBoost, LightGBM 대비 tuning에 민감하지 않음
☹️
sparse한 데이터에는 취약함
범주형 변수가 없는 데이터셋에서는 성능 개선 거의 없음 & 속도 느림