2026-04-29·実装·⏱ 約 5 分
ベイズ最適化でハイパーパラメータ探索 ─ Optuna 入門
GridSearch より遥かに効率的なハイパラ探索手法『ベイズ最適化』を、Optuna で実装。少ない試行で最良パラメータを見つける考え方を解説します。
機械学習モデルのハイパラ調整は時間との勝負。ベイズ最適化(Bayesian Optimization) は『過去の試行から学んで賢く次を選ぶ』アプローチで、GridSearch より圧倒的に少ない試行で最適解に近づけます。
問題設定 ─ なぜ GridSearch ではダメか
ハイパラが 5 個 ・ 各 10 候補だと GridSearch は 10^5 = 10 万回試行。LightGBM なら 1 試行 30 秒として 35 日…現実的でない。
- GridSearch: 全組み合わせを試す。次元の呪いに直面
- Random Search: ランダムにサンプリング。GridSearch より効率的だが、過去の結果を活かさない
- ベイズ最適化: 過去の結果から賢く次の試行点を決める ← これ
ベイズ最適化の仕組み
- サロゲートモデル(代理関数)を構築 ─ 試行結果から目的関数を推定。通常はガウス過程(GP)
- 獲得関数(EI: Expected Improvement など)で次の試行点を決める
- 新しい試行 → サロゲートを更新 → 繰り返し
💡 直感的に
「今までで最高は 0.85。次にどこを試せば 0.85 を超える可能性が最も高い?」を毎回計算して、賢く探索範囲を絞り込んでいきます。
Optuna で実装(10 行)
LightGBM の最適化
import optuna
import lightgbm as lgb
from sklearn.model_selection import cross_val_score
def objective(trial):
params = {
'num_leaves': trial.suggest_int('num_leaves', 16, 256),
'learning_rate': trial.suggest_float('learning_rate', 0.01, 0.3, log=True),
'min_child_samples': trial.suggest_int('min_child_samples', 5, 100),
'reg_alpha': trial.suggest_float('reg_alpha', 1e-8, 10, log=True),
}
model = lgb.LGBMClassifier(**params, n_estimators=200)
score = cross_val_score(model, X_train, y_train, cv=5, scoring='roc_auc').mean()
return score
study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=100)
print('Best:', study.best_value)
print('Params:', study.best_params)重要な機能
Pruning(早期打ち切り)
勝ち目のない試行を途中で止める
study = optuna.create_study(
direction='maximize',
pruner=optuna.pruners.MedianPruner(),
)中央値より悪い試行を早期打ち切り。実質 2〜3 倍速くなります。
可視化
結果の分析
import optuna.visualization as vis
vis.plot_optimization_history(study)
vis.plot_param_importances(study)
vis.plot_parallel_coordinate(study)実務での使い方
- GBDT 系(LightGBM ・ XGBoost ・ CatBoost)のハイパラ調整
- DNN の学習率・バッチサイズ・正則化
- scikit-learn の任意のモデル
- 強化学習の報酬重み
🛠 ベイズ最適化が効く場面
1 試行が高コスト(数分〜数時間)で、ハイパラが 5〜30 次元の場合。1 試行が一瞬で済む場合は GridSearch でも OK。
理論的背景
ベイズ最適化はベイズ統計の応用です。ガウス過程 で関数の事後分布を表現し、獲得関数 で次の試行点を決定します。詳しくは:
- [ベイズ統計と頻度論](/blog/bayes-vs-frequentist)
- [統計検定 準 1 級 教科書](/textbook/grade-pre1) ─ ベイズの定理
- [E 資格 教科書](/certs/e-shikaku/textbook) ─ ガウス過程の応用
まとめ
Optuna 10 行で実務レベルのハイパラ最適化が可能。理論はベイズ統計の集大成、実装は scikit-learn のラッパーレベル ─ AI エンジニアにとって投資対効果が極めて高いツールです。
Related Articles
関連記事
- 2026-04-30実装OpenAI API 実装入門 ─ Chat / Embeddings / Function CallingOpenAI API を使ったプロダクション開発の基礎。Chat Completion・Embedding・Function Calling・ストリーミング・コスト管理まで実装パターンを網羅。
- 2026-04-30実装Vercel で AI アプリをデプロイする ─ Next.js + AI SDK 入門Vercel にデプロイする最短ルート。Next.js の AI SDK + AI Gateway で OpenAI/Claude を統合し、ストリーミングチャット UI を 1 時間で公開する手順。
- 2026-04-30実装Streamlit で 1 時間で ML デモアプリ ─ 転職に効くポートフォリオPython だけで動くインタラクティブな ML デモを Streamlit で作る方法。データ可視化・ファイルアップロード・モデル予測 UI までの最小実装。