グリッドサーチとは|その意味・目的や代替手法

この記事では、機械学習における「グリッドサーチ」について、その意味・目的や利点・問題点、主な代替手法を具体例をもとに解説します。

グリッドサーチとは何か

グリッドサーチの意味とその目的

グリッドサーチ (grid search) は、機械学習において、予測モデルのパラメータをチューニングし、モデルの汎化性能(未知のデータに対する予測能力)を向上させるための手法です。

「グリッド (grid)」 は「格子」を意味しますが、グリッドサーチでは、候補となるパラメータを列挙し、その全ての組み合わせに対して総当たりでモデルの学習と評価を繰り返すことで、最適なパラメータの組み合わせを見つけ出します

例として、決定木系の学習器を用いて予測モデルの構築を行うケースで、学習率 (eta:探索点=0.1, 0.05, 0.01) と決定木の深さ (max_depth:探索点=3, 4, 5) の2つのパラメータをチューニングするケースを考えます。

この場合、グリッドサーチでは、学習用データと評価用データを分割した上で、以下の全てのパラメータの組み合わせについて学習用データで学習を行います。そして、それぞれについて評価用データで性能評価を行い、最も良いスコアを記録したものを最適な組み合わせのモデルとして選択します。

max_depth=3 max_depth=4 max_depth=5
eta=0.1

モデル (eta=0.1,
max_depth=3)

モデル (eta=0.1,
max_depth=4)
モデル (eta=0.1,
max_depth=5)
eta=0.05

モデル (eta=0.05,
max_depth=3)

モデル (eta=0.05,
max_depth=4)
モデル (eta=0.05,
max_depth=5)
eta=0.01

モデル (eta=0.01,
max_depth=3)

モデル (eta=0.01,
max_depth=4)
モデル (eta=0.01,
max_depth=5)

交差検証を用いたグリッドサーチ

グリッドサーチによるパラメータ探索は、多くのケースで交差検証(クロスバリデーション:cross-validation)と組み合わせて用いられます。

交差検証は、予測モデルの汎化性能を推定するための手法の一つです。学習データをランダムに分割し、そのうちの一つをモデルの評価、その他をモデルの学習に使用する「ホールドアウト法」による分割を複数回行い、各回の学習と評価に用いるデータを順番に入れ替えながらモデルの学習と評価を行います。

一般的に、予測モデルの性能に対する評価スコアは、評価用データの分割のされ方によって変動します。そのため、データを学習用と評価用に一度だけ分割して性能評価を行う方法では、たまたま評価用データに対して都合よく適合したモデルが、最も良いモデルとして選ばれてしまうリスクがあります。

そこで、グリッドサーチの探索対象である各パラメータの組み合わせに対して交差検証を行うことで、より信頼性の高い性能評価とパラメータの選択が可能となります。

以下の例は、機械学習において広く使用されるiris(あやめ)のデータセットに対して、サポートベクターマシン (SVM) を用いて、交差検証と組み合わせたグリッドサーチでパラメータの探索を行った際のスコアの出力例です。予測モデルでは、ガクや花弁の長さ・幅といったデータをもとに、対象のサンプルが3種類の「あやめ」のどれに該当するかを予測しています。

グリッドサーチ

Muller, Guide(2017)をもとに、Intelligence In Society作成

ここでは、カーネルのバンド幅 (gamma) と、正則化パラメータ (C) について、共に探索点を[0.001, 0.01, 0.1, 1, 10, 100]の6つとして、パラメータの各組み合わせに対する交差検証による平均スコア(正答率 :multi-class accuracy)を算出しています。

グリッドサーチの結果、gamma=0.1、C=10のスコア(正答率)が0.97と最も高くなっており、この組み合わせがモデルの最適なパラメータセットとして選択されます。

交差検証を用いたグリッドサーチは、scikit-learnのGridSearchCVクラスなどを用いることで実施することができます。実装方法の詳細はscikit-learnのレファレンスサイト (API Reference – GridSearchCV) をご覧ください。

グリッドサーチの問題点と対処法

グリッドサーチの利点と問題点

グリッドサーチは、探索対象のパラメータの中から高い確率で最適な組み合わせを選択できる点や、その分かりやすさが利点である一方、探索の組み合わせ数が膨大になり、計算コストが非常に大きくなり得るという問題があります。

上記の例では、探索対象のパラメータは2つのみでしたが、実際に予測モデルのパラメータチューニングを行う際は、より多くのパラメータが対象となることが一般的です。仮に上記の例で探索対象のパラメータ数が5つだった場合、それぞれに6つの探索点があるケースでは、探索対象のパラメータの組み合わせは6^5=7,776通りとなります。

このように、グリッドサーチでは探索の組み合わせ数が膨大になりやすいことから、予め最適なパラメータの候補を絞ることが可能なケースなどでは有効である一方、そうでないケースでは、(交差検証と組み合わせない場合でも)計算コストの大きさが制約になるという問題点があります。

このようなグリッドサーチの問題点に対して、以下のような代替手法が提案されています。

代替手法①:ランダムサーチ

ランダムサーチ (random search) は、探索対象の各パラメータについてそれぞれ探索点(または範囲)を設定する点はグリッドサーチと同じである一方、グリッドサーチのようにその全ての組み合わせを探索するのではなく、パラメータごとにランダムに選んだ組み合わせのみを探索します。

探索は事前に設定した回数が行われるため、仮に上記の例を対象に探索回数を10回としてランダムサーチを行った場合、全36通りの組み合わせの中からランダムに選ばれた10通りに対してモデルの学習と評価が行われ、その中から最も良いスコアのモデルが選択されます。以下の表は、ランダムサーチのイメージを表したものです。

グリッドサーチのように、探索対象のパラメータの中から最適な組み合わせを選択することができない可能性がある一方、同じ探索回数では、ランダムサーチの方がグリッドサーチに比べて探索効率が高いとされています。そのため、実施可能な探索回数が限られている中で出来るだけ良いパラメータの組み合わせを選択する、というケースにおいて有用な手法と言えます。

ランダムサーチ

作成:Intelligence In Society

ランダムサーチは、scikit-learnのRandomizedSearchCVクラスなどを用いることで実施することができます。実装方法の詳細はscikit-learnのレファレンスサイト (API Reference – RandomizedSearchCV) をご覧ください。

代替手法②:ベイズ最適化

ベイズ最適化 (Bayesian Optimization) は、探索対象の各パラメータについてそれぞれ探索点(または範囲)を設定する点はランダムサーチと同じである一方、ランダムに選んだパラメータの組み合わせを探索するのではなく、それまでに探索したパラメータの情報をもとに次に探索する組み合わせを選択します

既に探索したパラメータの情報から次に探索する組み合わせを選ぶ際には、ベイズ確率の考え方が用いられ、少ない計算コストで効率よく最適化を行うことで、ランダムサーチに比べてより高い精度でパラメータのチューニングを行うことが期待できます。

以下は、ベイズ最適化のフレームワークの一つであるOptunaを用いて、パラメータの探索を行った結果を可視化したものです。ここでは、scikit-learnのcalifornia housing dataset(カリフォルニアの住宅価格データセット)を用いて、地域の平均所得・平均築年数・人口といった変数から住宅価格の中央値を予測するモデルを構築しています。

先ほどと同じサポートベクターマシン (SVM) を用いて、カーネルのバンド幅 (gamma) と、正則化パラメータ (C) について、共に探索点を[0.001~100の範囲]とした上で、30回の探索を行っています。

ベイズ最適化_Optuna

作成:Intelligence In Society

縦軸のObjectiveは評価指標のスコアを表し、ここではMean Squared Error(平均二乗誤差)に設定されています。横軸のTrialは探索回数を表します。ある時点までで実施済みの探索の中でのスコアの最小値が紫色の線で示されており、探索回数を重ねるにつれて、スコアの最小値が段階的に更新されていく様子が見て取れます。

Optunaによるベイズ最適化の実行方法の詳細は、Optunaのレファレンスサイト (Optuna: ハイパーパラメータ最適化フレームワーク) をご覧ください。

ここまで、機械学習における「グリッドサーチ」について、その意味・目的や利点・問題点、主な代替手法を解説しました。

当記事に関連するトピックについての詳細は、以下のページをご覧ください。

また、機械学習に関する全ての記事は以下のページからご覧いただけます。

参考文献:
◦scikit-learn “API Reference – sklearn.model_selection – GridSearchCV” https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html (2026年7月7日最終閲覧)
◦scikit-learn “API Reference – sklearn.model_selection – RandomizedSearchCV” https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.RandomizedSearchCV.html (2026年7月7日最終閲覧)
◦Optuna “Optuna: ハイパーパラメータ最適化フレームワーク” https://docs-ja.optuna.org/ (2026年7月7日最終閲覧)
◦Andreas C. Muller、Sarah Guido (2017)『Pythonではじめる機械学習―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎』O’Reilly Japan
◦門脇大輔,阪田隆司,保坂桂佑,平松雄司 (2019)『Kaggleで勝つデータ分析の技術』, 技術評論社

関連記事