最近、久々に『マネーボール』という映画を観ました。メジャーリーグの弱小球団、オークランド・アスレチックスがデータサイエンスを活用して、リーグ最多勝を獲得するというお話です。
映画を観ていて面白いコンセプトだなと思ったのは、「選手の価値を定量化する」という考え方です。リーグを代表するスラッガーを獲得できない時、ブラピは平凡な選手2名の名前を挙げ、彼ら2人の価値を足し合わせるとスラッガーと同等になる、と言います。資金難のアスレチックスを躍進させたのはこの考え方で、勝利への貢献度を元に各選手の価値を年俸に換算した上で、実際の年俸に比べて貢献度が高い(=割安な選手)を獲得、低い選手を放出するという、大胆な打ち手を打っていきました。
ということで今回は、日本のプロ野球選手の年俸を予測するモデルを作ってみたいと思います。野球もセイバーメトリクスも大した知見が無いのでマネーボールみたいに「勝利への貢献度」を定量化するのは難しいですが、プロ野球界の一般的な年俸設定に対して、割高/割安になっている選手の特定を目指したいと思います。
野球選手の年俸、成績のデータはプロ野球データFreak様より取得、Codeは以下Githubに一式アップロードしております。
分析内容
- 機械学習モデル:Light GBM
- モデルの学習(Train data):2012年〜2020年の年俸を2009年〜2019年のデータを使って予測(例えば、2020年の年俸は17〜19年の成績を元に予測)
- 予測対象(Test data):2021年の年俸を予測
- 使用したデータ
- 共通項目:予測対象の年、年齢、プロ野球歴(年数)、出身(国内 or 海外)
- 打者:ポジション、打率(AVG)、試合数(game)、打席数(PA)、打数(At_bat)、安打(hit)、HR、打点(RBI)、盗塁(steal)、四球(4ball)、死球(dead_ball)、三振(strikeout)、バント(bunt)、併殺打(GDP)、出塁率(OBP)、長打率(SLG)、OPS、RC27
- 投手:防御率(ERA)、試合数(game)、勝数(win)、敗数(lose)、セーブ(save)、ホールド(hold)、投球回(inning)、奪三振(strikeout)、失点(R)、自責点(ER)、WHIP、DIPS
分析結果
打者
予測年俸からの上振れTop 5
予測年俸からの下振れTop 5
重要度が大きい特徴量
RMSE は7096.01、R2は0.72
投手
予測年俸からの上振れTop 5
予測年俸からの下振れTop 5
重要度が大きい特徴量RMSEは8251.72、R2は0.50
分析から示唆されること
- 上振れ(予測値よりも年俸が高い選手)
- チームの顔となる選手が多い
菅野選手、千賀選手、青木選手等、チームを代表する看板選手は過去3年の成績+年齢等から予測される年俸よりも高い年俸を得ている傾向があるようです。モデルには獲得タイトル(最多勝や最優秀防御率)を含んでいない為、タイトル獲得有無をモデルに組み込むと精度が上がる可能性があることが示唆されます。
また、人気度という点でグッズ売上やメディア露出を通じてチームへ貢献している面もあるでしょうから、メディア出演数やグッズの売れ行きをデータで取れると精度が向上するかもしれません。あとは、FA権もモデルに組み込むべきだったかもしれません。 - 貢献年数が長い
1つ目とも関連しますが、菅野選手・青木選手・千賀選手等は長きに渡る活躍が評価されて年俸が釣り上がっている可能性があります。恐らく一度下がった年俸は下がり辛い傾向があると考えると、長いキャリアを通じて年俸が上がってきたベテラン選手は、直近3年の成績以上に高い年俸を得ていることが示唆されます。 - 所属チームがビッグチーム
上位陣の顔ぶれを見ると、ソフトバンクや巨人といった、資金力がある強豪チームがあり、これらのチームは球界平均よりも高い年俸を提示して選手を引きつけている可能性が示唆されます(勿論、長きに渡りパフォーマンスが良い選手が多い、等他の要素の影響も考えられますが)。
- チームの顔となる選手が多い
- 下振れ(予測値よりも年俸が低い選手)
上振れで指摘した事項の反対のことは当然当てはまりますが、それ以外だと以下が示唆されます。
- その他
こちらの分析では、守備面での貢献は査定に含まれないため、その点もモデルの精度に影響しているはずです。
まとめ
色々限界はあるものの、資金面に難がある球団は、予測年俸からの下振れが大きい選手を中心に獲得してみると、割安でチーム強化が出来るかもしれません。
とはいえ、今回は正直やや脳死気味にエイヤでモデルを作っている感はあるので、次回はより精度の高い年俸予測モデルを作っていきたいと思います。上で記載した内容の全ては対応できませんが、以下を反映させて精度向上を狙っていきます。
- 直近年俸を追加
経年でのチームへの貢献度は基本的に過去の年俸に反映されていると考えると、過去数年の年俸を組み込むとかなり予測精度は上がる気がします。 - 所属チームを追加
- タイトル獲得有無を追加
- 特徴量をより詳細検討(関連が低そうなものはきちんと除外)
- モデルのパラメーターを真面目にTuningする
既に選手の2022年の年俸がバラバラ報道されている時期ではありますが、次回記事では改善したモデルで、2022年の選手の年俸を予測していきたいと思います。
ここまで書いておいてって感じですが、機械学習初心者ですので、お気づきの点等あれば何でもご指摘いただけると嬉しいです。