はじめに
この記事は、ABEJA Advent Calendar 2021の16日目の記事です。
みなさんこんにちは!
ABEJAに2021年に入社した松村です。広島からフルリモートで働いてます。
学生時代からスポーツ系のデータ分析に興味を持っており、将来はカープの球団職員になりたいと真剣に思っていた時期もありました。
先日シーズンが終わったばかりではありますが、2022年のプロ野球のホームラン王は誰になるのか予測してみました。
前提
とりあえずAIに予測させてみよう!なぜそう予測したのかはわからないけどAIがそう言ってるし、〇〇がホームラン王になるに違いない!
これだと面白くないので、ある程度予測結果に対してなぜそう予測をしたのか後から人間が解釈ができるような手法で進めることにします。
具体的には、下記の方針で予測を実施することにします。
- 結果が完全にブラックボックスになってしまうようなモデルは使わない
- 直感的に意味のわからない特徴量は使わない
予測結果の解釈の手段としては、SHAP(こちらの記事がわかりやすいです)を使います。
使用するデータ
ホームラン王の予測モデルを作るにあたって、学習用のデータを準備する必要があります。
例えば成績について、前の年にどれくらいホームランを打っているか、どれだけ試合に出ているかなどは有効な特徴量になるはずです。
また身長や体重なども有効な特徴量になる(体格の良い選手の方が本塁打を打ちやすい)可能性はあると考えられます。
そのため、プロ野球Freak様のサイトから上記の特徴量として使えそうなデータを収集してきました。
データ自体は綺麗な表形式で取得できましたが、カープとライオンズに同じメヒア選手がいたりして、前処理がかなり時間がかかりました。。
EDA
データの中身を確認していきます。
今回収集したデータとしては大きく分けて2点です。
-
本塁打数、出場試合数など選手の成績関連データ
-
身長,体重の選手の成績以外のデータ
-
本塁打数
ほとんどの選手が10本以下となっており、2桁本塁打のハードルはかなり高そうです。
また、右裾が長い分布となっているので、予測時には対数変換した方がいいかもしれません。
- 選手の成績データ全般
試合数が少なく、規定打席に到達していないような選手もデータに含まれています。
- 身長、体重
基本的に右肩上がりになっていますが、身長が170cm代で体重が100kg以上の選手もいます。
モデルの作成
ここまでで、本塁打数の予測モデルを作成するための準備は完了しました。ここからは上記で作成した特徴量をもとに実際に学習をしていきます。
モデルはLightGBMを使用しています。
2010年度~2020年度に1試合以上出場した選手のデータ(およそ3,000レコード)をKFoldを使って分割して学習用に使用、2021年度のデータで精度検証してモデルを作成し、作成した予測モデルを用いて、2022年度の本塁打数を予測します。
また、先ほどのEDAで本塁打数の分布が右裾が長いものだったので、目的変数を対数変換します。
※こちらを参考にしました
簡単に2021年度のデータでモデルの予測結果を見てみます。(コードは後日アップします)
2020年に不調だった山田哲人選手、レアード選手、2021年に急にブレークした杉本祐太郎選手はうまく予測できてなさそうです。
また、評価指標として今回は直感的にわかりやすいMAE(予測値と実測値の差分の絶対値の平均)でみてみます。
誤差が3本程度なので、もう少し精度は上がりそうな気はしますが、今回はこのまま進めます。
MAE train: 1.93433, eval: 2.62457, test: 3.32848
特徴量ごとの影響の可視化
モデルがどのように予測を実施したのか、SHAP値をみながら確認します。
- 体重:重いほど予測にプラスの影響を与えてます。やはりパワーは大事です。
- 四球:多いほど予測にプラスの影響を与えてます。長打を警戒されて勝負されてない可能性が高そうです。
- 犠打:少ないほど予測にプラスの影響を与えています。監督心理として、本塁打が期待できる選手に犠打の指示は出さないはずなので、納得感のある結果です。
個別のレコード単位でもこのように予測の過程を見ることができます。
2022年度本塁打王の予測結果
ここまでで、ある程度データの傾向やモデルの予測の傾向を掴むことができたので、今回のテーマである2022年度の本塁打数の予測を実施してみました。
Top10選手の結果は以下のようになっています。
セリーグはオースティン選手と村上選手、パリーグは山川選手が本塁打王になりそうです。
全体的に予測の数値が低い気はしますが、上位に現れる選手は確かにプロ野球ファンの方からしても違和感がないメンバーかと思います。
まとめ
ある程度解釈性を持たせた形で、納得感のある2022年本塁打王の予測をすることはできました。
ただし、学習用データの都合上本塁打が多い選手の傾向を掴むことはできても正確に本数を予測することはできませんでした。
より正確な予測のためには、本塁打数が多い選手のデータを擬似的に作成する、MLBのデータも何かしら変換して学習用データとして使うなどする必要がありそうです。
また、前年度は1軍でほとんど試合に出場していなかったが、2軍で大活躍していた選手は活躍するポテンシャルが高そうなので特徴量として追加すると若手選手のブレークが予測できるかもしれません。
もしこのあたりのデータが本塁打数予測に有効なのでは?などあればご意見いただけると嬉しいです。
終わりに
現在ABEJAでは一緒にAIの社会実装を進める仲間を募集しています。
ABEJA Advent Calendar 2021を読んで少しでも興味を持っていただければ、まずはカジュアルにお話しさせていただくこともできます。
【現在募集中の職種】 はこちらから確認できます。ご応募をお待ちしております!!