データ分析関連のまとめ

データ分析・機械学習周りのもくもく会LTやイベント参加をまとめていきます

バドミントンの試合展開(途中のスコア)から結果を予測する

2月の事になりますが、Sports Analyst Meetup #6でLTを行った分析についてまとめました。
今回の概要は以下のLT資料に記載しています。

speakerdeck.com

目次(結構長いです)

何がしたいのか?

実際にプレーをしている中で、試合途中に感じる「勝ちそう」「負けそう」といった流れのような感覚が実際に結果に結びつくのかという事を、予測モデルという形で表してみたい。

バドミントンのルール

  • 今回把握しておく必要があるルールは以下となる。
    • ラリーポイント制で、ラリー毎に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取られた

www.kaggle.com

分析の流れ

  • 以下の流れで分析を進めた。
    • 前処理(説明変数、目的変数の生成)
    • 基礎分析
    • 予測モデル
    • 結果

前処理

  • データセットとしては元々下記のように与えられている。
  • 今回欲しい説明変数および目的変数は元々与えられていないため、Scoresカラムから生成した。

f:id:yhiss:20200328171839p:plain
与えられたデータセット

基礎分析

  • セットが終わった時の点差のヒストグラムを描画する。
    • 1点差は極めて少なく(3件)、2点に高いピークがあり点差が大きくなる程減少している。
    • 2点差の値が大きいのは、競って22点以上のスコアになった際にほぼ2点差で終わるためだと考えられる。

f:id:yhiss:20200328184917p:plain
最終的な点差のヒストグラム

予測モデル

  • 以下の条件で予測モデルを作った。
    • アルゴリズム: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回までの変数を使った予測モデルを深堀りしていく。

f:id:yhiss:20200328190151p:plain
結果:各予測モデル毎のAUC推移

変数の重要度

  • 今回はSHAPの平均を描画した。
    • 横軸:SHAPの平均(変数の重要度)
    • 縦軸:上位にあるほど予測モデルにとって重要な変数
  • こちらも予想できるが、より試合が進んだ時点での得点が重要になっている。
    • 但し、18回目→19回目に急激に数値が増えるのはなぜかまだよくわかってない。

f:id:yhiss:20200328191617p:plain
各変数毎のSHAP値の平均

各変数の傾向

  • 各変数のSHAP値の分布を描画した。 (ここから20枚グラフが続きます)

  • グラフの見方

    • 横軸:当該ラリー回数経過時の片方の点数
    • 縦軸:0より大きいとセットを取る方に、0より小さいとセットを取られる方により効く
  • 傾向
    • より試合が進んだ時点での変数であるほど(下のグラフになる程)点数の差が結果の予測に与える影響は大きくなっている(まあ、予想通り)
    • 但し、予想への寄与がある程度の点数差がついた後はほぼ一定になるのが気になる。
      • 例:12-8と18-2で最終的な予測は同じになるのか?
      • random forestやTree Explanier(SHAP)によるもの?
      • それとも人はこのような傾向を持っている?
      • SHAP難しい

f:id:yhiss:20200328192248p:plain
1ラリー目の変数分布

f:id:yhiss:20200328192321p:plain
2ラリー目の変数分布

f:id:yhiss:20200328192342p:plain
3ラリー目の変数分布

f:id:yhiss:20200328192359p:plain
4ラリー目の変数分布

f:id:yhiss:20200328192512p:plain
5ラリー目の変数分布

f:id:yhiss:20200328192602p:plain
6ラリー目の変数分布

f:id:yhiss:20200328192621p:plain
7ラリー目の変数分布

f:id:yhiss:20200328192638p:plain
8ラリー目の変数分布

f:id:yhiss:20200328192651p:plain
9ラリー目の変数分布

f:id:yhiss:20200328192703p:plain
10ラリー目の変数分布

f:id:yhiss:20200328192716p:plain
11ラリー目の変数分布

f:id:yhiss:20200328192727p:plain
12ラリー目の変数分布

f:id:yhiss:20200328192740p:plain
13ラリー目の変数分布

f:id:yhiss:20200328192753p:plain
14ラリー目の変数分布

f:id:yhiss:20200328192804p:plain
15ラリー目の変数分布

f:id:yhiss:20200328192816p:plain
16ラリー目の変数分布

f:id:yhiss:20200328192832p:plain
17ラリー目の変数分布

f:id:yhiss:20200328192843p:plain
18ラリー目の変数分布

f:id:yhiss:20200328192856p:plain
19ラリー目の変数分布

f:id:yhiss:20200328192907p:plain
20ラリー目の変数分布

Next Action

  • 予測精度は高くなる事がわかったため、今後は予測値と変数の関係性を深堀してみる。