LIBLINEARのパラメータをグリッドサーチするスクリプト書いた
LIBLINEARのパラメータ(cost, bias)をグリッドサーチしてくれるスクリプト「grid_with_bias_and_solver.py」を書きました.
ついでにソルバーも最適なものを選択してくれます.
ソースコード
Gistにあげておきました!
使い方
ソースコード上部のコメントに書いてある通り.
以下では使い方の一例を紹介します.
1. grid.pyの入手
※DL済の場合は飛ばしてください.
LIBSVMに付属されている,LIBSVMのパラメータをグリッドサーチするスクリプトgrid.py
をDLします.
LIBLINEARのパラメータのグリッドサーチにも利用できる優れものです(ただしcostのみ).
grid.py
は以下のサイトからLIBSVMをDLできます.
解凍して展開されたディレクトリ内のtools
ディレクトリにgrid.py
があります.
2. grid.pyがあるディレクトリを指定
grid_with_bias_and_solver.py
の37行目のGRID_DIRPATH
に,grid.py
があるディレクトリを指定してください.
3. 実行!
以下のコマンドでグリッドサーチを実行できます. なお,以下の環境で実行するものとします.
- LIBLINEARの
train
コマンドがあるディレクトリにPATHが通っている. grid_with_bias_and_solver.py
はカレントディレクトリに存在.- 学習データはLIBLINEARに付属してくる
heart_scale
とし,これもカレントディレクトリに存在.
$ python grid_with_bias_and_solver.py -i heart_scale
上記コマンドを実行するとグリッドサーチが始まります.
しばらくして実行が完了すると,以下のようにAccuracyが高かったパラメータTop10を表示してくれます.
(組み合わせが多かったり,学習データが大きいとかなり時間がかかるかもしれません)
======= Results (Top10) ======= (solver, bias, cost, accuracy) ('4', 1.0, 0.125, 84.8148) ('0', 1.0, 0.25, 84.4444) ('1', 0.1, 4.0, 84.4444) ('1', 1.0, 0.03125, 84.4444) ('2', 0.1, 0.5, 84.4444) ('2', 1.0, 0.03125, 84.4444) ('3', 0.0001, 0.125, 84.4444) ('3', 0.001, 0.125, 84.4444) ('3', 0.01, 0.125, 84.4444)
solver=4,bias=1.0,cost=0.125が最適のようです.
後は,このパラメータで実際にモデルを学習すればOKです!
利用上の注意
ソルバーがロジスティック回帰(0,6,7)のものでしか動作は検証していません*1.
利用時は自己責任でお願いします.