スタジアム分析:データとAIによるスポーツファンのエンゲージメントの向上
このブログ(Stadium Analytics: Increasing Sports Fan Engagement With Data and AI)の翻訳です(2022.3.31)。
たった1枚のスライドしかかからなかった。
2021年、ナショナルフットボールリーグ(NFL)のクラブビジネス開発担当シニアバイスプレジデントであるボビー・ギャロは、シンシナティ・ベンガルズ、デトロイト・ライオンズ、ジャクソンビル・ジャガーズ、ニューヨーク・ジェッツ、ワシントン・コマンダーズの5つのチームロゴが入った1枚のスライドをNFLチームオーナーに発表しました。これは、来シーズンの平均で少なくとも15,000枚の売れ残ったチケットを持つチームのリストでした。ガロは、すべてのNFLチームに、チケットの販売とファンエンゲージメントを向上させるために何ができるかを検討するよう依頼しました。このような課題は、NFLを悩ませるだけでなく、全国の多くのプロスポーツチームを悩ませる問題です。
2007年、メジャーリーグベースボール(MLB)は各試合に平均32,500人以上のファンが観戦しました。それ以来、2019年の出席者数は11%から29,000人減少し、2021年にはさらに34%減って19,000人となり、その間、スタジアムはCOVID-19のためにシーズン全体で最大収容人数で運営されず、37年ぶりの少ない観戦者数となった。
チームのパフォーマンスは、試合観戦とエンゲージメント(観戦したいと思う感情)の変動も引き起こします。2021年のNFLシーズンの8週目に入ると、無敗のデトロイトライオンズはフォードフィールドで試合に47,000人のファンしかいなかったが、これは10年ぶりに5万人を下回った観戦者数になった。これらの傾向が収益に大きな影響を与えるため、チームがスタジアム内の顧客体験を改善させ、それを向上させることがこれまで以上に重要になっています。競争上の優位性のためのデータの使用はスポーツで長い間文書化されていますが、収益と顧客のライフサイクルの両方を高めるために「ファン体験」を変革するためのデータとAIの適用としては多くの場合、未着手でした。
ここでは、プロスポーツチームがDatabricksのようなテクノロジーを使用してスタジアム内の顧客体験を向上させ、ファンのエンゲージメントを高め、ファンのリピート率を高める方法の内幕をご覧にいれます。
挑戦
かつて、球場、スタジアム、アリーナなどでの観戦はこれほど楽しいものではありませんでした。しかし、チケットや食べ物、ビールなどのチケット代の高騰、悪天候、トイレの待ち時間の苦痛など、その体験は必ずしも楽しいものではなかったのです。これは、地域別に見ても同じことが言えます。例えば、中西部に本拠地を置き、冬に試合を行うチームのファンは、凍えるような気温の中、座り心地の悪い座席で我慢しなければならないかもしれません。もちろん、スポーツチームは多くの課題に直面しており、観客動員やファンとの関係を改善する方法を常に模索しています。
Databricksでは、多くのスポーツチーム(MLBチームがリアルタイムの意思決定にDatabricksをどのように利用しているかについてのブログをご覧ください)やリーグと仕事をする機会があり、彼らがファンエンゲージメントや試合への出席に影響を与える主な要因として何を考えているかを知ることができました。一般的に、チームは、ファンエンゲージメントの低下に最も大きな影響を与える3つの障害に直面しています。
自宅での観戦:自宅での観戦は、より快適で、より少ない費用で、より良い観戦を楽しむことができます。ホークアイカメラのように、驚くほど詳細なリプレイやレビューを瞬時に提供する放送や技術の向上は、ゲームへの理解を深めることに貢献しています。NFL の Next Gen Stats や NBA の Courtoptix のように、スタジアムでは得られないゲームへの洞察を提供するために、放送局が統計プログラムをどのように活用しているかを考えてみてください。
ファン層の変化:若い世代は、ビデオゲームやソーシャルメディアの閲覧、ストリーミングサービスの利用など、エンターテイメントに優先的な選択肢があるため、生のスポーツ観戦にはあまり興味がないようです。このようなファンは、親世代と同じように好きなチームと関わることができず、静的なゲーム体験では満足できないのが普通です。
フェア・ウェザー・ファン:好調で多くの勝利を収めているチームは、本来、より多くのファンを試合に招いています。チームが再建を決意したシーズンは、観戦も盛り上がりません。負けたチームは、勝ったチームよりもソーシャルメディアプラットフォームでのエンゲージメント率が平均で50%低いです。Rival IQの下の図は、この相関関係をよりよく表しています。
これらの課題は、プロスポーツチームが持つ最大の収益源の1つである、チケット販売、グルメフードやドリンク、グッズからスタジアムで得られる収益に影響を及ぼします。Databricksを使用しているスポーツチームは、これらの問題やその他の課題に対処するためのソリューションを開発しています。スタジアムでの体験を革新することで、これらのチームは試合会場でのファンエンゲージメントの未来を切り拓いています。
チームは、スタジアムの収益を上げるために利用できるさまざまなデータソースにアクセスすることができます。ソーシャルメディア、CRM、POS、購買履歴などは、最も一般的に利用できるものです。これらのデータセットと機械学習モデルを組み合わせて使用することで、チームはファンをよりよく理解し、ファンに合わせた体験を作り出すことができます。ここでは、チームがDatabricksを使用して、試合中のファンへのプロモーション提供を通じてデータを活用する方法を説明します。
データの取得
ファンがチームにとって価値のあるデータを作成するポイントはたくさんあります。それは、ファンがチケットを購入したときから始まります。チームは、CRMやチケッティング・プロバイダーから、購入価格や座席の場所、自宅や電子メールアドレス、電話番号などの基本情報を受け取ります。スタジアムでベンダーから購入すると、各顧客の購入履歴が作成されます。ほとんどのスタジアムがモバイル入力とモバイル購入のみに移行しているため、ジオロケーション情報もチームが同様にアクセスできる典型的なデータポイントとなっています。どのようなデータが利用できるのか、(架空の)一例をご紹介します。
これらの異なるデータセットを分析に使用するために、どのように1つの場所に集約するかが課題です。幸いなことに、Databricksには様々な種類のデータを取り込むための方法が用意されています。AutoLoaderは、クラウドストレージに保存されているデータファイルをスキャンしてDatabricksにロードし、データチームが分析用に変換することができます。AutoLoaderは使いやすく、バッチやリアルタイムのシナリオでより大量のデータを取り込むために拡張する際にも、驚くほどの信頼性を発揮します。言い換えれば、AutoLoaderは、バッチおよびリアルタイムのユースケースにおいて、小さいデータサイズでも大きいデータサイズでも同じように機能するのです。以下のPythonコードは、クラウドストレージからデータを取り込むためにAutoLoaderを使用する方法を示しています。
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文で記載できます)
%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を利用して、モデルのパフォーマンスを可視化するために結果を保存しています。
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の資産でユースケース開発を加速させましょう
このユースケースの範囲は、スポーツのライブイベントに参加するファンのエンゲージメントですが、この同じフレームワークは、大量の顧客データとモバイルデバイスを含む他のシナリオに簡単に適用できます。カジノ、クルーズ船、小売店などでは、パーソナライズされたレコメンデーション(推奨)モデルを使って、顧客とのエンゲージメントを高め、顧客の生涯価値を向上させることができます。このブログで紹介されているようなユースケースを迅速に作成するために必要なすべてのリソースをデータチームに提供する、弊社のStadium Analytics Solution Accelerator Notebookについてお問い合わせください。