本文へ移動

G検定(ジェネラリスト検定)

らんだむさーち

ランダムサーチ

Random Search

ハイパーパラメータの各設定を、あらかじめ指定した分布から無作為に抽出して探索する手法。試行回数を自由に決められ、性能に効かないパラメータが混じっても探索の効率が落ちない。

詳しい説明

どんな手法か

ランダムサーチは、機械学習モデルのハイパーパラメータを探索する手法の一つです。パラメータのそれぞれの設定を、あらかじめ指定した分布から無作為に抽出し、抽出した候補を評価して良い設定を探します。scikit-learnでは RandomizedSearchCV という名前で実装されています。

与えられた値のすべての組み合わせを尽くして調べるグリッドサーチと対比されることが多く、scikit-learnの公式ドキュメントも、パラメータ探索の汎用的な方法としてこの二つを並べています。同ドキュメントは、グリッドを使う方法が現在もっとも広く使われているとしたうえで、ほかの探索方法にはより好ましい性質があると述べています。

すべての組み合わせを調べる探索に対する2つの利点

1. 予算を独立に選べる: 探索にかける予算、つまり何回試すかを、パラメータの数や各パラメータが取りうる値の数とは無関係に決められます。
2. 効かないパラメータを足しても効率が落ちない: 性能に影響しないパラメータを探索の対象に加えても、探索の効率は下がりません。

計算予算の指定

ランダムサーチでは、抽出する候補の数、言い換えればサンプリングの回数を計算予算として指定します。scikit-learnでは n_iter というパラメータがこの役割を持ちます。先に予算を決め、その回数だけ候補を抽出して評価する、という考え方です。

値の抽出のしかた

どのパラメータをどのように抽出するかは、パラメータと抽出方法を対応づけた辞書で指定します。書き方はグリッドサーチでのパラメータの指定とよく似ています。パラメータごとに、次の2通りのどちらかを選べます。

  • 離散的な値のリスト: 候補の値を並べたリストを渡すと、その中から一様に抽出されます。
  • 連続的な分布: 取りうる値の分布を渡すと、その分布に従って値が抽出されます。例えば、パラメータCに対して、scipy.statsの指数分布(スケールを100としたもの)を指定できます。こうすると、固定した離散的なリストから選ぶのではなく、ある範囲にわたって連続的に値を抽出できます。

このように、候補を区切ったリストだけでなく連続的な分布も指定できることが、各設定を分布から抽出するというランダムサーチの考え方をよく表しています。G検定では、シラバス2024のキーワードに含まれています。

試験で問われること

G検定

  • ランダムサーチは、ハイパーパラメータの各設定を、あらかじめ指定した分布から無作為に抽出して評価する探索手法であり、与えられた値のすべての組み合わせを尽くすグリッドサーチと対比される。
  • 探索にかける予算、つまり試行回数を、パラメータの数や各パラメータが取りうる値の数とは独立に選べることが、すべての組み合わせを調べる探索に対するランダムサーチの1つ目の利点である。
  • 性能に影響しないパラメータを探索の対象に追加しても探索の効率が落ちないことが、すべての組み合わせを調べる探索に対するランダムサーチの2つ目の利点として挙げられる。
  • 抽出する候補の数、すなわちサンプリングの回数を計算予算として先に指定し、その回数だけ候補を評価する。scikit-learnではn_iterというパラメータでこの予算を指定する。
  • パラメータごとに、離散的な値のリストから一様に抽出する方法と、指数分布のような連続的な分布からある範囲にわたって値を抽出する方法のどちらかを指定でき、固定したリストに縛られずに値を選べる。

最終更新日: 2026/09/23