最適なハイパーパラメーターを決めるための方法として、あらかじめハイパーパラメーターが取りうる値を複数用意して、ハイパーパラメーターがその各値をとる時のモデルの予測精度を計算していけば、予測精度を最も高くするハイパーパラメーターを候補から見つけることができる。用意するハイパーパラメーターを細かくすれば指定すれば、その分だけ正確で最適なハイパーパラメーターを見つけることができる。
1 つのモデルに複数のハイパーパラメーターが存在する場合がある。例えば、SVM を利用するとき、カーネルを RBF としたときに、ハイパーパラメーターは C と γ からなる。この場合、C と γ の取りうる値を複数用意して、すべての組み合わせに対して総当たりで予測精度を計算していけば、最適な C と γ の組み合わせを見つけることができる。
scikit-learn では、このようなグリッドサーチを簡単に行う関数 GridSearchCV
が用意されている。使い方として、まずモデルを作成するためのパイプラインを作成し、次に各ハイパーパラメーターの取りうる値の候補を用意して、これらを GridSearchCV
に与えるだけでよい。
次の例は、乳がんのデータセットに対して、SVM を使用した予測モデルを作成する例である。SVM のカーネルを linear、RBF、sigmoid の 3 種類を確かめて最適なカーネルを決める。また、各カーネル関数を選んだ時、linear ならばハイパーパラメーターとして C が存在し、RBF と sigmoid ならばハイパーパラメーターとして C と γ が存在するので、このようなハイパーパラメーターの最適な値も合わせて決める。
グリッドサーチするハイパーパラメーターの組み合わせが多い場合、グリッドサーチは非常に時間がかかる。そのため、まず、各ハイパーパラメーターの値を粗く決めて一度グリッドサーチを実行する。次に、一回目のグリッドサーチの結果を見て、ハイパーパラメーターの値を少し細かくして再度グリッドサーチを実行する。このようにグリッドサーチを何段階にも分けて、探索するハイパーパラメーターの範囲を徐々に縮めていった方が、グリッドサーチに利用する合計の時間が短くなる場合がある。