💡
LightGBMのtrain関数の引数からコールバックへの移行
LightGBM: callback覚書
久々にLightGBMをアップデートしたらtrainの引数が変わって既存のコードが動かなくなっていたので移行手順を覚書。
1. early_stopping_rounds -> lgb.early_stopping()
early_stopping_roundsはtrainの引数からlgb.early_stopping()コールバックになってました。
Before
lgb.train(
params,
train_set,
valid_sets=[train_set, valid_set],
valid_names=['train', 'valid'],
num_boost_round=1000,
early_stopping_rounds=100, # ここが変わった
verbose_eval=100,
)
After
lgb.train(
params,
train_set,
valid_sets=[train_set, valid_set],
valid_names=['train', 'valid'],
num_boost_round=1000,
callbacks=[lgb.early_stopping(100)], # ここが変わった
verbose_eval=100,
)
2. evals_result -> lgb.record_evaluation()
学習経過を辞書で取得する際はevals_result引数に辞書を渡していましたが、lgb.record_evaluation()コールバックの引数として渡すようになりました。
Before
evaluations_result = {}
lgb.train(
params,
train_set,
valid_sets=[train_set, valid_set],
valid_names=['train', 'valid'],
num_boost_round=1000,
early_stopping_rounds=100,
verbose_eval=100,
evals_result=evaluations_result, # ここが変わった
)
After
evaluations_result = {}
lgb.train(
params,
train_set,
valid_sets=[train_set, valid_set],
valid_names=['train', 'valid'],
num_boost_round=1000,
callbacks=[lgb.record_evaluation(evaluations_result)], # ここが変わった
verbose_eval=100,
)
3. verbose_eval -> lgb.log_evaluation()
学習中に経過を表示するverbose_eval引数はlgb.log_evaluation()コールバックになりました。
Before
lgb.train(
params,
train_set,
valid_sets=[train_set, valid_set],
valid_names=['train', 'valid'],
num_boost_round=1000,
early_stopping_rounds=100,
verbose_eval=100, # ここが変わった
)
After
lgb.train(
params,
train_set,
valid_sets=[train_set, valid_set],
valid_names=['train', 'valid'],
num_boost_round=1000,
callbacks=[lgb.log_evaluation(period=100)], # ここが変わった
)
Discussion