機械学習 - グリッド検索
グリッド検索
機械学習モデルの大部分には、モデルの学習方法を変更するために調整できるパラメーターが含まれています。たとえば、ロジスティック回帰モデルは、sklearn
パラメータを持っていますC
モデルの複雑さに影響する正則化を制御します。
C
の最適な値をどのように選択するか?最適な値は、モデルのトレーニングに使用されるデータによって異なります。
どのような機能なのか?
1 つの方法は、さまざまな値を試してから、最高のスコアを与える値を選択することです。この技術は、グリッド検索2 つ以上のパラメーターの値を選択する必要がある場合は、一連の値のすべての組み合わせを評価して、値のグリッドを形成します。
例に入る前に、変更しようとしているパラメーターが何をするかを知っておくとよいでしょう。C
モデルに、トレーニング データが現実世界の情報に似ていることを伝え、トレーニング データに大きな重みを置きます。より低い値C
反対を行います。
デフォルト パラメータの使用
まず、基本パラメーターのみを使用して、グリッド検索なしでどのような結果を生成できるかを見てみましょう。
開始するには、まず、使用するデータセットをロードする必要があります。
from sklearn import datasetsiris = datasets.load_iris()
次に、モデルを作成するために、一連の独立変数 X と従属変数 y が必要です。
X = iris['data']y = iris['target']
次に、アヤメの花を分類するためのロジスティック モデルを読み込みます。
from sklearn.linear_model import LogisticRegression
モデルを作成し、max_iter をより高い値に設定して、モデルが確実に結果を見つけられるようにします。
のデフォルト値に注意してくださいC
ロジスティック回帰モデルでは1
、後でこれを比較します。
以下の例では、アイリスのデータセットを見て、さまざまな値でモデルをトレーニングしようとしています。C
ロジスティック回帰で。
logit = LogisticRegression(max_iter = 10000)
モデルを作成したら、モデルをデータに適合させる必要があります。
print(logit.fit(X,y))
モデルを評価するために、score メソッドを実行します。
print(logit.score(X,y))
例
のデフォルト設定でC = 1
、スコアを達成しました0.973
.
差の値が 0.973 のグリッド検索を実装することで、改善できるかどうか見てみましょう。
グリッド検索の実装
前と同じ手順に従いますが、今回は値の範囲を設定しますC
.
検索されたパラメーターに設定する値を知るには、ドメインの知識と実践を組み合わせる必要があります。
のデフォルト値からC
は1
、それを囲む値の範囲を設定します。
C = [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2]
次に、for ループを作成して、の値を変更します。C
変更ごとにモデルを評価します。
最初に、スコアを格納するための空のリストを作成します。
scores = []
C
の値を変更するには値の範囲をループして、毎回パラメーターを更新する必要があります。
for choice in C: logit.set_params(C=choice) logit.fit(X, y) scores.append(logit.score(X, y))
リストに保存されたスコアを使用して、何が最良の選択であるかを評価できます。C
は。
print(scores)
例
結果の説明
の値が低いことがわかります。C
の基本パラメータよりもパフォーマンスが悪い1
.しかし、値を大きくするにつれて、C
に1.75
モデルの精度が向上しました。
増えてるらしいC
この量を超えると、モデルの精度が向上しません。
ベスト プラクティスに関する注意事項
トレーニングに使用したのと同じデータを使用して、ロジスティック回帰モデルにスコアを付けました。モデルがそのデータにあまりにも密接に対応している場合、目に見えないデータをうまく予測できない可能性があります。この統計誤差は次のように知られています。オーバーフィッティング.
トレーニング データのスコアに惑わされないようにするために、データの一部を脇に置いて、モデルをテストする目的で特に使用することができます。誤解や過剰適合を避けるために、トレーニング/テスト分割に関するレクチャーを参照してください。
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。