AI資格ドリル
資格を選ぶ

用語比較

GridSearchCVとRandomizedSearchCVの違い|全探索とランダム探索(Python3データ分析)

パラメータの値の組み合わせをすべて試すのが GridSearchCV、分布や候補から決まった回数だけ抽出して試すのが RandomizedSearchCV です。

どちらも交差検証で評価します。違いは、試す数を何で決めるかです。

この記事の根拠と出典

各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。

GridSearchCVとRandomizedSearchCVの要点

GridSearchCV

公式の説明は「指定したパラメータ値に対する推定器の網羅的な探索」。param_grid の値の組み合わせを交差検証つきで試す。

RandomizedSearchCV

公式の説明は「ハイパーパラメータのランダム探索」。すべては試さず、固定された数の設定を分布から抽出する。回数は n_iter で決める。

違いを表で確認

比較軸GridSearchCVRandomizedSearchCV
試す組み合わせparam_grid の値の組み合わせをすべて試すすべては試さず、n_iter 個の設定を抽出して試す。n_iter の既定は 10
パラメータの渡し方param_grid に、名前をキー、試す値のリストを値にした辞書(または辞書のリスト)を渡すparam_distributions に、分布またはリストを値にした辞書を渡す。分布は rvs メソッドを持つもの(scipy.stats の分布など)
計算時間の決まり方候補の数の積で決まる。パラメータを足すと増えるn_iter で決まる。公式は、n_iter が実行時間と解の質のトレードオフを決めると説明している
乱数探索に乱数の引数はないrandom_state がある。リストからの一様な抽出の乱数で、整数を渡すと再現できる

Python3エンジニア認定データ分析試験の学習に使う書籍(Amazon)

PR

ほかの資格を含む参考書・問題集の一覧を見る

どこで迷っているかを切り分ける

01

候補の値が少なく、全部の組み合わせを確かめたい人

GridSearchCV を使います。param_grid に並べた組み合わせがすべて評価されます。

02

C やγのように、連続した値の範囲から探したい人

RandomizedSearchCV を使います。公式は、連続値のパラメータには連続分布を使うことを強く推奨しています。

03

探索に時間をかけられず、回数の上限を決めたい人

RandomizedSearchCV の n_iter で試す回数を決めます。回数を増やすほど解の質は上がり得ますが、実行時間も増えます。

具体例で使い分ける

例 1

GridSearchCV: 組み合わせの数

param_grid が {'C': [1, 10, 100], 'kernel': ['linear', 'rbf']} の場合を考えます。

  • 候補は C が 3 通り、kernel が 2 通りで、組み合わせは 3 × 2 = 6 通りです。
  • cv が 5 分割なら、6 通りのそれぞれを 5 回ずつ当てはめて評価します。

結論: GridSearchCV は、候補の積の数だけ試す。

例 2

RandomizedSearchCV: 試す回数

候補の組み合わせが数百通りあり、n_iter を指定しない場合を考えます。

  • n_iter の既定は 10 なので、抽出された 10 個の設定だけが評価されます。
  • リストだけで渡すと重複なしの抽出、分布を1つでも含むと重複ありの抽出になります。

結論: RandomizedSearchCV は、候補の総数によらず n_iter 回だけ試す。

例 3

探索のあとに使う属性

どちらも fit のあとで、最良の組み合わせを取り出します。

  • best_params_ で最良のパラメータを取り出せます。
  • refit=True(既定)なら、最良のパラメータで全データを再学習し、best_estimator_ に入ります。そのまま predict も使えます。

結論: 取り出し方は同じ。違うのは探索のしかただけ。

問題文から答えを選ぶ手順

  1. 1

    候補の数を数える

    値の組み合わせを数えて、全部試せる時間かを確かめます。

  2. 2

    パラメータの種類を確認する

    連続値の範囲から探すなら、分布を渡せる RandomizedSearchCV が向きます。

  3. 3

    再現性を確認する

    RandomizedSearchCV は random_state に整数を渡すと、同じ結果を再現できます。

試験での見分け方

  • 1GridSearchCV は、指定した値の組み合わせをすべて交差検証で試す。
  • 2RandomizedSearchCV は、n_iter 個の設定を抽出して試す。n_iter の既定は 10。
  • 3RandomizedSearchCV は、リストなら重複なし、分布を含むなら重複ありで抽出する。
  • 4どちらも refit=True が既定で、best_estimator_ に再学習した推定器が入る。

誤答しやすい選択肢

RandomizedSearchCV も全部の組み合わせを試すと考える

修正: 公式は、すべての値は試さず、固定された数の設定を抽出すると説明しています。回数は n_iter です。

GridSearchCV にも n_iter があると考える

修正: GridSearchCV の引数に n_iter はありません。試す数は param_grid の組み合わせで決まります。

最良の推定器は、別に再学習が必要だと考える

修正: refit の既定は True で、最良のパラメータで全データを再学習した推定器が best_estimator_ に入ります。

確認問題

Q1RandomizedSearchCV で試す設定の数を決める引数は?

答え: n_iter

公式は、n_iter が抽出するパラメータ設定の数で、実行時間と解の質のトレードオフを決めると説明しています。

Q2RandomizedSearchCV の n_iter の既定値は?

答え: 10

公式のシグネチャでは n_iter=10 です。

Q3GridSearchCV の説明として公式が使う表現は?

答え: 指定したパラメータ値に対する網羅的な探索

公式の冒頭の説明です。param_grid の組み合わせをすべて試します。

Q4refit=True のとき、再学習した最良の推定器が入る属性は?

答え: best_estimator_

公式は、再学習した推定器が best_estimator_ に入り、predict を直接使えると説明しています。

到達チェック

  • GridSearchCV と RandomizedSearchCV の探索の違いを言える
  • n_iter の意味と既定値を言える
  • param_grid と param_distributions の違いを言える
  • refit と best_estimator_ の関係を言える

同じ資格で次に知りたいこと

よくある質問

QGridSearchCV と RandomizedSearchCV の違いは?

A

GridSearchCV は指定した値の組み合わせをすべて試します。RandomizedSearchCV は、分布や候補から n_iter 個の設定を抽出して試します。

Qn_iter の既定値は?

A

RandomizedSearchCV の n_iter の既定値は 10 です。

Q最良のパラメータはどう取り出しますか?

A

どちらも fit のあとに best_params_ で取り出せます。refit=True なら best_estimator_ で再学習した推定器も使えます。

Qデータ分析試験の範囲?

A

本サイトの第6章scikit-learnで扱います。出題の形式や範囲は、受験前に公式の案内で確認してください。

次に見る比較

執筆: AI資格ドリル編集部(運営者情報を見る)