展開先行指数に関係しそうな40項目の特徴量を決めて、
さらにRMSEが低くなる(精度が上がる)特徴量を選択する作業に入りました。
LightGBMには重要度を計算するみたいな関数もあるようですが、
特徴量同士の相関が強いと重要度が低くなるバイアス
があるという話をネットで見ましたので、特徴量選択で悩みました。
何か良い方法はないですかね?
仕方なく、試行錯誤をコンピュータに任せることにしました。
1)特徴量40項目をリストAにする
2)特徴量のリストAの順番をランダムにシャッフルしてリストBを作る
3)リストBからひとつづつ特徴量Cを取り出して、LightGBMでモデルを作る
4)RMSEを計算、RMSEが小さくなったら、特徴量Cを選択リストDに追加
RMSEが変わらない場合や大きくなったら特徴量Cは選択しない。
3)にループ
特徴量40項目計算が終わったら5)へ
5)2)に戻り、RMSEが小さくなるまで繰り返す。
めちゃくちゃ力技です。ランダムにシャッフルすることで、
偶然相関が強い特徴量を省く場合もあるし、特徴量の組み合わせによって
RMSEが低くなる組み合わせを見つけることも出来ます。
時間がかかりますが、暇な時にLightGBMを走らせて最適な組み合わせを
見つけたいと思います。
特徴量選定には遺伝的アルゴリズムを取り入れた方が良さそうですが、
まず、ランダムシャッフル技で実験してみました。
実験の結果RMSE=8.8057 まで下がりました。
選定した特徴量は19項目、順番はシャッフルしたので重要度順ではなくバラバラです。
kmae:前走前半偏差値
kato:前半後半偏差値
umaban:馬番
noslope:スタート後坂無し
un_ninki:人気が無い
j_mae_mean:同一騎手騎乗時の前半偏差値
trainercode:調教師
z_mae_mean:過去前半偏差値平均
soto_tou:自分より外に何頭いるか
classsa:クラス差
z_ato_mean:過去後半偏差値平均
tou:頭数
uchi_mae:隣内馬の前走前半偏差値
jockeycode:騎手
soto_mae:隣外馬の前走後半偏差値
ownercode:馬主
jflag:騎手乗り替わり
kyorisa:前走からの距離差
前半偏差値のRMSE=8.8057は
LightGBM以前はRMSE=11.52ですから
少しづつ進歩しているみたいです。
「AI競馬」私も序章で出ています。