ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • XG Boost 탄생과 모델의 장단점
    머신러닝 배우기 2023. 12. 5. 23:41

    데이터 분석 / 머신러닝 / 딥러닝을 공부해보신 분들은 캐글을 들어보셨을 겁니다. 거기서 딥러닝을 포함한 여러 모델들 중 XG Boost 모델의 성능이 가장 잘 나와서 많이 뜨고 널리 사용되고 있습니다. 오늘은 이런 XG Boost 모델에 대해서 알아보겠습니다.

     

    ▶︎ XG Boost (Extreme Gradient Boosting) 란?

    → 의사결정나무에 부스팅 기법을 적용한 트리 기반의 앙상블 학습 알고리즘

     

    ▶︎ XG Boost 진화 과정

    1) 기반은 의사결정 나무이다. 의사결정 나무가 이해하기 쉽고 해석에 용이하지만, 입력 데이터의 작은 변동에도 트리의 구성이 크게 달라질 수 있고 과적합이 쉽게 발생한다는 한계가 있다. (Decision tree)

     

    2) 그래서 이를 해결하기 위해 Boosting(앙상블 기법 중 하나) 기법이 추가가 되었다. Boosting 기법은 약한 학습기를 결합하여 강한 학습기로 만들어내는 앙상블 모델이라고 이해하면 좋을 것 같다. 약한 학습기들을 순차적으로 학습시켜, 이전 학습기가 만든 오차를 보완하는 방식으로 모델이 개선된다. 각각의 모델들에서 나온 예측값을 혼합하여 하나의 값으로 만들면 안정적이고 과적합을 피할 수 있으며 성능이 좋아진다. 혼합하는 과정은 회귀 문제는 평균/가중평균을 이용하고, 분류 문제는 다수결을 이용한다. (AdaBoost)

     

    3) 하지만 Boosting 하는 도중 중 높은 가중치를 가진 data point가 존재하게 되면 가까운 다른 data point 들이 잘못 분류될 가능성이 높아지면서 모델의 성능이 크게 하락한다. 따라서 어떻게 하면 에러를 최소화하는 방향으로 가중치를 정할 수 있을까? 하다가 전체 모델의 에러가 줄어드는 방향으로 세타(가중치)를 찾는 Gradient descent를 적용하여 에러를 최소화하는 방향으로 가중치를 업데이트할 수 있게 되었다.(Gradient Boosting)

     

    4) 하지만 모델의 학습 시간이 오래 걸려서 병렬처리 기법을 적용하게 되었다. (XG Boost)

     

    ▶︎ XG Boost 특징

    자동 가지치기로 트리의 깊이를 조절하여 과적합을 방지하고 모델의 일반화 성능을 향상시킵니다.

     자체 내장된 교차 검증 기능을 제공하며, 조기 종료(early stopping)를 통해 과적합을 방지할 수 있습니다.

    회귀, 이진 분류, 다중 클래스 분류, 랭킹 등 다양한 문제에 대해 다양한 손실 함수를 지원합니다.(때문에 정형 데이터에서 label의 타입과 상관없이 많이 쓰입니다)

    병렬 처리로 다중 코어 및 분산 컴퓨팅을 지원하여 대규모 데이터셋에 대한 효율적인 학습을 가능하게 합니다.

    결측치를 처리하는 기능을 내장하고 있어서, 결측치가 있는 데이터셋에서도 효과적으로 작동합니다. "missing"이라는 파라미터를 통해 따로 분기 처리를 하거나 값을 대체하면서 결측치를 처리합니다.

    L1(Lasso) 및 L2(Ridge) 정규화를 통한 모델의 복잡도 조절과 학습 속도를 조절하는 shrinkage(축소) 기능을 지원합니다.

    학습된 모델에서 각 특징의 중요도를 계산할 수 있어서 어떤 특징이 모델 예측에 영향을 주는지 확인할 수 있습니다.

    Grid Search 및 Random Search와 같은 하이퍼파라미터 튜닝을 자동으로 수행하는 기능을 제공합니다.

     

     

    ▶︎ XG Boost 단점

     XGBoost는 트리 기반이기 때문에 일반적으로 높은 계산 리소스가 필요합니다. 큰 규모의 데이터셋이나 많은 특징을 다룰 때 메모리 사용량이 증가하고 학습 및 예측 속도가 느려질 수 있습니다.
     XGBoost는 다양한 하이퍼파라미터를 가지고 있고, 이를 효과적으로 튜닝하기 위해서는 상당한 경험이 필요합니다. 특히, 많은 파라미터를 조절해야 하므로 최적의 조합을 찾는 것이 어려울 수 있습니다.
     기본 설정에서는 과적합을 방지하기 위한 일부 정규화가 있지만, 데이터가 작고 특징이 많은 경우에는 여전히 과적합의 위험이 있습니다.
     XGBoost 모델은 복잡한 앙상블 모델로, 특징의 중요도를 해석하기 어려울 수 있습니다. 특히 트리의 깊이가 깊은 경우, 모델의 해석이 어려워집니다.
     초기에는 주로 이진 분류에 중점을 두고 개발되었으며, 다중 클래스 분류에도 사용할 수 있지만 다중 클래스 분류에 대한 기능이 다른 라이브러리에 비해 조금 미흡할 수 있습니다.
     트리 기반 모델은 초기화에 랜덤성이 있기 때문에 같은 설정에서도 학습 결과가 다를 수 있습니다. (재현성을 보장받지 못함)

Designed by Tistory.