본문 바로가기
AI/Study

[머신러닝] XGBoost 알고리즘이란?

by 벵자민 2024. 1. 22.
728x90

머신러닝 분야는 끊임없이 발전하고 있으며, 그 중심에 XGBoost가 자리 잡고 있습니다.

오늘은 Kaggle, Dacon 등 AI 대회에서도 빠짐없이 등장하는 XGBoost 알고리즘에 대해 알아보겠습니다.

XGBoost는 eXtreme Gradient Boosting의 약자로, 기존의 결정 트리를 기반으로 한 알고리즘을 한 단계 끌어올린 기계 학습 방법론입니다.

 

 

 

XGBoost의 기본 원리

XGBoost는 결정 트리(Decision Tree)를 기반으로 하는 앙상블 학습 방법 중 하나입니다. 간단히 말해, 여러 개의 결정 트리를 결합하여 각 트리의 예측력을 강화하는 방식으로 작동합니다. 이는 각 트리가 이전 트리의 오차를 보완하며 순차적으로 학습하는 방식으로 진행됩니다.

Decision Tree를 통한 XGBoost 알고리즘의 진화

XGBoost의 장점

  1. 성능: XGBoost는 뛰어난 예측 성능을 자랑합니다. 특히, 구조화된 데이터에서 뛰어난 결과를 보여줍니다.
  2. 속도 및 효율성: 병렬 처리 기능 덕분에 빠른 학습 속도를 자랑합니다.
  3. 유연성: 다양한 사용자 정의 옵션을 제공하며, R, Python 등 여러 프로그래밍 언어를 지원합니다.
  4. 규제(Regularization): 과적합을 방지하기 위한 L1, L2 규제를 포함하여 모델의 정확도를 높입니다.

SKLearn의 Make_Classification 데이터 세트를 사용한 다른 ML 알고리즘과 XGBoost 비교하기

 

XGBoost의 실제 적용 사례

XGBoost는 다양한 분야에서 활용되고 있습니다. 예를 들어, 금융 분야에서는 신용 점수 예측, 의료 분야에서는 질병 진단, 전자상거래에서는 고객 구매 예측 등 다양한 데이터 기반 의사결정에 활용되고 있습니다.

 

머신러닝 분야는 빠르게 발전하고 있으며, XGBoost도 계속해서 발전할 것입니다. 이미 LightGBM, CatBoost와 같은 새로운 알고리즘이 경쟁 중이지만, XGBoost는 여전히 강력한 성능과 넓은 적용 범위를 바탕으로 많은 데이터 과학자들에게 선택받고 있습니다.

 

XGBoost의 작동 원리

XGBoost의 핵심은 '부스팅(boosting)'입니다. 부스팅은 약한 학습기(weak learner)들을 연속적으로 개선해나가는 과정을 말합니다. XGBoost에서는 각 결정 트리가 이전 트리의 오류를 보완하면서 점차 강한 예측 모델을 구축합니다. 이 과정에서 각 트리는 이전 트리의 오차에 더 많은 가중치를 부여하여 학습을 진행하게 됩니다.

XGBoost가 표준 GBM 알고리즘을 최적화하는 방법

 

XGBoost의 주요 파라미터

XGBoost의 성능은 다양한 파라미터에 의해 조절됩니다. 중요한 파라미터로는 학습률(learning rate), 트리의 최대 깊이(max_depth), 자식 노드의 최소 가중치 합(min_child_weight) 등이 있습니다. 이러한 파라미터들을 조정함으로써 과적합을 방지하고 모델의 예측 정확도를 높일 수 있습니다.

https://xgboost.readthedocs.io/en/stable/parameter.html

 

XGBoost Parameters — xgboost 2.0.3 documentation

update: Starts from an existing model and only updates its trees. In each boosting iteration, a tree from the initial model is taken, a specified sequence of updaters is run for that tree, and a modified tree is added to the new model. The new model would

xgboost.readthedocs.io

 

  1. max_depth (최대 깊이): 트리의 최대 깊이를 결정합니다. 깊을수록 모델이 복잡해지지만 과적합의 위험이 있습니다. 일반적인 값 범위는 3에서 10입니다.
  2. eta (학습률, alias: learning_rate): 부스팅 단계에서의 스텝 크기를 조정합니다. 이 값이 낮을수록 모델이 보수적으로 학습하며 과적합을 방지할 수 있습니다. 값 범위는 0에서 1입니다.
  3. gamma (alias: min_split_loss): 트리의 리프 노드를 추가 분할하기 위해 필요한 최소 손실 감소량입니다. gamma 값이 클수록 알고리즘은 더 보수적으로 작동합니다. 값 범위는 0에서 무한대입니다.
  4. min_child_weight: 자식 노드가 필요로 하는 인스턴스 가중치(헤시안)의 최소 합입니다. 이 값을 높이면 알고리즘이 더 보수적으로 되어 과적합을 방지할 수 있습니다. 값 범위는 0에서 무한대입니다.
  5. subsample: 트리를 성장시키기 전에 학습 인스턴스를 무작위로 샘플링하는 비율입니다. 이를 통해 과적합을 방지할 수 있습니다. 값 범위는 0에서 1입니다 (0 제외).
  6. colsample_bytree, colsample_bylevel, colsample_bynode: 각각 트리, 레벨, 노드를 구성할 때 사용되는 컬럼(변수)의 샘플링 비율입니다. 이 값들을 조정하여 모델의 다양성을 증가시킬 수 있습니다. 값 범위는 0에서 1입니다 (1 포함).
  7. lambda (alias: reg_lambda): 가중치에 대한 L2 정규화 항입니다. 이 값을 높이면 모델이 더 보수적으로 됩니다. 값 범위는 0에서 무한대입니다.
  8. alpha (alias: reg_alpha): 가중치에 대한 L1 정규화 항입니다. 이 값 역시 모델을 보수적으로 만듭니다. 값 범위는 0에서 무한대입니다.

 

XGBoost의 실용적 적용

XGBoost는 실제 문제 해결에 있어 매우 유용합니다. 예를 들어, 고객의 행동을 예측하거나, 사기 거래를 탐지하는 데 사용됩니다. 또한, 대규모 데이터셋에서도 빠른 학습 속도와 높은 성능을 제공하기 때문에, 데이터 사이언티스트들 사이에서 거의 항상 사용됩니다.

 

XGBoost는 지속적인 발전과 함께 Machine Learning 분야에서 중요한 위치를 차지하고 있습니다. 앞으로도 이 알고리즘은 데이터 과학과 머신 러닝의 다양한 문제 해결에 핵심적인 역할을 할 것으로 기대됩니다.

 

728x90