AI Study/머신러닝(ML)

주니어 PM 혼자 AI 기초 공부: 머신러닝 - XGBoost

Brownee 2025. 12. 19. 12:03
반응형

📌 주니어 PM 혼자 AI 기초 공부: 머신러닝 - XGBoost


정형 데이터 예측의 최강자

XGBoost는 eXtreme Gradient Boosting의 약자로, 정형 데이터 예측에서 강력한 성능을 발휘하는 머신러닝 라이브러리입니다.

 

XGBoost는 의사결정 나무(decisoin tree)를 기반으로 한 앙상블 학습 방법으로, 예측의 정확도와 속도, 안정성 면에서 뛰어납니다. 이미지나 음성이 아닌 고객 데이터/거래 데이터/로그 데이터 등의 tabular 데이터 처리에 탁월하고, 실무에서는 분류, 회귀 등의 예측 모델링에 필수적입니다. 특히 빠르게 성과를 내야 하고, 결과에 대한 설명이 필요한 비즈니스에 적합합니다.

 

XGBoost 는 Kaggle 대회에서 우승팀의 60% 이상이 사용한 모델이기도 합니다.

 

Kaggle 대회

Kaggle 이란, 전 세계 데이터 과학자와 머신러닝 엔지니어들이 모여 경쟁하고 협력하는 세계 최대의 데이터 과학 플랫폼입니다. 2010년에 설립되었고, 2017년 Google이 인수했습니다.
Kaggle 대회는 기업이나 연구기관이 실제 문제와 데이터를 제공하면, 전 세계 참가자들이 최고의 모델을 개발하여 경쟁하는 머신러닝 경진대회입니다.


핵심 개념  

  • 그래디언트 부스팅(Gradient Boosting)
    • 약한 예측 모델(Weak Learner; 의사결정 나무)을 순차적으로 결합하여 이전 모델의 오류를 보정하는 방식으로 강한 예측 모델(Strong Learner)을 만듭니다.
    • 첫 번째 트리가 예측에 실패한 오차(Residual)를 두 번째 트리가 집중적으로 학습하고, 다시 그 오차를 세 번째 트리가 학습하는 과정을 반복합니다.
    • 모델의 예측 정확도를 점진적으로 높여줍니다.
  • 정규화(Regularization)
    • 모델이 복잡하면 과적합 현상이 일어납니다.
    • 이를 방지하기 위해, XGBoost는 목적함수(Objective Function) 자체에 정규화 항을 포함하고 있습니다(예: L1/L2 정규화).
    • 또한 트리의 노드 갯수나 가중치의 크기를 제한하는 식으로, 모델의 복잡도에 패널티를 부여합니다(예: Gamma 파라미터 활용).
    • 이렇게 일반화 성능을 높여서, 대규모 데이터에서 안정적인 예측을 가능하게 합니다.
    • 새로운 유저 데이터에 대해서도 잘 작동합니다.
  • 희소성 인식(Sparsity Awareness)
    • 실무에서 흔한 '결측치(Missing Values)나 0이 많은 희소 데이터'를 효율적으로 처리합니다.
    • 결측 데이터가 들어왔을 때, 이를 처리할 기본 방향을 학습 과정에서 스스로 결정합니다.
    • 엔지니어의 데이터 클리닝 비용을 줄이고, 결측치가 포함된 실제 서비스 로그 데이터를 안정적으로 처리할 수 있습니다.
    • 데이터 품질이 낮은 초기 단계에서도 모델 도입이 가능합니다.
  • 근사 알고리즘
    • 전통적인 그래디언트 부스팅 방식은 1차 미분값인 그래디언트만을 사용하여 손실 함수를 최적화합니다.
    • 반면, XGBoost는 2차 미분값인 헤시안(Hessian) 정보까지 활용합니다. 이를 2차 테일러 근사(Second-order Taylor Approximation)라 합니다.
    • 손실 함수의 곡률(Curvature)을 고려해서 최적의 예측값을 더 빠르고 정확하게 찾아내도록 합니다.
    • 빠른 수렴 속도를 통해 하드웨어 비용을 절감시킵니다.
  • 시스템 최적화와 병렬 처리
    • 부스팅 방식은 순차적 학습 구조를 가지므로 병렬화가 어렵다고 알려져 있습니다.
    • 반면, XGBoost는 트리를 구성할 때 노드 분할(Node Splitting)을 위한 데이터를 미리 정렬하여 '블록(Block)' 단위로 저장하고 이를 병렬로 처리합니다.
    • 또한 CPU 캐시 메모리 구조를 고려한 알고리즘 설계를 통해 메모리 읽기와 쓰기 속도를 획기적으로 개선하였습니다.
    • 기존 대비 수십 배 빠른 학습 속도를 달성했습니다.

 

목적함수

머신러닝과 최적화 문제에서 최대화하거나 최소화하려는 목표를 수식으로 표현한 것입니다. 쉽게 말해, '우리가 달성하고 싶은 목표를 숫자로 나타낸 함수' 입니다.

 

정규화

모델이 훈련 데이터에 과도하게 맞춰지는 과적합을 방지하기 위해 모델의 복잡도에 패널티를 부과하는 기법입니다. 모델의 일반화 성능을 높이고, 단순하게 만듭니다.

주요 기법으로는 - L1: 특성 선택 (일부 가중치 → 0), L2: 가중치 감소 (모든 가중치 ↓), Dropout: 뉴런 무작위 제거, Early Stopping: 적절한 시점에 중단 - 등이 있습니다.

 

결측치

데이터셋에서 값이 없거나 기록되지 않은 데이터를 의미합니다. 데이터가 수집(응답)되지 않았거나, 데이터 통합 과정에서 매칭이 안 되는 경우, 개인정보 보호 때문에 민감한 정보가 삭제된 경우, 데이터가 존재하지 않는 경우에 발생합니다.

 

2차 테일러 근사(Second-Order Taylor Approximation)

복잡한 함수를 간단한 2차 함수(포물선)으로 바꿔서 표현하는 방법입니다. 마치 복잡한 산길 지도를 부드러운 곡선 지도로 비슷하게 만드는 것과 같습니다. 직선의 기울기를 활용하는 1차 근사보다 더 정확하고, 빠르게 최적화할 수 있습니다.

 

헤시안

2차 미분(곡률 정보)를 모아놓은 행렬입니다. 함수가 각 방향으로 얼마나 휘어져 있는지를 나타내는 표입니다.
그래디언트는 경사(1차 정보), 헤시안은 곡률(2차 정보)입니다.

 


다이어그램

XGBoost 의 실행.

이미지 출처: geeksforgeeks.org

https://www.geeksforgeeks.org/machine-learning/implementation-of-xgboost-extreme-gradient-boosting/

 

등장 배경  

기존 그래디언트 부스팅 머신(GBM)은 '너무 느린 학습 속도, 과적합 방지의 어려움, 까다로운 데이터 전처리' 라는 한계가 있었습니다. GBM은 정확하지만 자원 소모가 커서 실무에 적용하기 어려웠습니다. XGBoost는 이를 극복하기 위해 2016년 Tianqi Chen에 의해 개발되었습니다.

XGBoost는 컴퓨팅 자원의 한계를 극복하고 수학적 정밀도를 달성하여 문제를 해결했습니다. 2025년 현재는 단순한 성능 개선을 넘어 v3.1 시대로 접어들며 다음과 같은 목적을 달성하고 있습니다.

  • 범주형 데이터의 완전한 내재화
    • 이전에는 주소나 직업 등의 범주형 데이터를 처리하려면 따로 인코딩 작업을 해야 했지만, v3.1 업데이트에서는 모델 내부에서 이것을 직접 처리하는 'Categorical Re-coder'가 정식으로 지원되어서 전처리 시간이 획기적으로 줄었습니다.
  • 테라바이트급 데이터 대응 
    • GPU와 하이브리드 저장장치를 활용하는 외부 메모리 학습(External Memory Support) 기능이 완성되어서, 단일 서버 사양을 넘는 거대한 비즈니스 데이터도 학습이 가능해졌습니다.


활용 사례  

XGBoost는 금융, 마케팅, 의료 등 tabular 데이터가 많은 사업 분야에서 효과적입니다. 예측이 빠르고 정확하기 때문에 실시간 의사 결정에 적합합니다.

  • 금융
    • 신용카드 사기 탐지, 대출 부도 확률 예측
    • 보험사 Allstate 에서 클레임 예측에 사용, 희소 데이터 처리로 속도 50배 향상.  
  • 마케팅 
    • 고객 이탈 관리, 광고 클릭률 최적화.
    • Criteo에서 17억 예제 데이터로 클릭률을 예측하고, out-of-core 컴퓨팅으로 대규모 처리를 진행.  
  • 보안 
    • CrowdStrike에서 악성 파일 예측 모델에 사용하여, 모델 안정성을 향상시킴.
  • 리테일/물류
    • 수요 예측, 재고 최적화
    • 월마트는 수만 개 상품의 향후 판매량을 예측하는 데 XGBoost 활용.


Key Words

  • Objective (목적 함수): 모델이 최소화해야 할 오차 측정값. 비즈니스 성격에 따라 '분류(Logistic)'인지 '회귀(Square Error)'인지 결정.
  • Eta (Learning Rate, 학습률): 각 트리(tree)의 의견을 얼마나 반영할지 결정하는 비율(기본값 0.3). 낮을수록 더 신중하고 정교하게 학습하지만 시간이 오래 걸림.
  • Max Depth (최대 깊이): 트리가 얼마나 깊게 뻗어나갈지 정하는 값. 깊을수록 복잡한 문제를 풀지만 과적합 위험이 커짐. 
  • Gamma (감마): 노드를 추가로 분할하기 위해 필요한 최소한의 이득 값. 이 값이 높을수록 모델이 보수적으로 변함.  
  • Alpha & Lambda: 정규화 파라미터. L1(Lasso)과 L2(Ridge) 정규화를 의미하며, 가중치를 억제하여 모델의 일반화 성능을 높임.  
  • Subsample & Colsample_bytree: 전체 데이터 중 일부만 샘플링하여 학습하는 기법. 모델이 특정 데이터나 피처에 편향되는 것을 방지.  
  • DMatrix: XGBoost만의 최적화된 내부 데이터 포맷. 메모리 효율을 극대화하여 학습 속도를 수배 높임.  
  • Feature Importance (피처 중요도): 어떤 변수가 예측에 가장 큰 영향을 주었는지 나타내는 점수. '왜 이 결과가 나왔나?'라는 비즈니스 질문에 답할 때 핵심 도구.
  • Scale_pos_weight: 사기 탐지처럼 정답 데이터가 한쪽으로 쏠려 있을 때, 소수 데이터를 더 중요하게 취급하도록 균형을 맞추는 파라미터.
  • Early Stopping (조기 종료): 더 이상 성능이 좋아지지 않으면 학습을 중단하는 기능. 자원 낭비를 줄이고 최적의 학습 시점을 결정.

 

XGBoost의 한계  

  • 블랙박스 문제와 설명 가능성(Explainability)
    • XGBoost는 수천 개의 트리가 얽혀 있어 '왜 그런 결과가 나왔는지'를 인간이 직관적으로 이해하기가 어렵습니다.
    • 예를 들면 대출을 거절하는 이유를 설명해야 하는 은행의 PM은 곤란할 수 있습니다.
    • 극복: SHAP(SHapley Additive exPlanations) 기법 - 게임 이론을 적용해서 각 피처가 결과에 미친 영향을 수치화함으로써, 모델의 예측을 해석 가능한 영역으로 끌어올리고 있습니다.
  • 경쟁 모델의 등장: LightGBM 및 CatBoost 
    • XGBosst는 데이터가 수백만 건을 넘어설 때 메모리 부족이나 속도 저하 문제를 겪습니다.
    • 극복: LightGBM (마이크로소프트) - 트리를 가로가 아닌 세로로 키우는(Leaf-wise) 전략을 통해 XGBoost보다 훨씬 빠른 속도와 적은 메모리 사용량을 실현했다.
    • 극복: CatBoost (얀덱스) - 2024-2025년 벤치마크에 따르면, 추론 속도 면에서 XGBoost보다 최대 40배 이상 빠르고 범주형 데이터 처리 능력이 뛰어나서, 실시간 시스템에서 강력한 경쟁자로 부상했습니다.
  • 비정형 데이터 처리의 한계 
    • 이미지, 음성, 자연어와 같은 비정형 데이터에서는 XGBoost가 딥러닝(CNN, Transformer)의 상대가 안됩니다.
    • 최신 연구: XGNN과 같이 그래프 신경망(GNN)과 XGBoost를 결합하여 데이터 간의 관계 정보와 트리 모델의 정확도를 동시에 잡으려는 하이브리드 연구가 진행중입니다.


퀴즈  

  • Q1) XGBoost가 과적합(Overfitting)을 방지하기 위해 사용하는 두 가지 주요 기술적 장치는 무엇인가요?
  • Q2) 결측치가 많은 현실 데이터를 전처리 없이 XGBoost에 넣어도 모델이 안정적으로 돌아가는 이유는 무엇인가요?
  • Q3) XGBoost v3.1에서 도입되어 엔지니어의 범주형 데이터 처리 시간을 획기적으로 줄여준 기능은 무엇인가요?
  •  
  • A1) 정규화(L1, L2) 항을 목적 함수에 포함하고, 트리의 잎(leaf) 노드 가중치에 패널티를 주는 감마(Gamma) 파라미터 활용이 있습니다.
  • A2) '희소성 인식' 알고리즘이 결측 데이터를 어느 방향으로 보낼지, 학습 단계에서 최적의 방향을 스스로 정하기 때문입니다.   
  • A3) 모델 내부에서 범주형 데이터를 직접 처리하고 추론 단계에서도 일관성을 유지해주는 'Categorical Re-coder' 기능입니다.  

 

References

- https://medium.com/low-code-for-advanced-data-science/xgboost-explained-a-beginners-guide-095464ad418f 
https://www.geeksforgeeks.org/machine-learning/xgboost/ 
https://www.analyticsvidhya.com/blog/2018/09/an-end-to-end-guide-to-understand-the-math-behind-xgboost/ 
https://xgboost.readthedocs.io/en/stable/tutorials/model.html 
https://arxiv.org/pdf/1603.02754.pdf 
https://towardsdatascience.com/xgboost-the-definitive-guide-part-1-cc24d2dcd87a 
https://www.datacamp.com/tutorial/xgboost-in-python 
https://xgboosting.com/xgboost-advantages-and-disadvantages-pros-vs-cons/ 
https://towardsdatascience.com/why-xgboost-cant-solve-all-your-problems-b5003a62d12a 
https://www.researchgate.net/publication/391558186_Limitations_of_XGBoost_in_Predicting_Material_Parameters_for_Complex_Constitutive_Models 
https://www.crowdstrike.com/en-us/blog/crowdstrike-researchers-develop-custom-xgboost-objective/ 
https://www.linkedin.com/pulse/demystifying-xgboost-real-world-example-rany-elhousieny-phd%25E1%25B4%25AC%25E1%25B4%25AE%25E1%25B4%25B0-uapmf 
https://medium.com/data-science-collective/stop-guessing-xgboost-the-intuition-tuning-strategy-and-real-world-playbook-every-data-0340e175a714 
https://www.armand.so/why-xgboost-is-so-popular-among-data-scientists/ 
https://www.igmguru.com/blog/xgboost 

반응형