💡
LightGBMのtrain関数の引数からコールバックへの移行
LightGBM: callback覚書
久々にLightGBMをアップデートしたらtrain
の引数が変わって既存のコードが動かなくなっていたので移行手順を覚書。
early_stopping_rounds
-> lgb.early_stopping()
1. 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,
)
evals_result
-> lgb.record_evaluation()
2. 学習経過を辞書で取得する際は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,
)
verbose_eval
-> lgb.log_evaluation()
3. 学習中に経過を表示する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