-
グリッドサーチ(Grid Search): グリッドサーチは、指定したハイパーパラメータの組み合わせをすべて試す方法です。しかし、組み合わせが増えると計算コストが高くなるため、探索空間が小さい場合に有効です。
from sklearn.model_selection import GridSearchCV from sklearn.svm import SVC param_grid = {'C': [0.1, 1, 10], 'kernel': ['linear', 'rbf']} svm = SVC() grid_search = GridSearchCV(svm, param_grid) grid_search.fit(X, y)
-
ランダムサーチ(Random Search): ランダムサーチは、指定したハイパーパラメータの範囲内でランダムに試行する方法です。グリッドサーチよりも効率的に最適解を見つけることができます。
from sklearn.model_selection import RandomizedSearchCV from sklearn.ensemble import RandomForestClassifier param_dist = {'n_estimators': [10, 100, 1000], 'max_depth': [None, 5, 10]} rf = RandomForestClassifier() random_search = RandomizedSearchCV(rf, param_dist) random_search.fit(X, y)
-
ベイズ最適化(Bayesian Optimization): ベイズ最適化は、事前の情報を利用して次の試行点を選択する方法です。ガウス過程を使用してハイパーパラメータ探索空間をモデル化し、最適なハイパーパラメータを推定します。
from skopt import BayesSearchCV from sklearn.svm import SVC param_space = {'C': (0.1, 10.0, 'log-uniform'), 'kernel': ['linear', 'rbf']} svm = SVC() bayes_search = BayesSearchCV(svm, param_space) bayes_search.fit(X, y)
-
Hyperopt: Hyperoptは、ベイズ最適化を実装したPythonのライブラリです。ベイズ最適化のアルゴリズムを柔軟にカスタマイズできます。
from hyperopt import hp, fmin, tpe from sklearn.ensemble import GradientBoostingRegressor space = {'n_estimators': hp.choice('n_estimators', [10, 50, 100]), 'learning_rate': hp.loguniform('learning_rate', -3, 0)} def objective(params): gbr = GradientBoostingRegressor(n_estimators=params['n_estimators'], learning_rate=params['learning_rate']) score = cross_val_score(gbr, X, y, cv=5).mean() return -score best = fmin(objective, space, algo=tpe.suggest, max_evals=100)
ハイパーパラメータのチューニングは、機械学習モデルのパフォーマンス向上に重要な役割を果たします。ベイズ推論を用いたハイパーパラメータのチューニングは、最適なハイパーパラメータを効率的に見つけるための強力な手法です。以下では、Pythonを使用してベイズ推論を用いたハイパーパラメータのチューニング方法をいくつか紹介します。
-
グリッドサーチ(Grid Search): グリッドサーチは、指定したハイパーパラメータの組み合わせをすべて試す方法です。しかし、組み合わせの数が増えると計算コストが高くなるため、探索空間が小さい場合に適しています。
from sklearn.model_selection import GridSearchCV from sklearn.svm import SVC param_grid = {'C': [0.1, 1, 10], 'kernel': ['linear', 'rbf']} svm = SVC() grid_search = GridSearchCV(svm, param_grid) grid_search.fit(X, y)
-
ランダムサーチ(Random Search): ランダムサーチは、指定したハイパーパラメータの範囲内でランダムに試行する方法です。グリッドサーチよりも効率的に最適解を見つけることができます。
from sklearn.model_selection import RandomizedSearchCV from sklearn.ensemble import RandomForestClassifier param_dist = {'n_estimators': [10, 100, 1000], 'max_depth': [None, 5, 10]} rf = RandomForestClassifier() random_search = RandomizedSearchCV(rf, param_dist) random_search.fit(X, y)
-
ベイズ最適化(Bayesian Optimization): ベイズ最適化は、事前の情報を利用して次の試行点を選択する方法です。ガウス過程を使用してハイパーパラメータ探索空間をモデル化し、最適なハイパーパラメータを推定します。
from skopt import BayesSearchCV from sklearn.svm import SVC param_space = {'C': (0.1, 10.0, 'log-uniform'), 'kernel': ['linear', 'rbf']} svm = SVC() bayes_search = BayesSearchCV(svm, param_space) bayes_search.fit(X, y)
-
Hyperopt: Hyperoptは、ベイズ最適化を実装したPythonのライブラリです。ベイズ最適化のアルゴリズムを柔軟にカスタマイズできます。
from hyperopt import hp, fmin, tpe from sklearn.ensemble import GradientBoostingRegressor space = {'n_estimators': hp.choice('n_estimators', [10, 50, 100]), 'learning_rate': hp.loguniform('learning_rate', -3, 0)} def objective(params): gbr = GradientBoostingRegressor(n_estimators=params['n_estimators'], learning_rate=params['learning_rate']) score = cross_val_score(gbr, X, y, cv=5).mean() return -score best = fmin(objective, space, algo=t