ハイパーパラメータチューニング(GridSearch・RandomSearch・ベイズ最適化)

モデル精度を引き出すハイパラチューニング。3手法の使い分けとAutoMLの位置づけを学びます。

機械学習モデルの精度を引き出すハイパーパラメータチューニング。 GridSearch / RandomSearch / Bayesian の使い分け。

胡桃 あんず(普段) 胡桃 あんず

モデルってデフォルト設定でも動くけどさ、ハイパラ調整すると精度ってどれくらい変わるの?

若葉 みどり 先生(笑顔) 若葉 みどり 先生

5〜20%くらい精度が上がることも珍しくないのよ。 ハイパーパラメータチューニングは実務でもとても重要なステップということね。

白銀 ゆき(普段) 白銀 ゆき

代表的な手法は3つで、(1)GridSearchは全組合せを試す、(2)RandomSearchはランダムに選んで試す、(3)ベイズ最適化は過去の試行から次を予測する、という方式ですね。

桜井 もも(普段) 桜井 もも

まずは GridSearch から覚えればいいんですかぁ?

白銀 ゆき(普段) 白銀 ゆき

そうですね、まずはGridSearchCVが基本です。 候補値をリスト化して、全組合せを交差検証付きで評価します。 ただし候補が多いと組合せ爆発で時間がかかってしまうんです。

胡桃 あんず(普段) 胡桃 あんず

RandomSearch のメリットってなに?

若葉 みどり 先生(普段) 若葉 みどり 先生

全組合せを網羅する必要はない、というのが大事な洞察なのよ。 ランダムサンプリングで限られた回数試すだけでも、十分いい結果が得られるの。 候補が多いときに効率的ということね。

白銀 ゆき(普段) 白銀 ゆき

ベイズ最適化はOptunaやHyperoptが代表ライブラリ。 過去の評価結果から『次に試すと最も精度が上がりそうな組合せ』を予測する賢い手法。

桜井 もも(普段) 桜井 もも

AutoMLって何ですかぁ?

若葉 みどり 先生(普段) 若葉 みどり 先生

AutoMLは『前処理〜モデル選択〜ハイパラチューニング』までを自動化する仕組みなのよ。 Google AutoML、AutoGluon、PyCaret などが代表ね。 専門知識がなくても高精度なモデルを作れる流れが進んでいるということね。

白銀 ゆき(普段) 白銀 ゆき

DS検定★では『GridSearchは全組合せ』『RandomSearchはランダム』『ベイズ最適化は過去結果から学習』、AutoML=自動化、を押さえれば十分。

胡桃 あんず(笑い) 胡桃 あんず

実装例見たい!

from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier

# (1) GridSearch: 全組合せ試行 (3×3=9通り × CV5回=45学習)
param_grid = {
    'n_estimators': [50, 100, 200],
    'max_depth': [5, 10, 20],
}
grid = GridSearchCV(
    RandomForestClassifier(random_state=42),
    param_grid,
    cv=5,
    scoring='f1',
    n_jobs=-1,
)
grid.fit(X_train, y_train)
print(f'Best params: {grid.best_params_}')
print(f'Best F1: {grid.best_score_:.3f}')

# (2) Optuna: ベイズ最適化
import optuna

def objective(trial):
    n = trial.suggest_int('n_estimators', 50, 500)
    d = trial.suggest_int('max_depth', 3, 30)
    model = RandomForestClassifier(n_estimators=n, max_depth=d, random_state=42)
    return cross_val_score(model, X_train, y_train, cv=5, scoring='f1').mean()

study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=50)

確認クイズ

ハイパーパラメータの候補が多い大規模問題で、計算コストを抑えつつ良い精度を引き出すのに最も適した手法はどれか。

  1. GridSearch (全組合せ網羅)
  2. RandomSearch または ベイズ最適化
  3. デフォルト設定のまま
  4. 手動で1つずつ調整
こたえを見る

正解: 2. RandomSearch または ベイズ最適化

RandomSearch または ベイズ最適化。 候補が多いと GridSearch は組合せ爆発で実用的でなくなります。 RandomSearch はランダムサンプリング、ベイズ最適化(Optuna等)は過去試行から学習し効率的に良い組合せを発見します。

桜井もも・若葉みどり先生のイラスト。ミニゴルフで真剣にパット

この記事の関連書籍

Amazonアソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。

この記事について

データサイエンティスト検定スタディが作成した教材です。運営について・記事の作り方

試験についてはこちらをご覧ください: データサイエンティスト協会 公式サイト

この記事を共有