LightGBM은 그래디언트 부스팅 알고리즘을 기반으로 한 머신러닝 프레임워크입니다. 이 프레임워크는 일반적인 그래디언트 부스팅보다 더 빠른 속도와 더 높은 정확도를 제공합니다. 이러한 성능을 달성하기 위해 LightGBM은 여러 가지 튜닝 옵션을 제공하는데, 이 중 트리 가중치 및 분할 기준 설정에 대해서 알아보겠습니다.
1. 트리 가중치 설정
트리 가중치는 LightGBM에서 각각의 트리가 예측에 기여하는 정도를 나타냅니다. 기본적으로 LightGBM은 모든 트리에 동일한 가중치를 할당합니다. 하지만 특정 트리에 더 높은 가중치를 줌으로써 해당 트리가 예측에 더 큰 영향을 미치도록 설정할 수 있습니다.
가중치를 설정하기 위해서는 lightgbm.Booster
객체의 set_tree_weight()
메서드를 사용하면 됩니다. 아래는 예시 코드입니다.
import lightgbm as lgb
# LightGBM 모델 학습
model = lgb.LGBMRegressor()
model.fit(X_train, y_train)
# 특정 트리에 더 높은 가중치 설정 (예: 첫 번째 트리에 가중치 0.5)
model.set_tree_weight(0, 0.5)
위 코드에서 set_tree_weight()
함수의 첫 번째 인자는 트리의 인덱스를, 두 번째 인자는 해당 트리의 가중치 값을 의미합니다. 이를 통해 원하는 트리에 원하는 가중치를 할당할 수 있습니다.
2. 분할 기준 설정
LightGBM은 트리를 생성할 때 분할 기준을 사용합니다. 기본적으로 이진 분류를 위해서는 이진 교차 엔트로피(binary cross entropy)를, 다중 분류를 위해서는 다중 교차 엔트로피(multi-class cross entropy)를 사용합니다. 하지만 선택적으로 다른 분할 기준을 사용하고자 할 경우가 있을 수 있습니다.
다른 분할 기준을 사용하기 위해서는 lightgbm.Booster
객체의 set_split_metric()
메서드를 사용하면 됩니다. 아래는 예시 코드입니다.
import lightgbm as lgb
# LightGBM 모델 학습
model = lgb.LGBMClassifier()
model.fit(X_train, y_train)
# 분할 기준 설정 (예: 정보 이득 대신 지니 불순도 사용)
model.set_split_metric('gini')
위 코드에서 set_split_metric()
함수의 인자로 사용할 분할 기준을 지정합니다. LightGBM은 다양한 분할 기준을 제공하므로, 원하는 분할 기준에 해당하는 문자열을 인자로 전달하면 됩니다.
트리 가중치와 분할 기준 설정은 LightGBM의 성능을 향상시키는 데 도움이 될 수 있는 중요한 옵션입니다. 이를 적절하게 활용하여 더 나은 예측 모델을 구축할 수 있습니다.