2
0

More than 1 year has passed since last update.

OptunaのLightGBMTunerCVは何のパラメータを探索してくれるのか

Posted at

当時の疑問点

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など)も探索しているのか。

ソースコードの探検は続きます。。

詳しい方いましたらコメントで教えていただけると幸いです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0