XGBoost 내부 구조 파헤치기: 2차 이득(second-order gain), 폐형 리프 가중치(closed-form leaf
요약
XGBoost의 핵심 알고리즘인 2차 이득(second-order gain)과 정규화 메커니즘을 심층 분석합니다. L2 정규화(λ)와 가지치기(γ)가 모델의 복잡도와 가중치에 미치는 영향을 수학적 관점에서 설명합니다.
핵심 포인트
- XGBoost는 헤시안(Hessian)을 활용한 2차 미분 기반의 이득 계산을 수행함
- λ(L2 정규화)는 리프 가중치를 0으로 수축시켜 과적합을 방지함
- γ(Gamma)는 분할의 최소 이득 임계값으로 가지치기 메커니즘을 결정함
- 빈닝(Binning)과 희소성 인식(Sparsity-aware)을 통해 시스템 효율성을 높임
일반적인 그래디언트 부스팅 (gradient boosting)은 이전 모델의 잔차 (residuals)에 맞춰 새로운 트리를 학습시킵니다. XGBoost는 그 골격은 유지하되 엔진을 재설계했습니다. 그리고 이 재설계가 XGBoost를 정형 데이터 (tabular data) 경진대회에서 계속 승리하게 만드는 알고리즘으로 만들었습니다. 저는 모든 요소를 실제로 계산하는 아주 작은 1차원 (1-D) 데모를 만들었습니다. 네 가지 움직이는 구성 요소를 보고 나면, 그
특징(feature)을 기준으로 점들을 정렬하고, 왼쪽에서 오른쪽으로 이동하며 G_L, H_L을 누적합니다. 오른쪽 부분은 전체 합계에서 왼쪽 합계를 뺀 값입니다. 각 임계값(threshold)의 점수를 계산하고 가장 좋은 것을 유지합니다. 이것이 "정확한 탐욕적 (exact greedy)" 알고리즘이며, 정렬 후 특징당 O(#points)의 복잡도를 가집니다.
def best_split(g, h, x, lam, gamma):
order = np.argsort(x); g, h, x = g[order], h[order], x[order]
G, H = g.sum(), h.sum()
...
λ와 γ가 실제로 하는 역할
이것들은 XGBoost가 추가하는 두 개의 조절 노브(knob)이며, 데모를 통해 두 가지 모두를 조절할 수 있습니다. λ (L2 정규화 (L2 regularization))는 H+λ라는 더 큰 값으로 나누게 만들어, 모든 리프 가중치(leaf weight)가 0을 향해 수축하게 하며, 그에 따라 이득(gain)도 줄어듭니다. γ는 분할(split)이 이루어질 가치가 있기 위해 생성해야 하는 최소 이득입니다. 이 값을 이득 곡선의 정점보다 높게 설정하면 분할은 가지치기 (pruned) 되어, 해당 브랜치가 단일 리프로 축소됩니다. "γ를 뺀 후에도 이득이 여전히 양수인가?"라는 이 단 하나의 테스트가 전체 가지치기 메커니즘입니다.
일반적인 GB가 숨겨져 있는 곳
명확한 사실은 다음과 같습니다: 일반적인 그래디언트 부스팅 (gradient boosting)은 h ≡ 1, λ = γ = 0인 동일한 루프입니다. 이 경우 리프는 단순히 평균 잔차(mean residual)인 −G/n이 되며 절대 가지치기를 하지 않습니다. 따라서 제곱 오차 (squared error, hᵢ=1, 즉 H == n)의 경우, 정규화가 없는 XGBoost는 일반적인 분산 감소 부스팅 (variance-reduction boosting)과 같습니다. 헤시안 (Hessian)은 로그 손실 (log-loss)과 같이 hᵢ = pᵢ(1−pᵢ)가 데이터 포인트마다 실제로 변하여 2차 이득 (second-order gain)이 1차 이득 (first-order gain)과 달라지는 손실 함수에서 비로소 제 역할을 합니다.
# XGBoost 리프 : w* = -G / (H + lam) # 곡률 가중치 적용 + L2 수축
# 일반 GB 리프: w = -G / n # 1차, lambda 없음, gamma 없음
그 이후의 모든 것은 시스템 엔지니어링의 영역입니다: 실제 XGBoost는 분할 탐색이 재정렬 대신 빈(bin) 단위의 누적 합계가 될 수 있도록 각 특징을 한 번에 약 256개의 버킷(bucket)으로 빈닝 (bins) 하며, 결측값에 대해 양쪽을 모두 시도해보고 더 큰 이득을 주는 방향을 학습함으로써 희소성 인식 (sparsity-aware) 기능을 갖춥니다. 하지만 통계적 핵심은 위에서 설명한 것들입니다. 즉, 그래디언트 (gradient), 헤시안 (Hessian), 폐형 리프 (closed-form leaf), 그리고 두 개의 정규화 항이 포함된 이득 (gain)입니다.
λ와 γ를 조절하며 트리와 이득 (gain) 곡선이 어떻게 반응하는지 확인해 보세요:
https://dev48v.infy.uk/ml/day40-xgboost-internals.html
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기