본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 25. 00:14

밑바닥부터 구현하는 Gradient Boosting: 서로의 실수를 보완하는 약한 트리들

요약

Gradient Boosting의 작동 원리를 밑바닥부터 설명하며, 이전 트리의 잔차를 순차적으로 보완하는 과정을 다룹니다. Random Forest와의 차이점 및 학습률(Learning rate)의 역할을 통해 모델의 편향을 줄이는 메커니즘을 분석합니다.

핵심 포인트

  • Gradient Boosting은 트리를 순차적으로 구축하여 이전 트리의 오차를 보완함
  • Random Forest는 분산을 줄이고, Boosting은 편향을 줄이는 데 집중함
  • 학습률(Learning rate) 조절을 통해 모델의 일반화 성능을 높이고 과적합을 방지함
  • 잔차를 맞추는 과정은 손실 함수에 대한 경사 하강법(Gradient Descent)과 동일함

Random forest는 많은 트리들을 병렬로 구축하고 이를 평균냅니다. Gradient boosting은 트리를 하나씩 순차적으로 구축하며, 각 트리는 이전 트리들의 실수를 보완합니다. 이것이 바로 표 형식 데이터(tabular data)에 대한 대부분의 Kaggle 경진대회에서 승리하는 방식입니다. 여기 잔차(residuals)를 실시간으로 맞추는 과정을 보여줍니다.

🌲 부스팅 과정을 지켜보세요 (트리를 하나씩 추가): https://dev48v.infy.uk/ml/day15-gradient-boosting.html

핵심 루프 (The core loop)

  1. 상수 예측값(평균)으로 시작합니다.
  2. 잔차 (residuals) — 각 지점에서 얼마나 벗어나 있는지를 계산합니다.
  3. 해당 잔차들에 대해 작고 얕은 트리를 학습(fit)시킵니다.
  4. 이를 **학습률 (learning rate)**에 따라 스케일링하여 앙상블(ensemble)에 추가합니다.
  5. 반복합니다. 각 트리는 남아있는 오차를 조금씩 깎아 나갑니다.

데모를 보면 예측 곡선이 데이터를 향해 휘어지고, 매 라운드마다 MSE(Mean Squared Error)가 떨어지는 동안 잔차 막대(residual bars)가 줄어드는 것을 볼 수 있습니다.

Forest vs boosting

  • Random forest: 독립적인 트리들이 병렬로 구축되며 평균을 냅니다. 분산(variance)을 줄입니다.
  • Boosting: 의존적인 트리들이 순차적으로 구축되며 합산됩니다. 오류를 수정함으로써 편향(bias)을 줄입니다.

학습률 (Learning rate) = 수축 (shrinkage)

작은 단계(예: 0.1)는 큰 단계보다 일반화(generalize)가 더 잘 되지만, 더 많은 트리가 필요합니다. 트리가 너무 많거나 학습률이 너무 높으면 과적합(overfitting)이 발생하므로 조기 종료(early stopping)를 사용해야 합니다.

"gradient" 부분: 잔차를 맞추는 것은 단순히 제곱 오차(squared error)에 대한 경사 하강법(gradient descent)일 뿐입니다. 손실 함수(loss function)를 바꾸면 일반화가 가능해집니다(이것이 XGBoost / LightGBM / CatBoost입니다).

🔨 페이지에서 밑바닥부터 구현된 과정(평균 → 잔차 → 트리 → lr×트리 추가 → 반복)을 확인하세요: https://dev48v.infy.uk/ml/day15-gradient-boosting.html

MachineLearningFromZero의 일부입니다. 🌐 https://dev48v.infy.uk

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0