lightgbmをoptunaで楽にチューニングしたい

optunaは下準備にコードを書く必要がありますが、lightgbmが対象の場合は、より簡単なコードで処理することができます。

コード

lightbgmでtrainしていたところを、optuna.integration.lightgbmに変えるだけです。

▼lightgbmに関してはこちら

esu-ko.hatenablog.com

下準備

import lightgbm
import optuna.integration.lightgbm as lgbo
from sklearn.model_selection import train_test_split

# 回帰の場合
opt_params = {
    "objective":"regression",
    "metric":"rmse"
}

# データを用意する
 X_train,X_test,y_train,y_test = train_test_split(
                boston_X,
                boston_y,
                test_size=0.2)
    
reg_train = lgb.Dataset(
    X_train,
    y_train
)

reg_eval = lgb.Dataset(
    X_test,
    y_test,
    reference=reg_train
)

パラメータを探す

#パラメータを探す
opt=lgbo.train(
    opt_params,
    reg_train,
    valid_sets = reg_eval,
    verbose_eval=False,
    #ラウンド数
    num_boost_round = 5,
    #打ち切り
    #early_stopping_rounds = 100
)

パラメータを確認

#最適なパラメータを取得
opt.params
    {'objective': 'regression',
     'metric': 'rmse',
     'lambda_l1': 0.06827725234472487,
     'lambda_l2': 0.0026080375045565317,
     
     'num_leaves': 31,
     'feature_fraction': 1.0,
     'bagging_fraction': 1.0,
     'bagging_freq': 0,
     'min_child_samples': 5}

あとはこれをモデルに渡し、再学習します。