num_leaves
num_leaves
num_leaves
는 그래디언트 부스팅 머신 러닝 알고리즘 중 하나인 LightGBM(Light Gradient Boosting Machine)에서 중요한 하이퍼파라터로, 각각의 결정 트리(decision tree) 가질 수 있는 최대 잎 노드 수(maximum number of leaf nodes)를 지정합니다. 이 파라미터는 모델의 복잡도, 학습 속도, 과적합(overfitting) 여부에 직접적인 영향을 미치므로, 모델 튜닝 과정에서 매우 중요한 역할을 합니다.
개요
LightGBM은 효율적인 그래디언트 부스팅 프레임워크로, 특히 대규모 데이터셋에서 빠른 학습 속도와 낮은 메모리 사용량을 특징으로 합니다. num_leaves
는 트리 기반 모델의 구조를 제어하는 핵심 파라미터로, 트리의 깊이를 제어하는 [max_depth](/doc/%EA%B8%B0%EC%88%A0/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D/%ED%95%98%EC%9D%B4%ED%8D%BC%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0/max_depth)
와 함께 모델의 복잡성을 결정합니다. 그러나 num_leaves
는 단순한 깊이 제한보다 더 유연하게 트리를 성장시키는 방식을 제공합니다.
num_leaves의 역할과 의미
1. 트리 구조의 복잡성 조절
num_leaves
는 하나의 트리가 가질 수 있는 잎 노드(leaf node)의 최대 개수를 정의합니다. 잎 노드는 트리의 끝에 위치한 노드로, 예측값을 출력하는 위치입니다. 예를 들어, num_leaves=31
이면 하나의 트리는 최대 31개의 잎을 가질 수 있습니다.
- 이 값이 클수록 모델은 더 복잡한 패턴을 학습할 수 있지만, 과적합의 위험이 증가합니다.
- 반대로 값이 작으면 모델이 단순해져 학습 부족(underfitting)이 발생할 수 있습니다.
2. max_depth와의 차이점
일반적인 트리 기반 모델에서는 max_depth
를 사용해 트리의 깊이를 제한합니다. 그러나 LightGBM은 리프 중심(leaf-wise) 트리 성장 전략을 사용하기 때문에, num_leaves
가 더 직관적인 복잡도 제어 수단이 됩니다.
파라미터 | 설명 | 특징 |
---|---|---|
max_depth |
트리의 최대 깊이를 제한 | 수직적인 성장 제어, 보수적 |
num_leaves |
잎 노드의 최대 수를 제한 | 리프 중심 성장, 유연함 |
예를 들어, 깊이가 5인 완전 이진 트리는 최대 (2^5 = 32)개의 잎을 가집니다. 하지만 num_leaves=31
로 설정하면, 리프 중심 성장 방식에서 더 불균형한 트리 구조를 허용하면서도 전체 잎 수를 제한할 수 있습니다.
사용 방법 및 설정 가이드
기본 문법 (Python 예시)
import lightgbm as lgb
params = {
'objective': 'regression',
'metric': 'rmse',
'num_leaves': 31, # 기본값
'learning_rate': 0.05,
'feature_fraction': 0.9
}
model = lgb.train(params, train_data, num_boost_round=100)
권장 설정
- 기본값:
num_leaves=31
- 작은 데이터셋:
15 ~ 31
(과적합 방지) - 대규모 데이터셋:
64 ~ 256
(복잡한 패턴 학습) - 매우 큰 데이터셋:
256 이상
(성능 향상, 단 과적합 주의)
⚠️ 주의:
num_leaves
를 너무 크게 설정하면, 특히 데이터가 충분하지 않을 경우 과적합이 심해질 수 있습니다.
과적합 방지를 위한 보완 파라미터
num_leaves
는 모델 복잡도와 직결되므로, 다음과 같은 파라미터와 함께 사용하여 과적합을 방지하는 것이 좋습니다:
파라미터 | 설명 |
---|---|
[min_data_in_leaf](/doc/%EA%B8%B0%EC%88%A0/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D/%ED%95%98%EC%9D%B4%ED%8D%BC%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0/min_data_in_leaf) |
각 잎 노드에 포함되어야 할 최소 데이터 수. 일반적으로 num_leaves 가 클수록 이 값을 높여야 함. |
max_depth |
트리의 깊이를 제한하여 num_leaves 의 무제한 성장을 방지. |
[feature_fraction](/doc/%EA%B8%B0%EC%88%A0/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D/%ED%95%98%EC%9D%B4%ED%8D%BC%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0/feature_fraction) |
각 트리에서 사용할 특성의 비율을 줄여 다양성 확보. |
[bagging_fraction](/doc/%EA%B8%B0%EC%88%A0/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D/%ED%95%98%EC%9D%B4%ED%8D%BC%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0/bagging_fraction) |
학습 데이터의 일부만 사용하여 일반화 성능 향상. |
예:
params = {
'num_leaves': 64,
'min_data_in_leaf': 20,
'max_depth': 8,
'bagging_fraction': 0.8,
'feature_fraction': 0.8
}
성능 최적화 전략
- 그리드 서치 또는 베이지안 최적화를 통해
num_leaves
의 최적값 탐색 - 검증 세트(validation set)를 사용해 과적합 여부 확인
num_leaves
와learning_rate
의 조합 튜닝 (낮은 학습률 + 많은 리프 노드가 안정적인 경우 많음)
참고 자료
- LightGBM 공식 문서 - Parameters
- Ke, Guolin, et al. "LightGBM: A Highly Efficient Gradient Boosting Decision Tree." Advances in Neural Information Processing Systems 30 (2017).
- GitHub: Microsoft/LightGBM
관련 문서
num_leaves
는 LightGBM 모델의 성능을 결정짓는 핵심 요소 중 하나로, 데이터의 크기와 특성에 맞춰 신중하게 설정되어야 합니다. 적절한 튜닝을 통해 빠르고 정확한 예측 모델을 구축할 수 있습니다.
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.