0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

スタジアム分析:データとAIによるスポーツファンのエンゲージメントの増大

Posted at

How to Increase Sports Fan Engagement With Data and AI - The Databricks Blogの翻訳です。

本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。

それはたった1枚のスライドでした。

2021年、National Football League (NFL)のクラブビジネス開発のシニアバイスプレジデントのBobby Galloが、Cincinnati Bengals、Detroit Lions、Jacksonville Jaguars、New York Jets、Washington Commandersの5チームのロゴが描かれた1枚のスライドをNFLチームオーナーにプレゼンテーションしました。これは、次のシーズンに少なくとも平均で15,000枚の売れ残りのチケットがあるチームのリストでした。Galloは、すべてのNLFチームにチケットの売り上げを上げるために何ができるのかを考えてほしいと懇願しました。これは、NFLのみを蝕んでいる問題ではなく、国中の多くのプロスポーツチームが直面している問題でした。

2007年、Major League Baseball (MLB)は、試合ごとに平均32,500人のファンを集客していました。それ以降、集客は2019年の29,000人と11%減少し、2021年には19,000人とさらに34%減少し、COVID-19の影響でシーズン全体においてこの期間はスタジアムは最大キャパシティで運用されることはなく、37年間で最低の値となりました。

また、チームのパフォーマンスは、集客とエンゲージメントによって変動します。2021年のNFLシーズンの第8週に入ると、勝ちの無いDetroit Lionsは、Ford Fieldの試合において47,000人のファンしか集めることができず、10年間を通じて初めて集客が50,000人を下回りました。これらのトレンドが収益に多大な影響を及ぼしており、かつてない以上にチームはスタジアム内の体験を改善し、ファンを呼び戻すことが重要となっています。スポーツにおける競合優位性を得るためにデータを用いることは長く議論されてきていますが、収益と顧客のライフサイクルの両方をブーストするために「ファンの体験」を変換させるために、データとAIのアプリケーションには踏み込んでいませんでした。

ここでは、スタジアム内体験を改善し、ファンのエンゲージメントを高め、ファンの生涯価値を成長させるために、プロスポーツチームがどのようにDatabricksのようなテクノロジーを活用するのかを見ていきましょう。

課題

球場、スタジアム、アリーナで試合を観戦することは当たり前のことになっています。しかし、その体験は、チケットや食べ物、ビールの価格の高騰、厳しい気候、うんざりする様なトイレの待ち時間によって、常に最高に楽しい外出となっているわけではありませんでした。これはどの地域観点でも当てはまることです。例えば、冬にプレーする中西部のチームのファンは、凍える様な気温の中、不快な席を我慢しなくてはならないかもしれず、これは明らかに理想的な体験とは言えません。言うまでもないことですが、スポーツチームは数多くの課題に直面しており、集客とファンのエンゲージメントを高めるための方法を常に探しています。

Databricksにおいては、多くのスポーツチーム、リーグと共に働く機会があり(リアルタイムの意思決定にMLBチームがどのようにDatabricksを活用したのかに関するブログ記事をご覧ください)、ファンのエンゲージメントと集客にインパクトを与える主要な駆動力が何であるのかを学びました。多くの場合、チームはファンのエンゲージメントの阻害となる3つの障害物に直面しています。

  1. 自宅の体験: 自宅にいるファンは、より快適かつ安価にアクションを良い視点で楽しむことができます。ブロードキャストや、信じられないほど詳細な即時リプレーやレビューを提供するホークアイカメラの様なテクノロジーの進歩によって、試合の深い理解に貢献する様になっています。ブロードキャスト提供者が、NFLのNext Gen StatsやNBAのCourtoptixのようにファンがスタジアムでは得られない試合に対する洞察を提供するために、どのように統計プログラムを活用しているのかを考えてみてください。
  2. 変化するファンのデモグラフィック: 若い世代は、ビデオゲームやソーシャルメディア、ストリーミングサービスなどエンターテイメントの選択肢が多いので、シンプルにライブのスポーツを見ることの興味が少なくなっています。これらのファンは、自身の親たちと同じ方法で好きなチームにエンゲージせず、静的な試合内体験は彼らにフィットしません。
  3. 勝つチームを好むファン: 強いパフォーマンスを持ち、より勝ちを取るチームは本質的に試合に多くのファンを集客します。チームが再起を決意しているシーズンではあまり観戦に行きたいと思いません。負けているチームはソーシャルメディアプラットフォームにおいて、勝っているチームよりも平均50%エンゲージメントが低くなります。Rival IQによる以下の図ではさらにこの相関を説明しています。

    ソース: Rival IQの「Which NFL team has the most fair-weather fans?」

これらの障害は、プロスポーツチームが持つ最大の収益源であるスタジアムのチケット売上、売店、商品による収益にインパクトを与えています。Databricksを活用しているスポーツチームは、これらの課題と他の課題を解決するためのソリューションを開発しました。スタジアムでの体験を改革することで、これらのチームは試合における今後のファンのエンゲージメントを促進しています。

さまざまなデータソースにアクセスできるチームは、スタジアムの収益を増加させるためにそれらを活用することができます。ソーシャルメディア、CRM、POS、購買履歴データが最も活用されるデータとなっています。これらのデータセットと機械学習モデルを組み合わせることで、チームはファンをより理解し、彼ら個人ごとの体験を生み出すことができます。チームがどのようにDatabricksを活用し、試合においてファンに提供するプロモーションを通じてデータを活用したのかをウォークスルーしましょう。

データの入手

ファンがチームに意味のあるデータを生成する数多くのインタラクションが存在します。すべてはファンがチケットを購入するところからスタートします。チームは、CRMあるいはチケット提供者から、購入金額、座席位置、住所、メールアドレス、電話番号といったファンに関する基本情報を受け取ります。スタジアムにおける売店からの購入によって、顧客ごとの購買履歴を生成し、多くのスタジアムがモバイルエントリーやモバイル購買のみにシフトしていることから、位置情報もまたチームがアクセスできるデータポイントとなります。以下に、利用可能なデータの(フィクションの)例を示します:

これらすべての異なるデータセットに関する課題の一つは、分析に使うためにどの様に一つの場所にこれらを集約するのかと言うことです。Databricksでは、異なる種類のデータを取り込むための方法を数多く提供しています。大規模データファイルを取り込む最も簡単な方法は、クラウドストレージに保存されるロケーションのデータファイルをスキャンし、データチームが分析を行うDatabricksにデータをロードするAuto Loaderと呼ばれるDatabricksの機能を用いることです。Auto Loaderは利用が簡単で、バッチやリアルタイムのシナリオにおいて大規模データの取り込みにスケールする際、信じられないほど信頼性が高いものです。言い換えると、Auto Loaderは小規模、大規模データのバッチ、リアルタイムユースケースにおいて問題なく動作するものとなっています。以下のPythonコードでは、クラウドストレージからデータを取り込むために、どのようにAuto Loaderを使用するのかを示しています。

Python
def ingest_bronze(raw_files_path, raw_files_format, bronze_table_name):
  spark.readStream \
            .format("cloudFiles") \
            .option("cloudFiles.format", raw_files_format) \
            .option("cloudFiles.schemaLocation", f"{cloud_storage_path}/schemas_reco/{bronze_table_name}") \
            .option("cloudFiles.inferColumnTypes", "true") \
            .load(raw_files_path)\
        .writeStream \
            .option("checkpointLocation", f"{cloud_storage_path}/chekpoints_reco/{bronze_table_name}") \
            .trigger(once=True).table(bronze_table_name).awaitTermination()

ingest_bronze("/mnt/field-demos/media/stadium/vendors/", "csv", "stadium_vendors")

トランザクションの全体像を得るために、複数のデータセットを結合しなくてはならないと言うのはよくある話です。例えば、POSデータにはアイテム番号、価格、購買時刻のみが含まれ、アイテムが何であるのか、誰が購入したのかと言う情報が含まれていない場合があります。

Databricksにおける複数言語サポートによって、データセットを取り込み、結合するために、SQLやPythonのような異なるプログラミング言語を切り替えることができます。以下のSQLサンプルは、(多くの場合、クラウドストレージにデータが到着する)POSシステムの売上のトランザクションと(多くの場合、SQLデータベースに存在する)顧客情報セットを結合しています。この結合されたデータセットによって、チームはそれぞれの顧客が行なったすべての購買行動を参照することができます。このデータがロードされて結合されたら、さらに活用できる様にこれをテーブルに永続化します。以下のSQLサンプルでは、そのための方法を示しています。

SQL
%sql
CREATE TABLE IF NOT EXISTS silver_sales AS (
  SELECT * EXCEPT (t._rescued_data, p._rescued_data, s._rescued_data)
    FROM ticket_sales t 
      JOIN point_of_sale p ON t.customer_id = p.customer 
      JOIN stadium_vendors s ON p.item_purchased = s.item_id AND t.game_id = p.game);

永続化テーブルは、Delta Lakeテーブルとして保存されます。Delta Lakeはストリーミング処理、バッチ処理において、データレイクに信頼性、セキュリティ、パフォーマンスをもたらすオープンストレージレイヤーであり、コスト効率が高く、高度にスケーラブルなデータプラットフォームの基盤となります。データのバージョン管理を行い、フレンドリーかつ構造化されたフォーマットで整理しながらも自身の分析を実行するために必要な固有のニーズを強制するために、データチームはDeltaを活用します。

上述のすべてのテクノロジーによって、データチームはファンに対してパーソナライズされた体験を提供し、より良いエンゲージメントを促進するために、これらのリッチなデータセットを活用することができます。

レコメンデーションモデル

顧客が何に興味を持つのか、あるいは何を購入するのかを予測するモデルは、思いつくすべてのウェブサイトやターゲットされた広告プラットフォームで活用されています。最大のサンプルの一つはNetflixであり、そのユーザーインタフェースの大部分は顧客に対してショーや映画を提案するレコメンデーションモデルによって生み出されています。これらの予測モデルは、顧客が別のものを購買、視聴することを目標として個人向けの体験を生成するために顧客の行動やデモグラフィック情報を参照します。

ファンが最も購入する可能性が高いアイテムがどれであるのかを予測するために、購買履歴とデモグラフィックデータを活用するスタジアム分析ユースケースにおいても、同じアプローチを取ることができます。一般的なモデルを作成するのではなく、Apache Sparkを用いて大量のモデルにスケールし、それぞれのファンごとにユニークなレコメンデーションモデルを作成し、最適化パフォーマンスで構築を行うために、クラスター全体でトレーニングを分散させます。

我々のユースケースにおいては、以前ファンが何を購入したのかを特定するためにPOSデータを使い、デモグラフィックデータと結合し、それぞれのファンごとに購入すべき提案アイテムのリストを作成します。以下のコードでは、どの購買アイテムがファンの購入確率が高いのかを予測するALSと呼ばれるアルゴリズムを使用しています。また、モデルのパフォーマンスの可視性を高めるために、モデルの結果を保存するためにオープンソース機械学習フレームワークであるMLflowも活用しています。

Python
with mlflow.start_run() as run:
  #MLFlow automatically logs all our parameters
  mlflow.pyspark.ml.autolog()
  df = spark.sql("select customer_id, item_id, count(item_id) as item_purchases from silver_sales group by customer_id, item_id")
  # Build the recommendation model using ALS on the training data
  # Note we set cold start strategy to 'drop' to ensure we don't get NaN evaluation metrics
  # rating matrix is derived from another source of information (i.e. it is inferred from other signals), setting implicitPrefs to true to get better results:
  als = ALS(rank=3, userCol="customer_id", itemCol="item_id", ratingCol="item_purchases", implicitPrefs=True, seed=0, coldStartStrategy="nan")
  
  num_cores = sc.defaultParallelism
  als.setNumBlocks(num_cores)
  
  model = als.fit(df)
  
  mlflow.spark.log_model(model, "spark-model", registered_model_name='Stadium_Recommendation')
   #Let's get back the run ID as we'll need to add other figures in our run from another cell
  run_id = run.info.run_id

このモデルは、ファンが座っている場所に最も近い場所にある提案アイテムを提供するために、ファンのチケットのセクション/シート番号を用いてフィルタリングを行った、ファンごとの提案アイテムのリストを返却します。

このレコメンデーションモデルで使用できるデータのサンプルを示します。

最後に、CRMシステムから得られる顧客の電話番号を用いて、最も提案するアイテムのプロモーションディスカウントを提案するプッシュ通知をファンに送信することができます。

Databricksアセットによるユースケース開発の加速

このユースケースのスコープは、ライブのスポーツイベントに参加するファンのエンゲージメントに関するものでしたが、同じフレームワークは大規模の顧客データ、モバイルデバイスに関連する他のシナリオにも容易に適用することができます。カジノ、クルーズ船、小売店舗はすべて顧客とのより深いエンゲージメントを求めており、パーソナライズされたレコメンデーションモデルを用いて顧客生涯価値を高めようとしています。この記事で説明した様なユースケースをクイックに作成するために必要なすべてのリソースをデータチームに提供するスタジアム分析ソリューションアクセラレータノートブックに関してはこちらからコンタクトしてください。

Databricks 無料トライアル

Databricks 無料トライアル

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?