【バスケデータ分析】BigQueryで探るシュート効率

Google Cloud

2023.12.15

Topics

この記事は NHN テコラス Advent Calendar 2023 15日目の記事です。

はじめに

こんにちは、Shunです!

今回は、BigQueryを用いて、バスケのシュート効率を探っていきたいと思います!

この記事は、

  • BigQueryって聞いたことがあるけど、実際にどんなことができるの?
  • BigQueryのデータ分析ってどんな感じでやるの?
  • バスケで3ptが主流になってるけど、ほんとに2ptより効率いいの?

という方に向けて書いていきます!

BigQueryとAmazon Redshiftとの比較情報つきの資料はこちら>>>

やること

本記事では、以下を実施します。

  1. BigQueryのセットアップ
  2. 一般公開データセットの取得
  3. シュート効率の分析

分析

1. BigQueryのセットアップ

BigQueryを初めて利用される方は、Google Cloudコンソールから、BigQueryのAPIを有効にしてください。

BigQueryのAPIを有効にしたからといって、料金が発生するわけではないので、ご安心ください。

BigQuery の料金には次の 2 つの主要な要素があります。

  • 分析料金は、クエリの処理にかかる費用です。SQL クエリ、ユーザー定義関数、スクリプト、テーブルをスキャンする特定のデータ操作言語(DML)とデータ定義言語(DDL)のステートメントなどが含まれます。
  • ストレージ料金は、BigQuery に読み込むデータを保存する費用です。

引用:BigQuery の料金

2. 一般公開データセットの取得

一般公開データセットとは、Google Cloudが用意した無料のデータセットです。今回は、NCAA(全米大学体育協会)のデータセットを活用しますが、その他にも無料で利用できるデータセットが200以上あります。

一般公開データセットは、BigQuery に保存され、Google Cloud 一般公開データセット プログラムを通じて一般提供されているデータセットです。この一般公開データセットは BigQuery でホストされ、ユーザーがアクセスして独自のアプリケーションに統合できます。Google では、これらのデータセットの保存費用を負担しており、プロジェクトを介してデータへの公開アクセスを提供しています。

引用:BigQuery の一般公開データセット

NCAAの一般データセットを取得するには、Google Cloudのコンソールから「マーケットプレイス」を検索します。

次に、マーケットプレイスから「ncaa basketball」と検索をします。

「データセットを表示」を押下すると、BigQueryの画面へ遷移します。

以下の赤枠で囲われているNCAAのデータセットを使用して、この後の分析を進めていきます。

3. シュート効率の分析

分析をするテーブルは、「mbb_players_games_sr」です。

テーブルの「詳細」を押すと、テーブルの説明があります。

このテーブルは、「NCAA男子バスケの2013-14シーズンから2017-18シーズンまでの選手ごとのボックススコアを示している」とのことです。

「プレビュー」を押すことで、簡単にデータセットの中身を確認することができます。

シュート効率を分析する前に、馴染みのある情報を取得してみます。

八村 塁選手と渡邊 雄太選手のカレッジ時代のスタッツ

ここでは、Los Angeles Lakers 八村 塁選手Phoenix Suns 渡邊 雄太選手のカレッジ時代の各スタッツのキャリア平均を見ていきます。

テーブル名の横のメニューから、「クエリ」→「新しいタブ」の順で開きます。

クエリを入力する画面が出てきますので、以下のクエリを入力します。

SELECT
  full_name,
  season,
  ROUND(AVG(points), 1) AS average_points,
  ROUND(AVG(rebounds), 1) AS average_rebounds,
  ROUND(AVG(assists), 1) AS average_assists,
  ROUND(AVG(steals), 1) AS average_steals,
  ROUND(AVG(blocks), 1) AS average_blocks,
  ROUND(AVG(turnovers), 1) AS average_turnovers
FROM
  `bigquery-public-data.ncaa_basketball.mbb_players_games_sr`
WHERE
  full_name IN ('Rui Hachimura', 'Yuta Watanabe')
  AND minutes_int64 > 0
GROUP BY season, full_name
ORDER BY full_name DESC, season ASC;

入力後に、以下の「実行」ボタンを押下します。

※緑枠で囲っている箇所がクエリ実行で処理されるデータ量です。1か月1TBまでは無料で利用できます。

右下にクエリの実行結果が表示されます。

実行結果を確認してみると、

八村選手は、2016-17シーズンから2018-19シーズンまでゴンザガ大でプレーしていますが、最終年のデータがこのデータセットには入っていません。渡邊選手は、年次が上がるに連れて、平均得点、平均リバウンド数、平均ブロック数が増えています。

上記に示したような形で、BigQueryでは特定の数値データを抽出し、そのデータを整形することができます。

シュート効率の分析

ここからは本題の、

バスケで3ptが主流になってるけど、ほんとに2ptより効率いいの?

を題材に、両選手以外のスタッツも含めたNCAA男子バスケ全体の数値から分析を進めていきます。

まず、3ptと2ptの期待値から考えていきましょう。3ptを40%で決めることができるプレイヤーAと2ptを50%で決めることがプレイヤーBがいるとします。期待値は以下のようになります。

プレイヤーA:3.0 * 0.4 =  1.2

プレイヤーB: 2.0 * 0.5 = 1.0

プレイヤーAが10回攻めると12点、プレイヤーBが10回攻めると10点、各プレイヤーの得点の期待値となります。

上記を前提にNCAAのシュート確率から期待値を求めていきます。
(2013-14シーズンはデータが欠けていたので、2014-15から2017-18シーズンを対象とします。)

ここでは、まず3ptの確率と期待値、2ptの確率と期待値を求めます。

以下のクエリを実行します。

SELECT
  season,
  ROUND((SUM(three_points_made) * 100.0) / SUM(three_points_att), 2) AS three_point_percentage,
  ROUND(SUM(three_points_made) * 3.0 / SUM(three_points_att), 2) AS three_point_expected_value,
  ROUND((SUM(two_points_made) * 100.0) / SUM(two_points_att), 2) AS two_point_percentage,
  ROUND(SUM(two_points_made) * 2.0 / SUM(two_points_att), 2) AS two_point_expected_value,
FROM
  `bigquery-public-data.ncaa_basketball.mbb_players_games_sr`
WHERE
  season BETWEEN 2014 AND 2017
GROUP BY
  season
ORDER BY
  season;

結果は、以下の通りとなります。

この結果から分かる通り、3ptの期待値はデータセット内のすべてのシーズンで2ptの期待値を上回っています。

次に、FG数(2ptと3ptの試投数)とFG数の割合の変化を見てみます。以下のクエリを実行します。

SELECT
  season,
  SUM(three_points_att) AS total_3p_attempts,
  SUM(two_points_att) AS total_2p_attempts,
  ROUND((SUM(three_points_att) * 100.0) / SUM(field_goals_att), 1) AS three_point_attempt_rate,
  ROUND((SUM(two_points_att) * 100.0) / SUM(field_goals_att), 1) AS two_point_attempt_rate,
FROM
  `bigquery-public-data.ncaa_basketball.mbb_players_games_sr`
WHERE
  season BETWEEN 2014 AND 2017
GROUP BY
  season
ORDER BY
  season;

結果は、以下です。

この結果から、以下のことがわかります。

  • 3ptのFG試投数が年々、増加している。
  • 2ptのFG試投数は、2016年から減少している。
  • FG数に占める3ptの割合が年々、増加している。

最後に、eFG%(effective Field Goal percentage)を求めていきます。

eFG%とは、以下のことを指します。

3Pシュートが決まる確率に3Pシュートの価値も上乗せした考え方をeFG%(エフェクティブ・フィールドゴール成功率)と呼びます。計算方法を公式にすると、eFG%={FG成功数+(0.5×3Pシュート成功数)}÷FG試投数となります。
※eFG%={2Pシュートの成功数+(1.5×3Pシュート成功数)}÷FG試投数

引用:3Pシュートは1.5倍の価値がある!? アナリスト視点でB.LEAGUEを見よう(2)

要するに、「3Pの価値を加味した成功率」です。

この値が高くなれば高くなるほど、効率的にシュートを決めることができていると言えます。

以下のクエリを実行し、eFG%を求めます。

SELECT
  season,
  ROUND((SUM(two_points_made) + 1.5 * SUM(three_points_made)) * 100.0 / SUM(field_goals_att), 1) AS efg_percentage
FROM
  `bigquery-public-data.ncaa_basketball.mbb_players_games_sr`
WHERE
  season BETWEEN 2014 AND 2017
GROUP BY
  season
ORDER BY
  season;

以下が結果です。

結果から、年々、eFG%が上がっていることが分かります。

これまで、実行したクエリから分かったことをまとめると、

  • FGの期待値は、2ptより3ptの方が高い
  • 年々、FG試投数に占める3ptの割合が増加している
  • 年々、eFG%が上がっている

上記の結果を踏まえ、

3ptの方が効率的に得点を取ることができる。

と、言えるのではないでしょうか。

もちろん各チームの戦術や各個人のスキルによって、何が効率的かは変わってくるとは思いますが、NCAAのデータから「3ptの方が得点の期待値が高いこと」「3ptのFG試投数が増えていること」は確かだと思います。

まとめ

今回の記事では、Google Cloudが提供しているNCAAの一般公開データセットを基に、バスケのシュート効率の分析を行ってみました!

近年のバスケがなぜ3pt主流へと変化したかが数値で少し見えたような気がします!

実際に、2021-2022シーズンのNBAチャンピオンのGolden State Warriorsは、ショットやピックアンドロール、相手チームのスカウティングにBigQueryを用いて、分析を行っています!

参考:
データ チャンピオン: ゴールデンステート ウォリアーズが試合のデータを活用して競争力を向上させた方法

次は、データの可視化について書く予定です!

では、また!!

BigQueryとAmazon Redshiftとの比較情報つきの資料はこちら>>>

テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!

Shun

Google Cloud Partner Top Engineer 2025、2024 AWS All Cert、ビール検定1冠

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら