はじめに
機械学習モデルの精度は、アルゴリズムだけでなくハイパーパラメータの設定によって大きく変わります。
例えばXGBoostでは、
- max_depth(木の深さ)
- learning_rate(学習率)
- n_estimators(木の本数)
などの設定が予測精度に影響します。
しかし、最適なパラメータを手作業で探すのは大変です。
そこで利用されるのが Optuna です。
Optunaは、機械学習モデルのハイパーパラメータを自動で探索し、高精度なモデル構築を支援するPythonライブラリです。
本記事では、Optunaの仕組みや特徴を初心者向けに解説します。
ハイパーパラメータとは?
機械学習モデルには、学習前に設定するパラメータがあります。
例えばXGBoostでは、
| パラメータ | 内容 |
|---|---|
| max_depth | 木の深さ |
| learning_rate | 学習率 |
| n_estimators | 木の本数 |
これらを変更すると、予測精度が変化します。
しかし、
- 組み合わせが膨大
- 手作業で調整が難しい
- 最適な値が分からない
という課題があります。
Optunaとは?
Optunaは、ハイパーパラメータの最適化を自動で行うライブラリです。
例えば、
max_depth = ?
learning_rate = ?
n_estimators = ?を自動的に探索し、
max_depth = 6
learning_rate = 0.08
n_estimators = 250のような高精度な組み合わせを見つけてくれます。
従来の探索方法
グリッドサーチ
すべての組み合わせを試す方法です。
例
max_depth
3,5,7,9
learning_rate
0.01,0.1,0.2
の場合、
すべての組み合わせを評価します。
メリット
- 分かりやすい
デメリット
- 計算時間が長い
- パラメータが増えると現実的でなくなる
ランダムサーチ
組み合わせをランダムに選んで評価します。
メリット
- 実装が簡単
デメリット
- 良い条件を見逃す可能性がある
Optunaの仕組み
Optunaは過去の探索結果を利用し、
良さそうな領域を重点的に探索する
という特徴があります。
イメージとしては、下記のような違いがあります。
ランダムサーチ
山全体を適当に歩くOptuna
高そうな場所を見つけた
↓
その周辺を重点的に調査このため、少ない試行回数でも高精度なパラメータを見つけやすくなります。
ベイズ最適化との関係
Optunaでは主に TPE(Tree-structured Parzen Estimator) という探索アルゴリズムが利用されています。
これはベイズ最適化の考え方を利用した手法の一つです。
そのため、
- 過去の結果を学習する
- 有望な領域を優先的に探索する
という特徴があります。
関連記事
▶ ベイズ最適化とは?(後日公開予定)
製造業での活用例
品質予測
入力
- 温度
- 圧力
- 流量
出力
- 製品強度
XGBoostで品質予測モデルを作成する際、
Optunaを利用すると自動的にパラメータを調整できます。
CAE代理モデル
CAE結果を学習したXGBoostモデルに対して、
Optunaを利用してモデル精度を向上させることも可能です。
Optunaのメリット
- ハイパーパラメータ調整を自動化できる
- 少ない試行回数で高精度な結果が得られる
- XGBoostやLightGBMとの相性が良い
- Pythonで簡単に利用できる
Optunaのデメリット
- 探索結果が毎回異なる
- パラメータ範囲の設定が必要
- モデルの仕組み自体を改善するわけではない
まとめ
Optunaは、機械学習モデルのハイパーパラメータを自動で最適化するPythonライブラリです。
特にXGBoostとの相性が良く、
- 品質予測
- 性能予測
- 不良予測
- CAE代理モデル
など製造業のデータ分析でも広く利用されています。
手作業でパラメータを調整する代わりに、効率的に高精度なモデルを構築できることがOptunaの大きな特徴です。

