OptunaはPythonのハイパーパラメータ最適化ライブラリで、機械学習モデルのパラメータチューニングに広く使用されています。今回は、OptunaのStudyオブジェクトを作成する際の重要な引数、directionについて解説します。
study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=1)
print('Number of finished trials:', len(study.trials))
print('Best trial:', study.best_trial.params)
direction引数とは?
directionはOptunaのstudyの最適化方向を指定します。以下の2つの値を取ることができます。
'maximize':目的関数の最大化を意味します。つまり、アルゴリズムは目的関数が出力する値を最大化しようとします。たとえば、機械学習モデルの精度を最大化するような問題に対して使用されます。
'minimize':目的関数の最小化を意味します。つまり、アルゴリズムは目的関数が出力する値を最小化しようとします。たとえば、機械学習モデルの損失関数を最小化するような問題に対して使用されます。
目的関数が最小化または最大化を求めるかどうかにより、directionを適切に選択します。
Optunaのその他の引数
sampler:Samplerオブジェクトを指定します。Samplerはハイパーパラメータの探索戦略を決定します。例えば、RandomSamplerはランダムサンプリングを行い、TPESamplerはTree-structured Parzen Estimatorアルゴリズムを用いてサンプリングを行います。
pruner:Prunerオブジェクトを指定します。Prunerは、トライアル中に条件を満たすとそれを早期に打ち切る戦略を決定します。これは無駄なトライアルを避けるために有用です。
study_name:Studyの名前を指定します。複数のStudyを管理するときに役立ちます。
storage:結果を保存するためのストレージのURLを指定します。データベース(例:SQLite、MySQL、PostgreSQL)や、メモリ上(例:'sqlite:///:memory:')に保存することができます。
以上、Optunaのdirection引数とその他の引数についての解説でした。この記事がOptunaを使用する際の理解と活用に役立つことを願っています。