1. イントロダクション#
1.1. スポーツデータ分析とは?#
1.1.1. スポーツデータの取得とスポーツ科学の発展#
スポーツデータ分析を行うには,まずは何らかの方法でデータを取得する必要がある. スポーツデータの取得方法はおおよそ以下のように分類できる:
手作業での取得
カメラ撮影と画像解析による取得
各種センサによる取得
例えば,野球において1球ごとに何が起こったかをまとめた1球データは手作業での取得が基本である(が最近では機械学習による半自動化が進みつつある). 一方,最近取得が可能になったサッカーのトラッキングデータは,スタジアムに取り付けられたカメラによって自動取得されている. また,選手の動作を解析する際には,被験者に取り付けたウェアラブルセンサを用いて位置情報や加速度などを取得している.
スポーツデータの取得技術は近年急速に進歩し,1つの競技に対し様々なデータが取得できるようになっている. また,これまでに取得が難しかった競技,特に集団球技や格闘技のデータも取得されるようになってきた. これにより,個人競技だけでなく集団球技や格闘技などの対戦型競技も含めたあらゆるスポーツデータを扱うことが可能となり,スポーツデータサイエンスという新たな学問分野が発展している. 今後は個別の動作の理解に加え,集団運動や相互作用を含めたスポーツの理解がスポーツデータサイエンスの課題になると考えられる.
1.1.2. スポーツデータの特徴#
このように取得したデータは,取得時刻とその時刻における様々な情報がセットになっており,時系列データ(time series data)と呼ばれる. また,スポーツデータには,時刻に加えて位置座標のデータが含まれていることも多く,これを時空間データ(spatiotemporal data)と呼ぶこともある. スポーツデータにおける,時間と空間の解像度(データの取得精度)は様々である. 例えば,サッカーのデータにおける空間解像度は1m程度であり,時間スケールは以下のような階層構造を成している:
1試合の得点データ(試合単位)
イベント時系列データ
得点の時系列データ(〜数十分単位)
シュートの時系列データ(〜数分単位)
パスの時系列データ(〜数秒単位)
トラッキングデータ(〜1/30秒単位)
このうち,得点データは取得が容易であったため,既に様々な競技で多くのデータが蓄積されている. また,得点,シュート,パスなどのイベント時系列をまとめたイベントデータの取得も進んでおり,近年は機械学習による半自動化が進みつつある. 最も時間スケールの細かいトラッキングデータは,ここ10年ほどでようやく取得が可能になったデータである. 既に,選手のトラッキングデータについては映像解析やGPSデバイスの利用によってほぼ自動で取得が可能だが,ボールのトラッキングは未だに難しい. しかし,2022年W杯で導入されたボール搭載型のGPSセンサを用いれば,近い将来には実現されそうである.
1.1.3. スタッツの取得とプログラミング#
スポーツデータが取得できたら,実際にデータ分析を行うことになるが,その結果はスタッツという形にまとめられる. ここではスタッツを以下のように定義することにする:「スポーツデータに何らかの(統計)解析を行うことにより抽出された意味のある情報」.これより,スタッツを得るには元になるデータを取得・加工した上で,何らかの(統計)解析を行い,意味のある情報を抽出することが必要になる.スタッツの例としては,サッカーにおける選手の走行距離やスプリント回数,野球における長打率やOPSなどの各種統計指標などが挙げられる.多くの場合,スポーツデータ分析の第一目標は何らかのスタッツを得ることと言って良い.
スタッツを得るためには,まずデータを取得して扱いやすい形に加工・整形し,その上で何らかの(統計)解析を行う必要がある.また,スタッツをわかりやすく伝えるには解析結果を可視化することも必要である.基本的にこうした一連の手順を手作業で行うことは不可能なので,プログラミング技術が必須である.プログラミング言語には様々な種類が存在するが,近年スポーツを含むデータ分析にはPythonが用いられることが多い.Pythonはスクリプト言語と呼ばれ,コンパイルの必要がない.また,高速に動作する目的別のライブラリが多数用意されており,データの加工・解析・可視化を1つの言語で完結できる.
1.1.4. Pythonを用いる理由#
スポーツデータ分析にPythonを用いる理由は様々であるが,データの加工・解析・可視化を1つの言語で完結できる点が特に重要だろう. 例えば,スポーツデータ分析でよく用いられるライブラリは以下の通りである:
データの加工・解析全般
Pandas, NumPy, Scipy
データの可視化
Matplotlib, Tkinter
動画・画像処理
OpenCV, Matplotlib, Pillow
ネットワーク解析
networkx
空間データ処理
GeoPandas, shapely
機械学習
scikit-learn, TensorFlow,
1.2. 講義の概要#
1.2.1. 本講義の目的と構成#
本講義では,スポーツデータの取得からスタッツを得るまでの一連の過程で必要なプログラミング技術を解説する.プログラミング言語には,本学で1年次から必修となっているPythonを用いることとし,「プログラミング基礎」および「プログラミング基礎実習」で扱った内容は既知とする.
講義は基礎編と実践編から成る.基礎編ではNumPy,Pandas,Matplotlibの基礎知識について解説する.基礎編の内容は,以下のテキストを参考にしている:
Wes McKinney, Pythonによるデータ分析入門,オライリー,2018
Jake VanderPlas, Pythonデータサイエンスハンドブック,オライリー,2018
株式会社ロンバート・増田秀人,現場で使える!pandsデータ前処理入門,翔泳社,2020.
ただし,扱う内容は取捨選択し,オリジナルな内容も多く含む.
実践編では,サッカーのデータを例に,データの加工と解析に必要なプログラミング技術を解説する. 実践編で扱うデータは,以下の3つである:
イベントデータ
Pappalardoデータセット
トラッキングデータ
Pettersonデータセット
映像データ
このうち,イベントデータとトラッキングデータはいずれもサッカーのデータである. 映像データについては,余裕があったら扱う(たぶんない). データセットの詳細については後述する. なお,高度な解析手法は扱わない.
1.2.2. 評価方法#
以下の基準で評価する:
レポート
授業への取り組み姿勢(とりあえず出席すること)