Boosting

민성철·2022년 8월 21일
0

실제로 캐글에서는 XGboost라는 라이브러리를 사용한 대회 참여나 다양한 시도들이 이루어지고 있습니다. 자매품으로는 Catboost나 조금 더 가벼운 앙상블 모델인 LightGBM이 있습니다.
Kaggle의 마음에 드는 대회에 들어가, XGboost 혹은 Catboost, LightGBM에 해당하는 코드를 살펴보세요.
또한, XGBoost, LightGBM, CatBoost을 비교해 각각 어떤 장단점을 지니고 있는지 서술하세요.

  • XGBoost
    -- 비정형 데이터에서는 NN(Nerual Network)가 좋지만, 정형 데이터에서는 좋은 성능을 보이고 있습니다.
    -- 기존 GBM(Gredient Boost Model)은 sequential 하게 학습하지만, XGBoost는 Parallelization(병렬 처리)하게 학습합니다.
    -- 분류와 회귀영역에서 뛰어난 예측 성능 발휘, 즉, CART(Classification and regression tree) 앙상블 모델을 사용합니다.
    -- gradient 통계 값을 저장하기 위해 캐시 메모리의 기억 저장소를 이용하여 internal buffer에 각 스레드를 할당하여, out-of-core컴퓨팅과 같은 향상된 기능은 메모리에 맞지 않는 빅데이터 프레임도 처리하면서 Disk 공간을 최적화합니다.(출처 : https://statinknu.tistory.com/33)

  • LightGBM
    -- GPU 학습을 지원합니다.
    -- 데이터가 많다면 강력하고 효율성을 보장할 수 있지만 데이터셋이 많지 않을 경우 과적합이 발생하기 상대적으로 쉽다는 단점이 있습니다.(data 기준은 약 10000건으로 보고 있습니다.)
    -- feature와 data set의 크기가 커질수록 계산이 복잡해지며, 이를 보완하고자 GOSS(Gradient-based One-Side Sampling) 및 EFB(Exclusive Feature Bundling)를 사용하여 데이터 및 기능을 다운 샘플링하여 히스토그램 작성( O(data * feature) )의 복잡성을 줄이는 것을 목표로 합니다.
    (요약하자면 학습 속도가 빠른 모델입니다.)
    (출처 : https://towardsdatascience.com/what-makes-lightgbm-lightning-fast-a27cf0d9785e#:~:text=What%20is%20GOSS%3F,large%20gradients%20are%20under%20trained.)

  • CatBoost
    -- 학습할때는 다른 모델보다는 오래걸리지만, 예측할때는 빠릅니다.(약 13-16배 정도 더 빠르다.)
    -- categorycal 한 data에 활용하기 좋으나, 반대로 numerical 한 data에서는 상대적으로 안 좋습니다.
    -- Target leakage, Predcition Shift로 인한 overfitting에 대한 해결 방법으로 ordering principle을 제안합니다.
    -- 타 모델에 비해 default parameters값으로 더 나은 성능을 냅니다
    (hyper-parmeter tuning을 하지 않더라도 기본적인 세팅으로도 좋은 결과를 얻을 수 있어 활용성이 뛰어납니다.)
    (출처 : https://databuzz-team.github.io/2018/10/24/Catboost/)
profile
ENTJ-A

0개의 댓글