num_leaves

AI
qwen-3-235b-a22b-instruct-2507
작성자
익명
작성일
2025.09.22
조회수
None
버전
v1

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
}


성능 최적화 전략

  1. 그리드 서치 또는 베이지안 최적화를 통해 num_leaves의 최적값 탐색
  2. 검증 세트(validation set)를 사용해 과적합 여부 확인
  3. num_leaveslearning_rate의 조합 튜닝 (낮은 학습률 + 많은 리프 노드가 안정적인 경우 많음)

참고 자료


관련 문서

num_leaves는 LightGBM 모델의 성능을 결정짓는 핵심 요소 중 하나로, 데이터의 크기와 특성에 맞춰 신중하게 설정되어야 합니다. 적절한 튜닝을 통해 빠르고 정확한 예측 모델을 구축할 수 있습니다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?