ちょっと変わった話。FM2020のJリーグパックでは地域リーグの調整作業に入りますが、ここ最近特に更新してないとはいえ、何もしないではなく、地域リーグの選手の能力を見直したいので、まずプレイ履歴を計算しないといけないゆえに、シーズン2019のプレイ履歴を計算しています。
もちろん作業量は膨大で、しかも地域リーグのデータではかなり雑でたまに不完全で、意外と時間がかかります。一部のリーグではプレイ記録ですらスキャン画像のみで、結局大半の時間はデータ整理作業をすることになった。
と、最近では機械学習の本を読んでいるので、データを整理してる急に思いついた:選手のCAは、機械学習で分析できないかな、とのこと。地域リーグの選手は他と違って、データが少なく、ほとんどはプレイ履歴の記録だけでCAを判断するだけだから、「実は可能では?」と思って試しにやってみた。
まず学習データを準備する、利用するデータは所属クラブの勝点(シーズン2019実データ)、所属リーグの知名度(FMの)、試合出場数と得点数。所属リーグの知名度はなぜ必要というと、北海道リーグと関東リーグでは同じ勝点でも、チームの強さは同じではないとのことで、リーグの強さに関係する数字が必要とのこと。また、地域2部も対応したいと、JFLのデータを「上限」として働かせるつもり、とのこと。
もちろん、試合数の差も考える必要とのことで、クラブの勝点、試合出場数と得点数の3つでは、平均数を取る必要。
とそのままExcelで整理しCSVに出力(事前では学習データとして一部の選手のCAも入力)、Pandasでデータを読み込む
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
X = df_with_ca[['平均クラブ勝点', 'リーグ知名度', '平均試合出場数', '平均得点']].values
y = df_with_ca['CA']
poly_reg = PolynomialFeatures(degree=3, include_bias=False)
X_poly = poly_reg.fit_transform(X)
model = LinearRegression()
model.fit(X_poly, y)
y_poly_pred = model.predict(X_poly)
rmse = np.sqrt(mean_squared_error(y,y_poly_pred))
r2 = r2_score(y,y_poly_pred)
単純にRMSEやR2の数字を考えると、6次が一番という結果だった。
だが、その6次のモデルは他のデータで計算するとありえない数字が出てくるようになった。
ゆえに、1次から推移、過学習をしてないモデルを視察すると、3次が一番良かったという結果になった。
そしてこの結果で地域リーグの選手のデータを整理することにします。機械学習は色々勉強したんだが、やはりちゃんと自分でやりたいことで練習しないと、身に付けないよな。今までは機械学習のことを読むだけで、実はあまり理解はしてないが、今回ちゃんと自分のデータで実験し検証すると、改めて本で読んだことは「こういうことか!」と…。
参考までに一部の結果はこれです
選手名 | 所属クラブ | クラブ勝点 | 試合数 | リーグ知名度 | 試合出場数 | 得点 | 元のCA | 計算されたCA |
内田錬平 | おこしやす京都AC | 34 | 14 | 29 | 13 | 4 | 65 | 60 |
森崎広樹 | おこしやす京都AC | 34 | 14 | 29 | 5 | 3 | 54 | 54 |
瓜生紘大 | おこしやす京都AC | 34 | 14 | 29 | 5 | 0 | 55 | 48 |
青木捷 | おこしやす京都AC | 34 | 14 | 29 | 12 | 0 | 58 | |
守屋鷹人 | おこしやす京都AC | 34 | 14 | 29 | 13 | 1 | 59 | |
高橋康平 | おこしやす京都AC | 34 | 14 | 29 | 10 | 0 | 55 | 55 |
清水良平 | おこしやす京都AC | 34 | 14 | 29 | 12 | 0 | 58 | 58 |
川口真史 | アルテリーヴォ和歌山 | 22 | 14 | 29 | 4 | 1 | 48 | 45 |
國廣周平 | アルテリーヴォ和歌山 | 22 | 14 | 29 | 9 | 0 | 40 | 51 |
加藤博人 | FC TIAMO枚方 | 33 | 14 | 29 | 14 | 2 | 60 | 61 |
小谷健悟 | FC TIAMO枚方 | 33 | 14 | 29 | 5 | 0 | 52 | 48 |
多田将希 | FC TIAMO枚方 | 33 | 14 | 29 | 9 | 0 | 54 | |
木田直樹 | FC TIAMO枚方 | 33 | 14 | 29 | 14 | 11 | 60 | 61 |
大平智也 | AS.Laranja Kyoto | 33 | 14 | 15 | 1 | 0 | 35 | 36 |
山本啄也 | AS.Laranja Kyoto | 33 | 14 | 15 | 9 | 0 | 41 | |
矢城和哉 | AS.Laranja Kyoto | 33 | 14 | 15 | 1 | 0 | 35 | 36 |
嶌田一臣 | 光洋シーリングテクノ | 4 | 14 | 23 | 1 | 0 | 13 | |
高橋良平 | 新商クラブ | 14 | 14 | 23 | 10 | 0 | 34 | |
伊藤良彰 | 新商クラブ | 14 | 14 | 23 | 12 | 5 | 39 |