論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
グリッドサーチ
Grid Search
ML基礎

🔖 キーワード索引

ハイパーパラメータ交差検証GridSearchCVscoringparam_gridbest_params_RandomizedSearchCVBayesian OptimizationOptuna計算コスト

別名・略称:(なし)

💡 30秒で分かる結論

グリッドサーチ(Grid Search):ハイパーパラメータの組合せを網羅的に試す手法

📍 あなたが今見ているもの

機械学習モデルには 「学習で決まる重み」(例:回帰係数)「人間が指定する設定値」(ハイパーパラメータ) があります。 Ridge 回帰の α、 ランダムフォレストの n_estimators、 SVM の Cgamma など。 これらを「総当たり」で試して最良を選ぶのがグリッドサーチ。 論文の 「best parameters were selected via grid search with 5-fold CV」 という記述が出てきたら、 これのことです。

🎨 直感で掴む

グリッドサーチの動作イメージ

Ridge回帰の正則化強度 α を選びたいとします。 候補:[0.01, 0.1, 1, 10, 100]

  1. α=0.01 で学習 → 5-fold CV で平均 RMSE を測定
  2. α=0.1 で学習 → 平均 RMSE を測定
  3. 同様に α=1, 10, 100 まで全て測定
  4. 5 つの RMSE の中で 最小のもの に対応する α を採用

2 パラメータなら格子状(grid)に組合せが並ぶので「グリッドサーチ」。

α \ C0.010.1110
linear0.520.480.410.45
rbf0.550.500.430.47

上記の例なら (C=1, kernel=linear) で CV-RMSE = 0.41 が最小なのでこれを採用。

📐 定義 / 数式

【グリッドサーチの定式化】
$$\theta^* = \arg\min_{\theta \in \Theta_{\text{grid}}} \frac{1}{K} \sum_{k=1}^{K} L(\mathcal{D}_k^{\text{val}}, \hat{f}_{\theta}(\mathcal{D}_k^{\text{train}}))$$
$\Theta_{\text{grid}}$ は探索する格子、 K は CV の分割数
【総組合せ数】
$$|\Theta_{\text{grid}}| = \prod_{j=1}^{p} |\Theta_j|$$
パラメータ数 p の積で組合せが指数的に増える(curse of dimensionality)

🔬 記号・式を言葉で読み解く

$\theta$
ハイパーパラメータベクトル。 例:$(\alpha, C, \gamma)$
$\Theta_{\text{grid}}$
ユーザが指定した候補値の格子。 例:$\{0.01, 0.1, 1, 10\}^3$
$K$
交差検証の分割数。 通常 5 か 10。
$L$
評価指標。 回帰なら RMSE/MAE、 分類なら accuracy/F1。

🧮 実データで計算してみる

SSDSE データで Ridge 回帰の最適な α を選ぶ:

α5-fold CV の RMSE 平均
0.010.512
0.10.488
1.00.475 ← 最小
100.503
1000.621

α=1.0 が最良 → モデル最終化はこの α で全訓練データを使って再学習し、 ホールドアウトしておいたテストで最終評価。

🐍 Python 実装

SSDSE-B-2026(47 都道府県・2023 年データ)を題材にした最小コード:

1
2
3
4
5
6
7
8
9
from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import Ridge

param_grid = {'alpha': [0.01, 0.1, 1, 10, 100]}
gs = GridSearchCV(Ridge(), param_grid, cv=5, scoring='neg_root_mean_squared_error')
gs.fit(X_train, y_train)

print('Best:', gs.best_params_, '| CV RMSE:', -gs.best_score_)
best_model = gs.best_estimator_

⚠️ よくある落とし穴

⚠️ テストデータでハイパラを決める
テストが擬似的に訓練に使われ、 真の汎化性能を過大評価。 → 訓練データ内で CV を回す。
⚠️ 組合せ数の爆発
4パラメータ×10候補で 10,000 通り。 計算量が現実的でない。 → RandomizedSearch または Optuna。
⚠️ 離散候補しか試せない
α=0.5 がベストでも、 候補が [0.1, 1, 10] だと見つからない。 → 連続最適化(ベイズ最適化)の方が効率的。
⚠️ CV の foldごとに前処理を fit していない
標準化を全訓練データで先に fit するとリークが起きる。 → Pipeline 内で組む。
⚠️ scoring 指定ミス
GridSearchCV はデフォルトでスコアを最大化する。 損失系の指標は neg_ プレフィックスを使う。

🌐 関連手法・この用語を使う論文

📄 予測モデルを使う論文全般
ハイパーパラメータ調整は本サイトの多くの予測モデル論文で実施されています。

🔖 キーワード索引

グリッドサーチGrid SearchHPOクロスバリデーションRandomSearchOptunaBayesian OptGridSearchCV

本ページは グリッドサーチ(Grid Search)を 12 のセクションで多角的に解説します。 上のチップは検索・関連語の手がかりです。 以下のリンクで各セクションに直接ジャンプできます:

💡 30秒結論📍 文脈🎨 直感📐 数式🔬 記号読み解き🧮 実値計算🐍 Python 実装⚠️ 落とし穴🌐 関連手法🔗 関連用語📚 グループ教材

💡 30秒で分かる結論

📍 文脈 — どこで使う概念か

グリッドサーチは ハイパーパラメータの候補を格子状に並べ、 全組合せを試して最良を選ぶ手法。 シンプルで実装容易だが、 候補数が指数的に増えるため 3–4 ハイパラまでが現実的。 それ以上は Random Search や Bayesian Optimization に切り替える。

🎨 直感で掴む — 具体例で理解する

Grid Search は「地図上の格子点を全部歩いてみる」イメージ。 確実だが時間がかかる。 一方、 ハイパラの一部だけが性能に影響することが多い(Bergstra & Bengio 2012)ため、 Random Search の方が同じ計算量で良い解に到達することが知られる。 とはいえ Grid は「結果が再現的・説明しやすい」ため、 候補が少ない時の標準。

📐 数式・定義

グリッドサーチを数式 / 形式定義で表す:

$$\hat{\boldsymbol{\lambda}} = \arg\min_{\boldsymbol{\lambda} \in \Lambda} \; \text{CV-Loss}\!\big(\text{model}_{\boldsymbol{\lambda}}\big)$$

ハイパーパラメータ集合 $\Lambda$ の中で、 交差検証損失を最小にする組合せ $\hat{\boldsymbol{\lambda}}$ を選ぶ。 Grid は $\Lambda$ を直積(格子)で構成する。

🔬 数式を言葉で読み解く

上の数式に出てきた記号を 1 つずつ解説します。 数式が出てくる試験問題(統計検定・G 検定・基本情報)では、 各記号の意味を答えられるかが分岐点:

記号意味
$\boldsymbol{\lambda}$ハイパーパラメータベクトル
$\Lambda$候補集合(格子)
CV-Loss交差検証損失
$\hat{\boldsymbol{\lambda}}$選ばれた最適ハイパラ

🧮 SSDSE-B 実値計算 — 都道府県データで手を動かす

SSDSE-B-2026 の 「総人口 → 出生数」回帰で、 ランダムフォレストの 3 ハイパラ(n_estimators / max_depth / min_samples_leaf)を Grid Search し、 最良 R² を出すパラメータを発見する。

使用データ:SSDSE-B-2026.csv(独立行政法人 統計センター提供、 47 都道府県 × 100 超の社会経済指標)。 出典

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import GridSearchCV

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=1)
df = df.rename(columns={df.columns[2]: 'pref'})

X = df[['A1101', 'A1303', 'F3101']].fillna(0).values
y = df['A4101'].values

param_grid = {
    'n_estimators':     [50, 100, 200],
    'max_depth':        [3, 5, 7, None],
    'min_samples_leaf': [1, 2, 4],
}
gs = GridSearchCV(RandomForestRegressor(random_state=42),
                  param_grid, cv=5, scoring='r2', n_jobs=-1)
gs.fit(X, y)
print(f'Best params: {gs.best_params_}')
print(f'Best CV R² : {gs.best_score_:.4f}')

▲ 上記コードはそのまま実行可能。 CP932 エンコーディング・skiprows=1(英語ヘッダ行をスキップ)・列名の英数字コード(A1101 = 総人口 など)に注意。

🐍 Python 実装バリエーション

「グリッドサーチ」を扱う代表的なライブラリ別実装。 同じ目的でも書き方が違うため、 自分のプロジェクトの依存関係に合わせて選択する:

① pandas + numpy(最小依存)

1
2
3
4
5
6
7
8
import pandas as pd
import numpy as np

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=1)
df = df.rename(columns={df.columns[2]: 'pref'})

print('行数:', len(df), '列数:', df.shape[1])
print(df[['pref', 'A1101', 'A4101', 'A5101', 'F3101']].head())

② scikit-learn(学習・評価)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score, mean_squared_error
from sklearn.model_selection import train_test_split
import numpy as np

X = df[['A1101', 'A1303']].fillna(0).values
y = df['A4101'].values
X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.2, random_state=42)
m = LinearRegression().fit(X_tr, y_tr)
pred = m.predict(X_te)
print(f'R²   = {r2_score(y_te, pred):.3f}')
print(f'RMSE = {np.sqrt(mean_squared_error(y_te, pred)):.2f}')

③ scipy.stats(統計検定・分布)

1
2
3
4
5
6
7
8
9
from scipy import stats

# 例: 2 変数の Pearson 相関 + p 値
r, p = stats.pearsonr(df['A1101'], df['A4101'])
print(f'相関係数 r = {r:.3f}, p 値 = {p:.2e}')

# 例: 1 標本 t 検定(平均が一定値と異なるか)
t, p = stats.ttest_1samp(df['A4101'], popmean=df['A4101'].mean())
print(f't = {t:.3f}, p = {p:.3f}')

④ 可視化(matplotlib + seaborn)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import matplotlib.pyplot as plt
import seaborn as sns

fig, ax = plt.subplots(figsize=(8,5))
sns.scatterplot(data=df, x='A1101', y='A4101', ax=ax)
ax.set_xlabel('総人口')
ax.set_ylabel('出生数')
ax.set_title(f'{len(df)} 都道府県の関係')
plt.tight_layout()
plt.savefig('out.png', dpi=120)
plt.close()

⚠️ よくある落とし穴(5 件)

「グリッドサーチ」を実務・試験で扱うときに頻発する典型的なミスです。 各項目を 1 度読んでおけば 9 割の事故が防げます:

❌ 計算量爆発
3 ハイパラ × 各 5 値 = 125 通り、 さらに CV=5 で 625 学習。 候補は計画的に絞る。
❌ 評価データへの過適合
Grid を CV 無しで Test スコアで決めると、 Test に過適合。 必ず CV を回す。
❌ 無関係ハイパラを混ぜる
性能に効かないハイパラを格子に入れると無駄。 事前に感度分析を。
❌ 離散値だけで離散化が粗い
学習率 [0.001, 0.01, 0.1] のような対数スケールを使うか、 Random Search で連続探索。
❌ ベストの再現性
Grid 結果は random_state を固定しないと毎回ブレる。 シード固定 + n_jobs=1 で完全再現。

📌 まとめカード — 試験前 1 分復習

用語グリッドサーチ
英語Grid Search
カテゴリML基礎
一言定義
出題されやすい論点隣接概念との違い・典型手法・落とし穴
使用データ例SSDSE-B-2026.csv(47 都道府県社会経済指標)

🗓 歴史・年表

本用語の主要なマイルストーン:

出来事
1990sハイパラ網羅探索の概念定着
2007scikit-learn が GridSearchCV を実装
2012Random Search が Grid を上回る(Bergstra & Bengio)
2013ベイズ最適化(Spearmint)
2019Optuna 公開で TPE が標準化

📊 比較表 — 同カテゴリの主要選択肢

「グリッドサーチ」と関連する手法・概念を比較しておくと、 使い分けに迷わない:

項目特徴補足
Grid Search格子全列挙再現性・解釈容易
Random Search確率的サンプリング効率良し・連続値可
Bayesian Opt (TPE)事前分布更新少 trial で良解
Hyperband / BOHB早期打切 + Bayes深層学習で標準
Evolutionary遺伝的アルゴ並列性高い

❓ よくある質問 (FAQ)

「グリッドサーチ」について試験対策・実務で頻出する質問とその回答:

Q. Grid と Random どちらが速い?
A. 同じ計算予算なら Random が良い解に届きやすい。 Bergstra 2012 が古典論文。
Q. Optuna は何が違う?
A. TPE で過去結果から有望領域を絞る。 早期打切(Pruner)も標準装備。
Q. CV を何 fold に?
A. 5 fold が定番、 データ少なければ 10 fold、 多ければ 3 fold で時間短縮。
Q. ベスト解の再現性は?
A. random_state + n_jobs=1 で完全再現。 並列実行は順序依存性に注意。
Q. 多目的最適化はできる?
A. Optuna NSGA-II で精度・コスト・公平性のパレートフロンティアを得られる。

📝 実践演習 — 手を動かして定着

本ページの理解を確認する 5 問の練習問題です。 紙とペン、 もしくは Python で取り組んでみてください:

  1. 定義の言い換え:「グリッドサーチ」を 2 行以内で自分の言葉に書き直してください。 出典を引用しないこと。
  2. カテゴリ整理:「グリッドサーチ」が属するカテゴリ「ML基礎」内で、 隣接する 3 用語を挙げ、 それぞれとの違いを 1 文で書く。
  3. SSDSE-B-2026 で実装:本ページの「🧮 実値計算」のコードを実行し、 出力結果をスクリーンショットで残す。
  4. 落とし穴チェック:本ページの「⚠️ 落とし穴」5 件のうち、 自分が実際にやってしまいそうな 1 件を選び、 防止策を 100 字で書く。
  5. 応用シナリオ:「グリッドサーチ」を新しい問題(自分の業務 or 卒研テーマ)に当てはめると、 どの場面で何のために使えるか、 200 字で書く。

💡 ヒント:練習問題の答えは正解が 1 つではありません。 思考プロセスを書き残すことが学習効果を高めます。

🔬 発展トピック

「グリッドサーチ」を入門レベルで習得した次に進むべき発展テーマ:

① 理論的拡張

基本概念を 確率論・情報理論・最適化理論の観点で再定式化すると、 隣接する手法との理論的な関係が見えてきます。 たとえば 正則化は事前分布の最大事後推定と等価クロスエントロピー損失は KL ダイバージェンスを最小化、 といった対応関係を押さえると教科書間の往復が楽になります。

② 実装的拡張

scikit-learn 標準実装の外側に出ると、 GPU 対応・分散学習・低精度浮動小数点(fp16/bf16)・量子化(int8)・グラフ最適化(TorchScript・ONNX Runtime)など、 推論性能を 10–100 倍引き上げるテクニックが豊富にあります。 本番運用では モデル精度と推論コストのトレードオフを意識した実装が鍵。

③ 評価・解釈の拡張

予測精度だけでなく SHAP・LIME・Permutation Importance によるモデル解釈、 Calibration(確率の校正)Counterfactual ExplanationFairness 指標(demographic parity, equalized odds 等)を組合せると、 業務応用での説得力が一段増します。

④ 業界応用

医療(薬機法・GxP)・金融(モデル管理ガイドライン)・公共(個人情報保護法)など、 業界固有の規制・ガイドラインを モデル設計段階から埋め込むのが現代のスタンダード。 「グリッドサーチ」を業務適用するときは、 ドメインの専門家・法務との早期コラボレーションが成否を分けます。

📚 参考文献・学習リソース

「グリッドサーチ」をさらに深掘りするための一次資料・教科書・オンラインコース:

🔍 深掘り解説 — 中級者向け補強

Grid Search は「確実だが計算量が指数爆発する」探索法。 ハイパラが 3 個・各 5 値なら 125 通り、 さらに 5-Fold CV なら 625 学習。 これが現実的なのは古典 ML までで、 深層学習では Random Search や Optuna の方が効率良い。 Grid の真価は「結果の再現性・説明容易性」にあり、 学術論文や監査対象モデルで好まれる。

📋 代表シナリオ一覧

Grid Search のチューニング対象:

シナリオ概要データ/環境評価指標
Ridge / Lassoalpha(正則化強度)対数スケール 5-10 点10 倍ステップ
SVMC, gamma対数スケール 5 点 × 2 = 25RBF kernel が標準
Random Forestn_estimators, max_depth, min_samples_leaf3 × 4 × 3 = 36並列化可能
XGBoostlearning_rate, max_depth, n_estimatorsRandom Search 推奨Optuna が現代標準
Neural Netlr, batch_size, layersHyperband / BOHBGrid は非現実的

💼 ビジネス文脈での扱い

「グリッドサーチ」を業務適用する際は、 (1) 業務 KPI と評価指標の対応(2) データの収集・保管・更新コスト(3) 社内承認とコンプライアンス(4) 運用人員の確保(5) 失敗時のロールバック計画の 5 観点をプロジェクト計画書に必ず明記してください。 技術検証(PoC)の段階で 本番運用要件を逆算しておくと、 後の本番化フェーズで詰まる確率が下がります。

🧪 学習ロードマップ

  1. 定義の把握:本ページの「📐 数式・定義」を 3 回読む
  2. 具体例の理解:「🎨 直感で掴む」と「🧮 実値計算」のコードを実行する
  3. 落とし穴の暗記:「⚠️ 落とし穴」5+ 件を 1 行ずつ自分の言葉で要約
  4. 関連概念の整理:「🔗 関連用語」を前提・並列・発展でマインドマップに描く
  5. 応用問題:自分の業務 or 卒研テーマに本概念を適用してみる
  6. 説明テスト:他人に 3 分で説明できるか試す。 詰まったポイントを補強

🗂 ミニ用語集 — 本ページ頻出語

「グリッドサーチ」を学ぶ過程で頻出する関連語を 12 個、 短文定義でまとめます。 知らない語があれば各ページにジャンプしてください:

機械学習 (ML)
データからパターンを自動で学ぶ手法。 AI の中核技術。
深層学習 (DL)
多層ニューラルネットによる ML。 画像・言語で強い。
教師あり学習
入力と正解ラベルのペアから学習する枠組み。
教師なし学習
正解ラベルなしで構造を見つける学習。 クラスタリング等。
強化学習
環境との相互作用と報酬から最適行動を学ぶ。
汎化
学習データに含まれない未知データでも性能を出すこと。
過学習
Train データに適合しすぎ、 未知データで性能が落ちる現象。
交差検証 (CV)
データを K 分割し平均で評価。 小データのロバスト評価。
特徴量エンジニアリング
予測精度を上げるために変数を設計・変換する作業。
評価指標
RMSE・F1・AUC など、 モデル性能を測る尺度。
ハイパラ調整
学習で直接決まらない設定値を体系的に最適化する作業。
MLOps
ML モデルの本番化・運用・監視・再学習を統合する活動。

本用語集は 484 用語を 100 グループ教材と連動して整理しています。 周辺概念を 1 つずつ辿ると、 「グリッドサーチ」の位置づけと使い分けが立体的に理解できます。