0Pricing
Learn AI with Python · レッスン

グリッドサーチとランダムサーチ

GridSearchCV、RandomizedSearchCV、param_grid の設計、最良パラメータでの再フィットを扱います。

「グリッドサーチとランダムサーチ」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。

ハイパーパラメータを調整する理由

モデルには、ハイパーパラメータ(max_depthやCなど)があります。これらはデータから学習されるのではなく、学習前に設定します。適切な値を選ぶことで性能が大幅に向上するため、体系的に探索します。

手動調整は誤りが起こりやすい

手作業で値を試す方法は時間がかかり、偏りも生じやすくなります。自動探索と交差検証を組み合わせると、各候補を公平に評価し、再現性のある形で最適な組み合わせを見つけられます。

GridSearchCVの基礎

GridSearchCVはパラメータグリッド内のすべての組み合わせを試し、それぞれを交差検証で評価します。網羅的に探索するため、グリッド内で最良の組み合わせを保証します。

from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier

param_grid = {
    "n_estimators": [100, 200, 300],
    "max_depth": [4, 8, None],
}
gs = GridSearchCV(RandomForestClassifier(), param_grid, cv=5)
gs.fit(X, y)

組み合わせの爆発

グリッドサーチのコストは、すべての選択肢の数の積に、分割数を掛けた分だけ増加します。5つの値を取るパラメータが3つあり、5分割交差検証を行う場合、5*5*5*5 = 625回のフィッティングが必要です。グリッドはすぐに高コストになります。

GridSearchCVでのスコアリング

scoringパラメータで最適化する指標を選択します。不均衡データでは、デフォルトのaccuracyではなくf1やroc_aucを選びます。

from sklearn.model_selection import GridSearchCV

gs = GridSearchCV(
    RandomForestClassifier(),
    param_grid,
    cv=5,
    scoring="roc_auc",
)
gs.fit(X, y)

n_jobsによる並列化

各候補のフィッティングは独立しているため、n_jobs=-1を設定すると、すべてのCPUコアで並列実行できます。これにより、大規模なグリッドの実行時間を大幅に短縮できます。

from sklearn.model_selection import GridSearchCV

gs = GridSearchCV(
    RandomForestClassifier(),
    param_grid,
    cv=5,
    n_jobs=-1,
    verbose=1,
)

最良の結果を読み取る

フィッティング後は、最適な組み合わせをbest_params_で、その交差検証スコアをbest_score_で確認できます。また、予測にすぐ使える再フィッティング済みモデルはbest_estimator_で取得できます。

gs.fit(X, y)
print("Best params:", gs.best_params_)
print("Best CV score:", gs.best_score_)
best_model = gs.best_estimator_
best_model.predict(X_new)

すべての結果を確認する

cv_results_は、DataFrameにすると便利なdictで、すべての候補のスコアと順位を示します。これを使うと、どのパラメータが重要か、またスコアがどの程度安定しているかを理解できます。

import pandas as pd

results = pd.DataFrame(gs.cv_results_)
print(results[["params", "mean_test_score", "rank_test_score"]].head())

RandomizedSearchCV

探索空間が非常に大きい場合、RandomizedSearchCVはすべての組み合わせを試す代わりに、指定した数のランダムな組み合わせをサンプリングします。探索の予算はn_iterで設定します。

from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint

param_dist = {
    "n_estimators": randint(100, 500),
    "max_depth": randint(3, 20),
}
rs = RandomizedSearchCV(
    RandomForestClassifier(), param_dist,
    n_iter=30, cv=5, random_state=0,
)
rs.fit(X, y)

ランダムサーチが有利なことが多い理由

多くの問題では、本当に重要なハイパーパラメータは一部だけです。ランダムサーチは固定的なグリッドよりも重要な次元を効率よく探索できるため、はるかに少ない試行回数で良い解を見つけられます。

グリッドとランダムの使い分け

候補が少数の離散値に限られる場合はGridSearchCVを使います。n_iterで予算を設定する大規模または連続的な探索空間ではRandomizedSearchCVを使います。refit=Trueにすると、どちらも最良のモデルを自動的に再フィッティングします。

確認問題

ハイパーパラメータ探索についての知識を確認しましょう。

まとめ

まとめ: GridSearchCVはparam_grid内のすべての組み合わせを網羅的にテストするため、規模が大きくなるとコストが急増します。RandomizedSearchCVは大規模な探索空間からn_iter個の組み合わせをサンプリングします。評価指標にはscoringを、速度向上にはn_jobs=-1を設定し、フィッティング後にbest_params_、best_score_、best_estimator_を確認します。

よくある質問

「グリッドサーチとランダムサーチ」レッスンは無料ですか?

はい。「グリッドサーチとランダムサーチ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。

「グリッドサーチとランダムサーチ」で何を学びますか?

GridSearchCV、RandomizedSearchCV、param_grid の設計、最良パラメータでの再フィットを扱います。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Learn AI with Pythonを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「グリッドサーチとランダムサーチ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLearn AI with Pythonレッスンでコードを書いて実行できますか?

はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 交差検証の戦略
  2. 分類指標を深く学ぶ
  3. グリッドサーチとランダムサーチ
  4. Optuna によるベイズ最適化
← Learn AI with Pythonに戻る