hayato-yokoyama / jleague-result-prediction

Predicting Winners and Losers in J-League Soccer Using Machine Learning
0 stars 0 forks source link

勝敗予測に有効な特徴量を探る #7

Closed hayato-yokoyama closed 2 years ago

hayato-yokoyama commented 3 years ago

背景

これまでにEloRatingが勝敗予測に有効な特徴量であることがつかめた。しかし、EloRatingは過去の勝敗結果をRatingとして数値化したようなものであり、単純で順当な結果を予測しやすい。 (精度40~50%ほど)

そこで、より特徴量を増やして予測していきたいと思い、有効な特徴量を探る

hayato-yokoyama commented 3 years ago

スタッツはどのデータが勝敗に有効か?

https://www.football-lab.jp/ の試合情報の予測に有効な特徴量を探る

featureimportances で予測の特徴量の重要度を調べる

df_.columns
>>>
Index(['H/A', 'Attendances', 'AGI', 'KAGI', 'CBR', 'Shots', 'SSR',
       'Possession', 'AttackCBP', 'PassCBP', 'StealP', 'DefenceP'],
      dtype='object')
rf.feature_importances_
>>>
array([0.00294365, 0.02665594, 0.02806956, 0.03975137, 0.06168009,
       0.03477526, 0.47927286, 0.06245317, 0.04771433, 0.05398673,
       0.03040739, 0.13228965])
from sklearn.ensemble import RandomForestClassifier 
rf= RandomForestClassifier(max_depth=5)  
rf.fit(X_train,y_train)
rf.score(X_test,y_test) 
>>>
0.6771488469601677

SSR(シュート成功率)がかなり重要な特徴量になっていて、その他守備Pも重要な特徴量になっている。 H/Aは重要度がかなり低い。 SSRが重要な特徴量になることは当然。 守備Pは意外。

守備Pの有効性を検証

2020シーズンで守備Pの全試合合計が年間順位に関係しているか検証

clubs = ['consadole-sapporo','vegalta-sendai','kashima-antlers','urawa-red-diamonds','kashiwa-reysol','fc-tokyo','kawasaki-frontale','yokohama-fa-marinos','yokohama-fc','shonan-bellmare','shimizu-s-pulse','nagoya-grampus-eight','gamba-osaka','cerezo-osaka','vissel-kobe','sanfrecce-hiroshima','sagan-tosu','oita-trinita']
defencePs = []
for c in clubs:
    df = pd.read_csv(f"./match_data_club/{c}/{c}_2020.csv")
    print(c ,sum(df.DefenceP))

>>>
consadole-sapporo 407.47
vegalta-sendai 563.1099999999999
kashima-antlers 408.18
urawa-red-diamonds 518.78
kashiwa-reysol 515.5500000000001
fc-tokyo 484.09
kawasaki-frontale 409.87999999999977
yokohama-fa-marinos 443.37
yokohama-fc 522.53
shonan-bellmare 524.3699999999999
shimizu-s-pulse 506.55000000000007
nagoya-grampus-eight 449.83000000000004
gamba-osaka 508.95000000000005
cerezo-osaka 526.5300000000001
vissel-kobe 437.31999999999994
sanfrecce-hiroshima 468.6099999999999
sagan-tosu 544.68
oita-trinita 626.86

関係性はなさそう。 したがって守備Pが重要な特徴量となるのは、その試合において重要な特徴量と判断されるだけ。 守備Pが高い→攻め込まれている とも取れる。

試合ごとのスタッツを未来の勝敗予測に用いるのはだいぶ難しい。

hayato-yokoyama commented 3 years ago

今後のアクション

hayato-yokoyama commented 2 years ago

30mライン進入回数、パス数、ボール支配率あたりは他のスタッツに比べて、有効性が高い