Introduction
LightGBM 알고리즘 활용(Ke et al. 2017)
# LightGBM 알고리즘 활용을 위해 패키지 lightgbm 설치
install.packages('lightgbm')
# lightgbm 패키지 로드
library(lightgbm)
본 예제는 기본 사용법에 대한 안내 수준이에요. bank 데이터 세트 중 일부를 기반으로 간단한 이진 분류 모델을 구축하는 방법을 보도록 할게요(Moro, Cortez, Rita 2014). "age"와 "balance"이라는 두 가지 input feature를 사용하여 고객이 정기 예금에 가입했는지 여부를 예측할게요.
The dataset
data(bank, package = "lightgbm") # lightgbm 패키지에 있는 bank 데이터 세트 불러오기
str(bank) # 데이터 구조 확인
# 3개의 변수 (Y(y): 종속변수 1개 / X: 설명변수 2개(age,balance) 의 첫 5개 데이터 확인
bank[1:5, c("y", "age", "balance")]
# 종속변수 분포 확인
table(bank$y)
Training the model
LightGBM의 R 패키지는 모델을 훈련하는 두 가지 함수를 제공해요.
- lgb.train(): LightGBM의 주요 훈련 로직이에요. 완전한 유연성을 제공하지만, lgb.Dataset() 함수로 생성된 Dataset 객체가 있어야 사용할 수 있어요.
- lightgbm(): lgb.train() 보다는 간단하지만 덜 유연합니다. lgb.Dataset()을 사용하지 않고도 해당 함수에 데이터를 전달할 수 있어요.
<Using the lightgbm() function>
첫 번째 단계에서 데이터를 숫자로 변환해야 합니다! 그런 다음 lightgbm() 함수로 모델을 적합할 수 있어요.
# 종속변수와 feature를 숫자형으로 변환
y <- as.numeric(bank$y == "yes")
X <- data.matrix(bank[, c("age", "balance")])
# 훈련(Train)
fit <- lightgbm(
data = X
, label = y
, params = list(
num_leaves = 4 # max number of leaves in one tree: 4
, learning_rate = 1.0 # shrinkage rate: 1.0
, objective = "binary" # 목적함수
)
, nrounds = 10L # Tree 개수: 10
, verbose = -1L # LightGBM의 자세한 결과의 정도 제어
)
# 결과
summary(predict(fit, X))
작동을 잘 한 것 같아요! 그리고 예측 값이 실제로 0과 1 사이의 확률값으로 산출되었네요!
<Using the lgb.train() function>
또는 더 유연한 인터페이스 lgb.train()을 사용할 수 있어요.
여기서 추가적인 단계로 LightGBM의 데이터 API lgb.Dataset()로 y와 X를 준비해야 하고요.
Parameter는 명명된 list로 lgb.train()에 전달돼요.
# Data interface
dtrain <- lgb.Dataset(X, label = y)
# Parameter 셋팅
params <- list(
objective = "binary" # 목적함수 셋팅
, num_leaves = 4L # max number of leaves in one tree: 4
, learning_rate = 1.0 # shrinkage rate: 1.0
)
# Train
fit <- lgb.train(
params
, data = dtrain
, nrounds = 10L # Tree 개수: 10
, verbose = -1L # LightGBM의 자세한 결과의 정도 제어
)
# 요약 결과 출력
summary(predict(fit, X))
간단한 예제로 lightgbm() 함수를 사용한 결과와 lgb.train() 함수를 사용한 결과가 동일하네요!
이상 LightGBM에 대해서 간단히 알아 보았습니다.
다음 포스팅에서는 LightGBM 관련 여러 옵션들에 대해서 작성하도록 할게요.
'Machine Learning > LightGBM' 카테고리의 다른 글
LightGBM 모델 해석(with R (0) | 2022.01.15 |
---|---|
LightGBM 모델 결과 저장 및 불러오기(with R) (0) | 2022.01.14 |
Machine Learning (LightGBM)코드 예제(with R) (0) | 2022.01.13 |
Data I/O for LightGBM (with R) (0) | 2022.01.12 |
LightGBM 개요 (0) | 2022.01.10 |
댓글