バドミントンの試合展開(途中のスコア)から結果を予測する
2月の事になりますが、Sports Analyst Meetup #6でLTを行った分析についてまとめました。
今回の概要は以下のLT資料に記載しています。
目次(結構長いです)
何がしたいのか?
実際にプレーをしている中で、試合途中に感じる「勝ちそう」「負けそう」といった流れのような感覚が実際に結果に結びつくのかという事を、予測モデルという形で表してみたい。
バドミントンのルール
- 今回把握しておく必要があるルールは以下となる。
- ラリーポイント制で、ラリー毎に1点ずつ自分or相手に点数が加算されていく
- セットを取る条件:多い方が21点取った時点で点差2点以上 or 30点先に取る
- 補足:1セットにおけるラリー数は最小:21(21-0)、最大59(30-29)となる
今回使用したデータ
kaggleにアップロードされていた以下のデータを使用した。
- Badminton Game Data (BWF Super Series 2015-2017)
- 2015年~2017年までの国際大会
- シングルス、ダブルス、男子・女子・ミックスといった要素全て含んでいる
- 説明変数:各ラリー終了時の得点
- 何回目までのラリーを説明変数にするかは可変とした。
- 目的変数:セットを取ったor取られた
分析の流れ
- 以下の流れで分析を進めた。
- 前処理(説明変数、目的変数の生成)
- 基礎分析
- 予測モデル
- 結果
前処理
- データセットとしては元々下記のように与えられている。
- 今回欲しい説明変数および目的変数は元々与えられていないため、Scoresカラムから生成した。
基礎分析
- セットが終わった時の点差のヒストグラムを描画する。
- 1点差は極めて少なく(3件)、2点に高いピークがあり点差が大きくなる程減少している。
- 2点差の値が大きいのは、競って22点以上のスコアになった際にほぼ2点差で終わるためだと考えられる。
予測モデル
- 以下の条件で予測モデルを作った。
- アルゴリズム:random forest
- データ分割
- Training:2015,16年データの8割
- Validation:2015,16年データでTraining以外の2割
- Test:2017年データ
- 説明変数:各ラリーの時点での点数
- 試したこと
- 何回目のラリーまで採用するのかを変えて予測モデルを作り、その精度(AUC)の推移を評価する。
- その中で適当な予測モデルをピックアップし、変数がどのように効いているのかSHAPを使って解釈する。
結果
- 以下の結果を示す
- AUCの推移
- 変数の重要度
- 各変数の傾向
AUCの推移
- グラフについて
- 横軸:何回目までのラリーの情報を説明変数にしているか
- 縦軸:AUCの値
- ほぼ想定通りだが、説明変数としてより試合が進んだ時点でのラリーを採用すればする程AUCは高い
- ラリー数20回までの予測モデルのAUCが既に0.85程度になっており、かなり高い値となっている。
- 一方的な展開だとラリー数20の段階で20-0や19-1という状態もあるが、基礎分析のヒストグラムにおいて、最終的な点差が大きく離れているものは少ない。
- 単純に点数を変数とするだけでかなり当たっている。
- この後は、予測精度や試合の進み具合の観点から一旦ラリー数20回までの変数を使った予測モデルを深堀りしていく。
変数の重要度
- 今回はSHAPの平均を描画した。
- 横軸:SHAPの平均(変数の重要度)
- 縦軸:上位にあるほど予測モデルにとって重要な変数
- こちらも予想できるが、より試合が進んだ時点での得点が重要になっている。
- 但し、18回目→19回目に急激に数値が増えるのはなぜかまだよくわかってない。
各変数の傾向
各変数のSHAP値の分布を描画した。 (ここから20枚グラフが続きます)
グラフの見方
- 横軸:当該ラリー回数経過時の片方の点数
- 縦軸:0より大きいとセットを取る方に、0より小さいとセットを取られる方により効く
- 傾向
- より試合が進んだ時点での変数であるほど(下のグラフになる程)点数の差が結果の予測に与える影響は大きくなっている(まあ、予想通り)
- 但し、予想への寄与がある程度の点数差がついた後はほぼ一定になるのが気になる。
- 例:12-8と18-2で最終的な予測は同じになるのか?
- random forestやTree Explanier(SHAP)によるもの?
- それとも人はこのような傾向を持っている?
- SHAP難しい
Next Action
- 予測精度は高くなる事がわかったため、今後は予測値と変数の関係性を深堀してみる。