LightGBM Python 패키지 소개
LightGBM Python 패키지 소개
LightGBM Python 패키지의 기본적인 사용법을 안내하는 문서예요. 데이터를 Dataset 객체에 담아 학습·검증·예측에 활용해요. 데이터는 LibSVM·TSV·CSV 텍스트 파일, NumPy 2D 배열, SciPy 희소 행렬, pandas·polars DataFrame, pyarrow Table, LightGBM 바이너리 파일, LightGBM Sequence 객체 등 다양한 형식에서 로드할 수 있어요.
데이터 인터페이스
예제를 실행하려면 numpy를 임포트해 두세요.
import numpy as np
SciPy 희소 행렬을 Dataset으로 로드:
import scipy
csr = scipy.sparse.csr_matrix((dat, (row, col)))
train_data = lgb.Dataset(csr)
혼합 형식으로 Dataset을 만들고 피처·범주형 피처를 지정:
train_data = lgb.Dataset(data, label=label, feature_name=['c1', 'c2', 'c3'], categorical_feature=['c3'])
LightGBM은 범주형 피처를 직접 입력으로 쓸 수 있어요. one-hot 인코딩으로 변환할 필요가 없고, one-hot보다 약 8배 빠르죠. 단, Dataset을 만들기 전에 범주형 피처를 int 타입으로 변환해야 해요.
가중치가 필요할 때는 다음과 같이 설정해요.
rng = np.random.default_rng()
w = rng.uniform(size=(500, ))
train_data = lgb.Dataset(data, label=label, weight=w)
Dataset.set_init_score()로 초기 점수를, Dataset.set_group()으로 랭킹 태스크의 그룹/쿼리 데이터를 설정할 수 있어요.
메모리 효율 사용
LightGBM의 Dataset 객체는 이산 빈만 저장하므로 매우 메모리 효율적이에요. 반면 NumPy/Array/Pandas 객체는 메모리를 많이 써요. 메모리를 아끼려면 1) Dataset 생성 시 free_raw_data=True(기본값 True) 설정, 2) Dataset 생성 후 명시적으로 raw_data=None 설정, 3) gc 호출을 하면 돼요.
파라미터 설정
LightGBM은 딕셔너리로 파라미터를 설정해요.
param = {'num_leaves': 31, 'objective': 'binary'}
param['metric'] = 'auc'
# 평가 메트릭을 여러 개 지정할 수도 있어요
param['metric'] = ['auc', 'binary_logloss']
학습
학습은 파라미터 리스트와 데이터셋이 필요해요.
num_round = 10
bst = lgb.train(param, train_data, num_round, valid_sets=[validation_data])
학습 후 모델을 저장하고, JSON으로 덤프하거나 다시 로드할 수 있어요.
bst.save_model('model.txt')
# JSON으로 덤프
json_model = bst.dump_model()
# 저장된 모델 로드
bst = lgb.Booster(model_file='model.txt') # init model
교차 검증
5-fold 교차 검증은 이렇게 해요.
lgb.cv(param, train_data, num_round, nfold=5)
조기 종료 (Early Stopping)
검증셋이 있으면 조기 종료로 최적 부스팅 라운드 수를 찾을 수 있어요. 조기 종료는 valid_sets에 최소 하나의 세트가 필요하고, 둘 이상이면 학습 데이터를 제외한 전부를 사용해요.
bst = lgb.train(param, train_data, num_round, valid_sets=valid_sets, callbacks=[lgb.early_stopping(stopping_rounds=5)])
bst.save_model('model.txt', num_iteration=bst.best_iteration)
이 방식은 최소화하는 메트릭(L2, 로그 손실 등)과 최대화하는 메트릭(NDCG, AUC 등) 모두에 동작해요. 평가 메트릭을 여러 개 지정하면 전부 조기 종료에 사용되는데, early_stopping 콜백 생성자에 first_metric_only=True를 전달하면 첫 번째 메트릭만 검사하게 바꿀 수 있어요.
더 알아보기
- LightGBM 설치 — 설치 가이드
- LightGBM 파라미터 — 파라미터 문서
- LightGBM 파라미터 튜닝 — 튜닝 지침