2015年9月2日水曜日

Amazon Machine LeariningでJリーグの試合結果予測

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

前回記事ではAmazon Machine Learning(以下AML)を使った機械学習で翌日の天気予測をご紹介しました。

2時間で機械学習を試してみた
http://bitbspdata.blogspot.jp/2015/07/blog-post.html

AMLは噂に違わず初心者でも簡単に試せる機械学習サービスでした。

今回の記事では、もう少し実践的に試してみようということで、Jリーグの試合結果を予測するモデルを作ってみたいと思います。

今回AMLでJリーグの試合結果に対する予測モデルを作る際には、大きく分けて下記のようなステップで行ないました。

1.過去の試合結果とチームごとの攻撃や守備が数値化されているデータを集める。
2.集めたデータを一つのCSVファイルに統合する
3.作成したCSVファイルをAmazon S3 へアップロードする。
4.アップロードしたCSVファイルを使ってAMLでモデルを作成する

今回はJリーグの過去の試合結果と各チームの攻撃や守備を数値化したデータを使って、数値化された攻撃力や守備力から試合結果を予測するようなモデルを作成します。

3と4のステップは前回記事でも紹介済みのため、この記事では1と2のステップを少し詳細に説明します。

1.過去の試合結果とチームごとの攻撃や守備が数値化されているデータを集める。

まずは分析に使うデータを収集するところからスタートです。
過去の試合結果は下記サイトから収集しました。

J. League Data Site
https://data.j-league.or.jp/SFTP01/

各チームの攻撃や守備を数値化したデータは下記サイトから収集しました。

サッカーをデータで楽しむ | Football LAB[フットボールラボ]
http://www.football-lab.jp/

今回は取りあえずお試しということで、それぞれ2014年の試合結果と、各チームの数値化されたデータを収集しました。
実際の収集方法ですが、ウェブのスクレイピングサービスなど色々試しましたが、結局ブラウザ条で表示したそれぞれの表をコピーしてExcelへペーストする方法が一番早そうだったので、コピペの方法で作成しました。

2.集めたデータを一つのCSVファイルに統合する

次に収集した2つのデータを統合してCSVファイルにします。
そこまでデータの量は多くなかったので手作業でも統合は可能でしたが、弊社にはWaha! Transformerという強力なETL製品があるので、これを使いCSVファイルへ統合しました。

統合後のデータのヘッダは下記のようなイメージです。

ホームアウェイホーム_攻撃ホーム_守備ホーム_パスアウェイ_攻撃アウェイ_守備アウェイ_パス勝利チーム
AチームBチームxxxxxxxxxxxxxxxxxxxxxxxxHome

実際に作ったデータは、チームの能力値の種類はもっと多く、57列になっています。
また、行数は2014年に行われた全試合を対象にしましたので、18チームの一日9試合 × 34節の306レコードとなりました。
最後の列の”勝利チーム”はホームチームの勝利「Home」、アウェイチームの勝利「Away」、引き分け「Draw」の3パターンで、この列を予測の対象として予測モデルを作成します。

分析結果

ここまで作成したCSVファイルをAmazon S3へアップロードし、このCSVファイルを教師データとしてAMLで予測モデルを作成した結果が下記の図です。

図の見方ですが、横軸が今回作成したモデルでの予測値、縦軸が実際の試合結果です。
表内の青の箇所はHomeの勝利と予測して実際の試合結果もHomeが勝利だったような正解の予測をしている箇所で、逆にオレンジの箇所は不正解の予測をしている箇所になります。

今回の予測結果では、以下のような特徴が出ました。

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

なかなかポンコツな予測モデルです。正解率が5割程度ということはまだまだ勘で予測した方が当たるかもレベルです。

あと、引き分けの正解率が0なのは衝撃ですが、引き分けの予測は精度をあげるのはかなり難しそうですね。確かにJリーグの試合を見ていても試合前から引き分けを予測するのは難しい気がします。

本当は作成したモデルで今年のJリーグの残りの試合結果を予測しようと思っていたのですが、この予測モデルでは散々な結果が目に見えているので、予測モデルを改善してからにしたいと思います。

ということで、次回は予測モデルの改善をしていきます。



0 件のコメント:

コメントを投稿