Tan Kim

lightgbm

LightGBM

개요

Microsoft가 개발한 Light Gradient Boosting Machine. XGBoost와 동일한 Gradient Boosting 계열이지만, 대용량 데이터에서 더 빠르고 메모리 효율이 높다.

  • 기반: 결정 트리 앙상블 (Gradient Boosting)
  • 특징: 빠른 학습 속도, 낮은 메모리 사용량
  • 공개처: pip install lightgbm

XGBoost와의 핵심 차이

Leaf-wise 트리 성장

  • XGBoost: Level-wise (레벨 단위로 트리 성장)
  • LightGBM: Leaf-wise (가장 손실이 큰 리프를 우선 분기) → 더 빠르고 정확하나 과적합 주의

GOSS (Gradient-based One-Side Sampling)

큰 그래디언트를 가진 샘플을 우선 학습 → 데이터 샘플링으로 속도 향상

EFB (Exclusive Feature Bundling)

희소한(sparse) 피처들을 묶어 차원 축소 → 메모리 및 속도 최적화

기본 사용법

import lightgbm as lgb
from sklearn.model_selection import train_test_split
 
X_train, X_test, y_train, y_test = train_test_split(X, y)
 
model = lgb.LGBMClassifier(
    n_estimators=300,
    num_leaves=31,
    learning_rate=0.1,
    subsample=0.8,
)
model.fit(
    X_train, y_train,
    eval_set=[(X_test, y_test)],
    callbacks=[lgb.early_stopping(20)]
)

주요 하이퍼파라미터

파라미터 설명 권장 범위
n_estimators 트리 개수 100~1000
num_leaves 리프 노드 수 (복잡도 제어) 20~300
learning_rate 학습률 0.01~0.3
min_child_samples 리프 최소 샘플 수 (과적합 방지) 10~100
subsample 샘플링 비율 0.6~1.0

num_leaves가 XGBoost의 max_depth에 대응하는 핵심 파라미터.

이커머스 판매 예측 활용

입력 피처: 카테고리, 가격, 이미지 수, 리뷰 수, 경쟁 상품 수, 시즌 등
출력: 판매량 예측 (회귀) or 판매 등급 (분류: 상/중/하)
  • 데이터가 수십만 건 이상이면 XGBoost보다 LightGBM이 유리
  • 카테고리형 변수(category dtype)를 자동 처리하는 기능 내장

언제 LightGBM을 선택할까

  • 데이터가 많아서 학습 속도가 중요할 때
  • 메모리 제약이 있을 때
  • 카테고리형 피처가 많을 때 (자동 인코딩)

관련 개념

  • XGBoost