グリッドサーチとは?

最適なハイパーパラメータ値を得る方法を解説

Farhad Malik
Farhad Malik

フォロー

Feb 18, 2020 – 4 min read

この記事の目的は、グリッドサーチとは何か、そしてモデルのハイパーパラメータの最適値を得るためにどのように使うことができるかを説明することです。

Python でグリッド検索を実装する方法の概要と一緒に、必要なすべての概念を簡単に説明します。

Photo by Evgeni Tcherkasski on Unsplash

単純化すると、データ科学プロジェクトの分析の側面を3つに分けられることになります。

  1. 最初の部分は、必要なデータの収集と機能のエンジニアリングに終始するでしょう。

    ハイパーパラメーターを調整することはブラックアートと考えられているだけでなく、退屈な作業で時間と労力がかかるので、3番目の部分をよく理解するようにしましょう。

    この記事では、グリッド検索とは何か、そして、モデルのハイパーパラメーターの最適値を得るためにどのように使用できるかを説明します。

    グリッド検索が非常に役立つのは、最適値を優雅な方法で決定できる場合です。

    What Is A Hyperparameter?

    機械学習モデルには学習セットで学習しない複数のパラメーターがあります。 これらのパラメータは、モデルの精度を制御します。 ハイパーパラメーターは前もって設定され、モデルが学習される前にモデルの呼び出し元から提供されます。

    例として、ニューラルネットワークの学習率は、学習データがモデルに与えられる前に呼び出し元によって設定されるため、ハイパーパラメーターと言えます。 一方、ニューラルネットワークの重みは学習データセットによって学習されるため、そのハイパーパラメータではない。

    さらに、データセットを分類するために使用されるサポートベクトル分類(SVC)モデルについて考えてみよう。 このモデルが必要とするハイパーパラメータは多数あります。

    SVC の scikit-learn ライブラリ版では、多数のハイパーパラメータを設定でき、一般的なパラメータのいくつかを紹介します:

    1. C:これは調整パラメータ
    2. Kernel.です。 カーネルパラメータを linear、poly、rbf、sigmoid、precomputed に設定するか、独自の callable を提供することが可能です。 Polyカーネルパラメータをサポートするために、カスタムの次数を渡すことができます。 rbf、poly、sigmoidのカーネルパラメータの係数です。 ソルバーの最大反復回数です。

    (何らかの理由で)SVCモデルを使用したいことを考えます。 ハイパーパラメータの最適値を設定することは困難であり、リソースを必要とする場合があります。 7294>

    そこでグリッド検索の出番です。

    グリッド検索とは何ですか。 これは、あるモデルの特定のパラメータ値に対して実行される網羅的な検索です。 モデルは推定量としても知られています。

    Grid search exercise は、時間、労力、リソースを節約することができます。

    Pythonの実装

    以下の手順を実行することにより、Pythonでグリッド検索を使用することができます。

    Install sklearn library

    pip install sklearn

    Import sklearn library

    from sklearn.model_selection import GridSearchCV

    Import your model

    from sklearn.svm import SVC

    Create a list of hyperparameters dictionary

    This is the key step.これは、Pythonが、グリッドサーチを使用するための重要なステップです。

    Kernal の最適なハイパーパラメーター値を見つけたい場合を考えてみましょう。 モデルに以下のカーネルを学習させ、linear、poly、rbf、sigmoid、および事前計算値の中から最適な値を与えたい

  2. C: モデルに以下の C の値を試させたい。
  3. max_iter: 以下のmax_iterの値を使用して、最適な値を与えるモデルにしたい。
  4. 必要な辞書を作成できる。

    parameters = , 
    'C': ,
    'max_iter': }]

    GridSearchCVのインスタンス化とパラメータの渡し

    clf = GridSearchCV(
    SVC(), parameters, scoring='accuracy'
    )
    clf.fit(X_train, y_train)

    注意:性能を評価するのに精度スコアの指標を使うことにした。

    最後に、最適なパラメータを出力します:

    print(clf.best_params_)

    以上です。

    これで、ハイパーパラメータの最適値が表示されました。

    選択したパラメータは、精度スコアを最大化するものです。

    まとめ

    今回は、グリッドサーチを使って機械学習モデル用の最適ハイパーパラメータを取得する方法を説明しました。

コメントを残す

メールアドレスが公開されることはありません。