LightGBMでベイズ最適化したい
ベイズ最適化を行うために、hyperopt ライブラリを使用してハイパーパラメータの探索を行います。以下に、hyperopt を用いた LightGBM モデルのベイズ最適化の例を示します。
python
from hyperopt import hp, fmin, tpe, Trials
import lightgbm as lgb
from sklearn.metrics import accuracy_score
# ハイパーパラメータ探索空間の定義
space = {
'num_leaves': hp.choice('num_leaves', range(20, 150)),
'max_depth': hp.choice('max_depth', range(5, 15)),
'learning_rate': hp.uniform('learning_rate', 0.01, 0.5),
'subsample': hp.uniform('subsample', 0.5, 1),
'colsample_bytree': hp.uniform('colsample_bytree', 0.5, 1),
'min_child_samples': hp.choice('min_child_samples', range(5, 100)),
}
# 最適化する目的関数の定義
def objective(params):
# LightGBMのパラメータを設定
lgb_params = {
'boosting_type': 'gbdt',
'objective': 'multiclass',
'num_class': num_classes,
'metric': 'multi_logloss',
**params
}
# LightGBMのトレーニング
lgb_model = lgb.train(lgb_params, lgb_train, num_boost_round=100)
# テストデータでの予測
y_pred_lgb = lgb_model.predict(X_rf_test, num_iteration=lgb_model.best_iteration)
y_pred_lgb = np.argmax(y_pred_lgb, axis=1)
# 正解率を計算して返す
accuracy = accuracy_score(y_test, y_pred_lgb)
return -accuracy # 最大化するためにマイナスをかける
# ベイズ最適化の実行
trials = Trials()
best = fmin(objective, space, algo=tpe.suggest, max_evals=50, trials=trials)
print("Best hyperparameters:", best)
このコードでは、num_leaves、max_depth、learning_rate、subsample、colsample_bytree、min_child_samples の各ハイパーパラメータについて、探索範囲として適切な分布を指定し、fmin 関数で最適なハイパーパラメータを探索します。

ディスカッション
コメント一覧
まだ、コメントがありません