当時の疑問点
LightGBMTunerCVってどこで探索するパラメータを設定すればいいのだ??
ドキュメントを読んでパラメータ探索を開始するところまでできたものの、何のパラメータを探索するのかわからなかった。だが、sampleのコードを見てもそんな設定はどこにも見当たらない。
疑問を解消するためにソースコードを読んできました。
def run(self) -> None:
"""Perform the hyperparameter-tuning with given parameters."""
verbosity = self.auto_options["verbosity"]
if verbosity is not None:
if verbosity > 1:
optuna.logging.set_verbosity(optuna.logging.DEBUG)
elif verbosity == 1:
optuna.logging.set_verbosity(optuna.logging.INFO)
elif verbosity == 0:
optuna.logging.set_verbosity(optuna.logging.WARNING)
else:
optuna.logging.set_verbosity(optuna.logging.CRITICAL)
# Handling aliases.
_handling_alias_parameters(self.lgbm_params)
# Sampling.
self.sample_train_set()
self.tune_feature_fraction()
self.tune_num_leaves()
self.tune_bagging()
self.tune_feature_fraction_stage2()
self.tune_regularization_factors()
self.tune_min_data_in_leaf()
これがLightGBMTunerCV
クラス(実際には親クラスの_LightGBMTBaseTuner
)のrun
メソッドです。
これを実行するとパラメータ探索が始まります。
注目すべきは# Sampling
から下の部分。
ここに書いてありました。
探索してくれるパラメータは以下の通りですね。
- tune_feature_fraction(): feature_fraction
- tune_num_leaves(): num_leaves
- tune_bagging(): bagging_fraction
- tune_feature_fraction_stage2(): feature_fraction(2回目)
- tune_regularization_factors(): lambda_l1, lambda_l2
- tune_min_data_in_leaf(): min_data_in_leaf
なぜこのパラメータに絞っているのか
疑問点が増えました。LightGBMにおいて重要なパラメータという位置付けなのか、それとも明記しているのがこれなだけで他のパラメータ(learning_rateなど)も探索しているのか。
ソースコードの探検は続きます。。
詳しい方いましたらコメントで教えていただけると幸いです。