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

LightGBM은 대규모 데이터셋에 대해 빠르고 정확한 그래디언트 부스팅 프레임워크입니다. LightGBM은 다른 그래디언트 부스팅 모델과는 달리 트리 가중치와 분할 기준을 조정하여 모델의 성능을 더욱 개선할 수 있습니다. 이번 블로그에서는 LightGBM에서 트리 가중치와 분할 기준을 조정하는 방법에 대해 알아보겠습니다.

트리 가중치 조정

트리 가중치 조정은 각 트리에 대해 예측 오차를 줄이기 위해 사용됩니다. LightGBM은 기본적으로 이진 분할을 사용하기 때문에 각 트리에 대해 노드의 값을 0 또는 1로 설정합니다. 그러나 예측 오차를 줄이기 위해 이진 분할 대신 실수 값을 가지는 트리 가중치를 사용할 수도 있습니다.

아래는 LightGBM에서 트리 가중치를 조정하는 예제 코드입니다:

import lightgbm as lgb

# 데이터 준비
train_data = lgb.Dataset(X_train, label=y_train)
valid_data = lgb.Dataset(X_valid, label=y_valid)

# 모델 훈련
params = {
    'boosting_type': 'gbdt',
    'objective': 'binary',
    'metric': 'binary_logloss',
    'num_leaves': 31,
    'learning_rate': 0.05
}
model = lgb.train(params, train_data, valid_sets=[train_data, valid_data])

# 트리 가중치 조정
model.reset_parameter(leaf_prediction='weighted')

위의 코드에서 reset_parameter() 함수를 사용하여 트리 가중치를 조정합니다. leaf_prediction 매개변수를 'weighted'로 설정하여 실수 값을 가지는 트리 가중치를 사용합니다. 이를 통해 예측 오차를 더욱 줄일 수 있습니다.

분할 기준 조정

LightGBM은 기본적으로 최적의 분할 기준을 찾기 위해 히스토그램 기반 기능 분할 알고리즘을 사용합니다. 그러나 때로는 이러한 알고리즘이 너무 많은 메모리를 사용하거나 계산 시간이 오래 걸리는 경우가 있을 수 있습니다. 이럴 때는 분할 기준을 조정하여 모델의 성능 개선을 시도할 수 있습니다.

아래는 LightGBM에서 분할 기준을 조정하는 예제 코드입니다:

import lightgbm as lgb

# 데이터 준비
train_data = lgb.Dataset(X_train, label=y_train)
valid_data = lgb.Dataset(X_valid, label=y_valid)

# 모델 훈련
params = {
    'boosting_type': 'gbdt',
    'objective': 'binary',
    'metric': 'binary_logloss',
    'num_leaves': 31,
    'learning_rate': 0.05
}
model = lgb.train(params, train_data, valid_sets=[train_data, valid_data])

# 분할 기준 조정
model.reset_parameter(max_bin=255)

위의 코드에서 reset_parameter() 함수를 사용하여 분할 기준을 조정합니다. max_bin 매개변수를 더 큰 값인 255로 설정하여 히스토그램의 구간 수를 조정합니다. 이를 통해 더 세부적인 분할 기준을 사용할 수 있습니다.

LightGBM에서 트리 가중치와 분할 기준을 조정함으로써 모델의 성능을 더욱 향상시킬 수 있습니다. 이러한 조정은 데이터셋과 문제에 따라 다를 수 있으므로 여러 가지 방법을 시도해보고 성능을 평가해야 합니다.