バスケットボールのトラッキングデータをLLMは理解することはできるのか?

前書き

私は以前から、バスケットボールのデータの活用に関心を持っていました。

kokiando.hatenablog.com

特に、過去の記事でも言及したNBAにはトラッキングデータに関して強い興味を抱いておりました。

https://cdn-ak.f.st-hatena.com/images/fotolife/k/kokiando/20221211/20221211111634.gif

そもそもトラッキングデータとは何か?と言いますと、

添付GIFのようなものをイメージしていただければ良いですが、それぞれの時点において、コート上の選手の位置と、ボールの位置がX軸・Y軸を用いて記録されているものです。

これらの細かい時点のデータを結合して見ることで、選手の動きや、戦術などの理解を深められるようなデータとなっています。

ただ、私個人としては、このようなデータは、一見興味深いように見えますが、有益なインサイトを得るのは非常に難しいのでは?と感じておりました。

その一つの要因としては、トラッキングデータはデータ量が非常に大きく、そこからパターンを読み解くのは非常に難しいため。 また、最終的には連続的なアニメーションを人間が読み解かなければ、意味がないのではないかと感じていたためです。

ただ、そこでふと思ったこととして、昨今多くの人に使われるようになったChatGPTをはじめとした、LLMに生データをインプットとして認識させることによって、人間が膨大なデータを読み解く手間を省くことが可能なのではないのか?と思い立ったため、本記事のタイトルのような検証を行いました。

データ準備

データセットは下記のURLから拝借いたしました。

github.com

対象のデータセットから、任意のプレーを抽出して、LLMがバスケットボールの動きをトラッキングデータから読み解くことが可能かどうか検証しようと思います。 対象とするプレーはこのようなシークエンスデータとなっています。

バスケットに馴染みのない人には見づらいデータかもしれませんが、特徴としては、

  • 赤色のチーム(Toronto Raptors)がオフェンス、青色のチーム(Charlotte Hornets)がディフェンス
  • プレーの始まりは、右上(右45°あたり)の選手「Lowry #7」がボールを持っている
  • 左上(右コーナー)柄「DeRozan #10」がカッティングを行い、ボールをキャッチし、一度インサイドに攻める
  • この攻撃に反応し、3人のディフェンスが引き付けられたことによって、左下(左コーナー)にオープンの「Scola #4」にパスがいく

というようなプレーが表現されています。

では、これをLLMはどのように読み解くのか検証していきます。

LLMを用いた検証

LLMには下記のようなテーブル(全部で1,65)をインプットしてプロンプトを投げます。

モデルはClaude 3.5 Sonnetを利用しました。

タイムスタンプ ゲームクロック ショットクロック チーム名 選手名 背番号 ポジション X座標 Y座標 Z座標
2016-01-02 09:40:52 711.26 11.99 - ボール - - 23.4254 45.12734 3.64299
2016-01-02 09:40:52 711.26 11.99 Toronto Raptors Luis Scola 4 F 19.08811 13.91147 0.0
2016-01-02 09:40:52 711.26 11.99 Toronto Raptors DeMarre Carroll 5 F 10.11935 13.54703 0.0
2016-01-02 09:40:52 711.26 11.99 Toronto Raptors Kyle Lowry 7 G 20.81838 44.51006 0.0
2016-01-02 09:40:52 711.26 11.99 Toronto Raptors DeMar DeRozan 10 G 14.16535 38.7957 0.0
2016-01-02 09:40:52 711.26 11.99 Toronto Raptors Jonas Valanciunas 17 C 20.89057 34.20938 0.0
2016-01-02 09:40:52 711.26 11.99 Charlotte Hornets Marvin Williams 2 F 13.30744 22.19981 0.0
2016-01-02 09:40:52 711.26 11.99 Charlotte Hornets Nicolas Batum 5 G-F 9.1404 18.58649 0.0
2016-01-02 09:40:52 711.26 11.99 Charlotte Hornets Kemba Walker

ここに下記のようにプロンプトを投げました。

今から渡すデータはバスケットボールのプレーを表現している。
レコードごとに、プレイヤーと、ボールの位置と時点のtimestampが入っている。
これを解釈して、プレーを説明してください。

そしたら下記のような文章が生成されました。

データを分析させていただきます。まずトロント・ラプターズとシャーロット・ホーネッツの試合のプレーデータのようですね。
約2秒間(9:40:52から9:40:57まで)のプレーが記録されています。この間の動きを解析すると:

プレーの開始時:


ボールはコート中央やや右側(x:23.4, y:45.1)の位置で、高さ約3.6フィート
カイル・ラウリー(トロント)がボールを持っているエリアにいます


プレーの展開:


ラウリーはコート右側に位置取りつつ、徐々に前進
デマー・デローザン(トロント)は右サイドから左サイドへ大きく移動
ヨナス・バランチュナス(トロント)はペイントエリア付近に位置取り
シャーロット側では、ケンバ・ウォーカーがラウリーに対して守備位置を取っています


プレーの終盤:


ボールの高さが上下に変化していることから、ドリブルの動作が見て取れます
プレイヤーたちの位置関係から、これはセットオフェンスの組み立て場面のように見えます

ショットクロックは約12秒から8.5秒まで進行しており、オフェンス側のトロントがプレーを組み立てている序盤の場面だと判断できます。

内容としては、最低限のプレーの理解はできている印象を得ました。 特に、どの場所からプレーが開始されているのか、そこからボールを持ったプレイヤーが移動しプレーを展開させていること、またディフェンスのプレイヤーのことも認識していることが確認できます。

また、プレーの終盤にかけての分析も行えているようです。

ただ、最終的な考察が、

「ボールの高さが上下に変化していることから、ドリブルの動作が見て取れます プレイヤーたちの位置関係から、これはセットオフェンスの組み立て場面のように見えます」

となっているのはやや、物足りなさを感じました。

そこで、もう一つ追加でプロンプトを投げました。

なるほど。それでは、ここでどのようなセットオフェンスが展開されていたのか、説明してください。

このプロンプトでは、セットオフェンスの内容について問い合わせています。

すると下記のような回答が返ってきました。

データを詳しく見ていくと、以下のようなセットオフェンスの展開が見て取れます:

初期配置


ラウリーがトップオブザキー付近でボール保持
デローザンが右ウィング
キャロルが左コーナー付近
スコーラが左ウィング
バランチュナスがハイポストエリア


動きの展開


ラウリーがトップからやや右側に位置取りながら、ドリブルで前進
重要な動きとして、デローザンが右ウィングから左サイドへ大きくカットしていきます(約20フィート移動)
バランチュナスはペイント付近で固定的なポジションを保持
スコーラとキャロルは左サイドでスペーシングを作っています

これはホーネッツのディフェンスを引き付けながら、デローザンの動きでディフェンスを崩そうとする展開に見えます。特にデローザンの大きな横方向の動きは、ディフェンスのローテーションを誘発しようとする意図があったと考えられます。
防御側のホーネッツは:

ウォーカーがラウリーにマッチアップ
ゼラーがバランチュナスとマッチアップ
しながら、比較的コンパクトなディフェンス陣形を保っています。

この約2秒間のデータからは、おそらくこの後デローザンへのパスかスクリーンプレーに発展する可能性を持ったセットオフェンスの序盤だと分析できます。チームとしてはスペースを作りながら、デローザンの動きを活用したプレー展開を狙っていたように見えます。

印象として、非常に良い説明が返ってきたと思います。

特に「動きの展開」の部分で

「スコーラとキャロルは左サイドでスペーシングを作っています これはホーネッツのディフェンスを引き付けながら、デローザンの動きでディフェンスを崩そうとする展開に見えます。特にデローザンの大きな横方向の動きは、ディフェンスのローテーションを誘発しようとする意図があったと考えられます。」

デローザンが起点となって、ディフェンスを崩そうとしている特徴を捉えていることをちゃんと把握できています。

また最終的に下記のように、該当するセットオフェンスが意図している、「チームとしてはスペースを作りながら、デローザンの動きを活用したプレー展開を狙っていたように見えます」という部分をしっかり捉えられていて非常に良いと感じました。

「おそらくこの後デローザンへのパスかスクリーンプレーに発展する可能性を持ったセットオフェンスの序盤だと分析できます。チームとしてはスペースを作りながら、デローザンの動きを活用したプレー展開を狙っていたように見えます。 」

結論

総じて、「トラッキングデータからオフェンスの大まかな特徴をLLMは捉えることができる」ことが示唆されたと思います。

これまであまり、個人的にはトラッキングデータの有効性に関して疑問を抱いていたのですが、LLMを活用することで、プレーの特徴を自然言語の形で記録することができる可能性や、効果的にかつ、定量的にプレーの特徴を分析できる可能性が見えたので、非常に興味深かったです。

類似の取り組みが他にもあるか調べてみたりしようと思います。

また、興味のある方などいれば、ぜひご意見伺ったり、やディスカッションしたいなと思いました。

以上です!