AIプログラミング

SckitLearnでグリットサーチを行いパラメータを最適化する

投稿日:

SckitLearnでグリットサーチを行いパラメータを最適化する

グリットサーチとは

グリットサーチとは英名でGridSerchと呼ばれハイパーパラメータの最適化を行う機能です。

ハイパーパラメータとはコストパラメータを表すCやgammaなどに該当し、これらのパラメータの調整を行うことで、認識の精度が上ったり、下がったりもします。

SckitLearnではハイパーパラメータを省略しても、デフォルトで設定されるため、ある程度の精度を出すことは出来ますが、微調整を行う場合はハイパーパラメータの調整が不可欠です。

しかし、最適なパラメータを探すために、一つ一つパラメータを設定し結果を確認、また別なパラメータを設定し確認・・という手順を行うと最適なパラメータを発見するために非常に時間がかかってしまいます。

そのような時に便利なのがグリットサーチです。

グリットサーチはあらかじめ、微調整をおこないたいパラメータを設定しておくことで、最適なパラメータを自動的に求めてくれる機能です。SckitLearnではグリットサーチのライブラリがあるので簡単に使用することができます。

SckitLearnでグリットサーチの使用方法

グリットサーチを行うためにGridSearchCVをインポート

パラメータをあらかじめ設定

例としてコストパラメータを表すCを調整する場合は次のように記載します。

GridSearchCVにパラメータを設定

先ほど設定したパラメータをGridSearchCVに指定します。

例)

グリットサーチを使用したソースコードを具体的に示します。

ソースコード(グリットサーチ未使用)

SckitLearnに含まれている癌の識別のデータを使用してグリットサーチを行うコードを記載します。比較のために、グリットサーチを行わない通常のコードを示します。

測定器はロジスティク回帰を使用しています。

このコードを実行した場合、測定器のハイパーパラメータ(デフォルト)は以下のようになっています。

注目すべき点はC=1.0となっていることです。このC=1.0はデフォルトのパラメータです。

正答率は次のようになりました。

約95%の精度となっています。

ソースコード(グリットサーチ使用)

先ほどのコードに次のコードを追記してください。

グリットサーチを行う

ハイパーパラメータのCを0.0001から10倍ずつ100000までの値をparameterという名前で辞書型のリストに登録しています。
0.0001、0.001、0.01・・・1000.0,10000.0,100000.0,

GridSearchCVに先ほど指定したparameterとロジスティク回帰の測定器を指定しています。CV=XXとはクロスバリデーションとなり、今回はクロスバリデーションの数を6として指定しています。

グリットサーチの結果において、最適なパラメータを表示する

best_params_を指定することで最適なパラメータを表示することができます。デフォルトではC=1.0となっていましたが、パラメータを調整した結果C=10.0が最適と判断されました。

グリットサーチの結果において、最適なパラメータを表示する

Cの数に注目してください。C=10.0となっています。

評価の実行(グリットサーチを使用)

約96%の精度となっています。デフォルトパラメータのC=1.0の場合は約95%のため1%の向上となっています。わずか1%ですが、このような微調整の積み重ねが大事になってきます。

今回はCという1つのパラメータに特化して行いましたが、辞書型のリストを追加することで、複数のパラメータについても検証することができます。

複数のパラメータを調整することで、より高い精度を求めることが可能となったり、パラメータの意味を理解する手がかりとなります。是非いろいろ試してください。

 

-AIプログラミング
-, ,

Copyright© AI人工知能テクノロジー , 2019 All Rights Reserved.