[파이썬] lightgbm 트리 가중치 및 분할 기준 설정

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의 성능을 향상시키는 데 도움이 될 수 있는 중요한 옵션입니다. 이를 적절하게 활용하여 더 나은 예측 모델을 구축할 수 있습니다.