2015年10月15日木曜日

Amazon Machine LeariningでJリーグの試合結果予測 ~予測モデル改善編~

データアナリティクス・グループの宮本です。




前回記事では、Amazon Machine Learning(以下AML)を使ってJリーグの試合結果を予測してみました。
Amazon Machine LeariningでJリーグの試合結果予測

前回記事で作成した予測モデルは

・勝敗の正解率は4割~5割程度
・引き分けの正解率は0%

のような特徴で、試合結果を正確に予測するにはまだまだ精度が足りないという結果でした。

今回記事ではこの予測モデルを改善して、正解率を上げていきます。

まず、予測モデルの改善策として考えられる一番簡単そうなもので、モデルを作るためのトレーニングデータを増やすということをします。

前回使用したのは、2014年に行われたJ1の全試合を対象した306試合分のデータでした。

今回は2013年のJ1とJ2全試合を加えて1074試合分のデータで予測モデルを作ってみることにします。

作成したモデルのModel Performanceを見てみると、驚愕の結果が!



なんと94%の正解率が出ました!
が、さすがにいきなり上がりすぎだろうと思い、色々と見てみると予測モデルを作る時に与えたデータにホームチームとアウェイチームのゴール数が入っており、そこを重要な要素として判断していたので勝敗を正確に判定できていた、というオチでした。

もちろん前回記事で作成した正解率4割のモデルはゴール数を含まずに作っていました。


ということで、気を取り直してゴール数を省いてモデルを作成し、Model Performanceを見てみます。



あれれ、正解率が32%ってあまり変わっていない・・・
いや、むしろ下がっている。

これはデータを増やしても予測精度向上の効果があまり見込めなさそうです。

ということで、別の手法として今私の所属している部署で流行っているH2Oを使ったDeep Learningでの予測を試してみることにします。


変更した主要なパラメーターは以下の通りです。

Hidden : 200,200
nfolds : 6
epochs : 500

Hiddenはデフォルト値、nfoldsはスタージェスの公式、epochsは50,100,200,500と試してトレーニングデータのMSE(Mean Square Error)の低下が安定してきている500に、それぞれ設定しました。

そしてAMLと比較するために、トレーニングデータに対する予測結果を見てます。

エラー率が3%程度なので、正解率なんと約97%!!!

これはなかなかTOTOの予想も期待できそうな予測モデルが出来たと思い、2013+2014年のデータで作ったこの予測モデルに対して、2015年のJ1第1節(9試合)に対して予測を掛けてみました。


表の右下が全結果の数字で、8/9ということでほとんど外してる・・・・
ホームが勝った試合の1試合しか当ててませんでした。

考えられる原因として、2013+2014年のデータで作成した予測モデルが過学習してしまい、2013年と2014年の試合に対しては正確に予測できるが、2015年の試合は試合結果に対する各チームの数値が2013+2014年のデータでは不正確でうまく予測できていないことが考えられます。

今回はトレーニングデータの量を増やしたり、AMLの手法だけではなく他の手法と結果を比較してみたりしましたが、Jリーグの試合結果を正確に予測することは出来ませんでした。

他にも予測精度を上げる方法はあると思うので、引き続き挑戦してみたいと思いますが、まだまだTOTOで当たりクジを出せるモデルを作るには道のりが長そうです。



0 件のコメント:

コメントを投稿