テニスの「ファーストサーブ成功率」は勝率に関係あるの?データで確かめてみた

   

こんにちは。松本(@tennisahko)です。

この記事では、テニスのサーブはどのくらい大事なのか?というテーマについて、機械学習を使って実際に分析してみたいと思います。

テニス界の通説をデータ分析で検証!

僕は福岡大学4年生で、統計専攻でデータ分析を学んでいます。テニス歴は約10年で、文部科学大臣杯(愛好会の全国大会)で優勝経験があります。

幼少期の頃からテニスを始め、今でも続けているのですが、テニスクラブでは「ファーストサーブを70%入れないと勝てないぞ」と言われていました。実際にデータは見たことないのですが、経験上は70%でなくても勝てると感じていたので、この通説の真偽をデータで確かめてみることにしました。

準備するもの

データセット
ATPシングルスの試合結果データ1877-2017年までのデータ(約10万試合分)を用意しました。

※ATPとは、世界男子プロテニス協会のこと

モデル
今回は決定木分析(sklearnライブラリのDecisionTreeClassifier)を使いました。

環境
GoogleColaboratoryを使いました。色々なライブラリが搭載されており、サーバーの構築が不要なのでいきなり分析を始めることができます。(pip listで全てのライブラリのバージョンが確認できます。)

サーバースペック
Qiitaの記事を参考に、以下の環境で実施しました。
・n1-highmem-2 instance
・Ubuntu 18.04
・2vCPU @ 2.2GHz
・13GB RAM
・(GPUなし/ TPU)40GB, (GPUあり)360GB Storage
GPU NVIDIA Tesla K80 12GB
・アイドル状態が90分続くと停止
・連続使用は最大12時間
・Notebookサイズは最大20MB

データの前処理

まず、取り扱う対象となるデータを整理します。

今回のデータは、1レコードが1試合で、勝者と敗者のデータが1行になってしまっていたので、まずはカラム名を統合することによって1レコードを1プレイヤーに処理しました(winner_acesとloser_aces→acesのように)。この処理をしないと勝者と敗者のフラグを立てることができないからです。

さらに、データは、試合数が長引けば長引くほど数字は増えるので、すべてカウント数を率に修正しました。

また、欠損値を含んでいる行はすべてて捨てました。結果として、元の列から以下のような列にデータを作り替えました。

これらのデータを用いて、テニスクラブで言われていた「ファーストサーブが入る確率」が勝者と敗者でどう違うのかヒストグラムでプロットします。

グラフを見た所、あまり変わりません。

今度は「ファーストサーブの確率」の平均を見てみます。

こちらもほとんど変わりません。

これは…「ファーストサーブの確率」はあまり関係ないのでは!

主成分分析

次に、多重共線性の問題があるので主成分分析で次元削減をしていきます。

主成分分析とは、次元削減の1つの手法です。機械学習でも特徴量が多すぎると精度が悪くなってしまうことがあります。データの特徴を抽出できる主成分分析を使うことで、モデルの精度を上げることができます。

前処理を行ったデータに対して主成分分析をかけると、15個あった変数が15の因子に分けられました。そして、その15の因子の累積寄与率をプロットしました。

このグラフによれば、第1~4の4つの因子によっておよそ70%が説明できることが分かりました。

さらに、第1~4の4つの因子がどのような変数の割合で構成されているのか見ます。

それぞれの因子に変数がどのように関わっているのかを表とグラフから確認します。PC1~PC4は、第1~4因子という意味です。

これらの結果から選ばれた変数がこちらになります。

全ての変数が、サーブかリターンになりました。

これでようやく決定木分析をかけることができます。

決定木分析

決定木分析とは、木構造を用いて分類や回帰を行う機械学習の手法の1つです。

アルゴリズムはID3やC4.5, CARTと様々あり、ノンパラメトリックな教師あり学習です。そのため、データが正規分布でなくても推定を行うことができます。

早速推定を行ってみると下の図のようにプロットできました。

決定木の1番上に、「first_serve_points_won_rate」とあります。これは「ファーストサーブが入った時のポイントの獲得率」を表します。

すなわち、テニスの勝率と最も関係のある変数は「first_serve_points_won_rate」となりました。

さらに深く見ていくと他にも変数があります。しかし「first_serve_in_rate」つまり「ファーストサーブが入る確率」はどこにもありません。

想定通りでした。

試合に勝つことと「ファーストサーブが入る確率」はあまり関係なかったのです!

結果と展望

テニスクラブで言われていた「ファーストサーブを70%入れないと勝てないぞ」という教えは、試合に勝つためにはあまり効果的でないことがわかりました。この結果はテニスをする上でかなり重要な情報ではないかと思います。

ファーストサーブを威力が弱くてもいいからとにかく入れる、という選択は間違っているということがわかりました。とにかくポイントが取れるように打つことが大事です。

ちなみに僕自身、このデータを活用してから試合の勝率がかなり上がりました

今後は、決定木ではなくロジスティック回帰分析をしてどの変数がどの程度勝敗に影響するのかを確かめようかと思います。

「AI×エンタメ・アート」のほかの記事もどうぞ

▶ プロ釣り人の経験をAIで再現!?「海水温」のパターン認識から釣りポイントを予測
▶ AIアプリ「将棋ウォーズ」やってみた
▶ 人間が楽しめる「落語」音声を合成

業界から探す

さらに学ぼう!

PAGE TOP