Pulselive は、クリケットワールドカップの公式ウェブサイトや、イングランドプレミアリーグの iOS や Android アプリなど、スポーツファンにとって欠かせない体験を作り出しています。
お客様が当社を評価する重要なポイントの 1 つは、動画などのデジタルコンテンツに対するファンのエンゲージメントです。しかし、最近まで、各ファンに表示される動画は公開順のリストに基づいており、パーソナライズされていませんでした。
スポーツ組織は、誰が自分たちのファンで、ファンは何を望んでいるのかを理解しようとしています。それぞれのファンについて収集できる豊富なデジタル行動データは、ファンがいかにユニークで、どのように当社のコンテンツに関わっているかを物語っています。利用可能なデータの増加と機械学習 (ML) の活用機運が高まってきたため、Pulselive は顧客から、カスタマイズされたコンテンツレコメンデーションを提供するように依頼されました。
この記事では、新しいレコメンデーションエンジンとして Amazon Personalize をプラットフォームに追加した経験と、動画の消費量を 20% 増加させた方法について説明します。
開始する前に、Pulselive には 2 つの主な課題がありました。スタッフにデータサイエンティストがいなかったことと、機械学習の経験が最小限のエンジニアでも理解でき、かつ測定可能な結果が得られるソリューションを見つける必要があったことです。Amazon SageMaker (それでもかなりの学習曲線が必要) や Amazon Personalize などのツールを使用して、(費用が掛かりますが) 外部企業の支援を受けることを検討しました。
最終的に Amazon Personalize を使用することを選択しました。それには次のようないくつかの理由がありました。
他のビジネスと同様に、日々のオペレーションに悪影響を与えることは避ける必要がありましたが、それでもソリューションが自分たちの環境に適しているという確信が必要でした。そこで、数日でスピンアップして実行できる PoC での A/B テストから始めました。
Amazon Prototyping チームと協力して、最初の統合のためのオプション範囲を、ウェブサイトへの変更が最小限で、簡単に A/B テストできるものに絞り込みました。ユーザーが動画のリストを表示するすべての場所を調べた結果、次に視聴する動画のリストを再ランク付けするのが、パーソナライズされたコンテンツを実装するのに最も速いと判断しました。このプロトタイプでは、AWS Lambda 関数と Amazon API Gateway を使用して、より多くの動画リクエストをインターセプトし、Amazon Personalize GetPersonalizedRanking API を使用して再ランク付けする新しい API を提供しました。
実験が成功したとみなされるためには、動画の合計再生回数または再生完了率のいずれかが統計的に有意に改善されたことを実証する必要がありました。これを可能にするためには、十分に長い期間にわたってテストを行い、複数のスポーツイベントが開催される日と、試合のない静かな日をカバーする必要がありました。さまざまな使用パターンをテストすることで、時間帯や試合が最近行われたかどうかに依存するような動作を排除したいと考えました。最初のデータ収集には 2 週間という期間を設定しました。すべてのユーザーが実験の一部となり、対照群または試験群のいずれかにランダムに割り当てられました。実験をできるだけシンプルにするために、すべての動画が実験の一部となりました。次の図は、このソリューションのアーキテクチャを示しています。
はじめに、実験の出発点となる Amazon Personalize ソリューションを構築する必要がありました。Amazon Personalize では、ソリューションを定義し、ユーザーに動画を推奨するキャンペーンを作成するために、ユーザーと項目のインタラクションデータセットが必要です。これらの要件を満たすために、数週間の使用期間中の各動画視聴について、タイムスタンプ、ユーザー ID、動画 ID を含む CSV ファイルを作成しました。インタラクション履歴を Amazon Personalize にアップロードするのは簡単な作業で、AWS マネジメントコンソールでレコメンデーションをすぐにテストすることができました。モデルをトレーニングするために、30,000 件の最近のインタラクションのデータセットを使用しました。
動画の合計再生回数および再生完了率のメトリクスを比較するために、すべてのビデオインタラクションを Amazon DynamoDB に記録する 2 つ目の API を構築しました。この 2 つ目の API は、PutEvents API を介して新しいインタラクションを Amazon Personalize に伝えるという問題を解決しました。これにより、機械学習モデルを最新の状態に保つことができました。
この実験では、すべてのユーザーのすべての動画再生、および動画再生を促すきっかけをトラッキングしました。動画再生のきっかけには、(ソーシャルメディアなどからの) 直接リンク、ウェブサイトの他の部分からのリンク、動画リストからのリンクなどがありました。ユーザーが動画ページを閲覧するたびに、対照群または試験群のどちらに属しているかに応じて、現在の動画リストまたは新しく再ランク付けされた動画リストのどちらかが表示されました。全ユーザーの 5% を試験群にして実験を開始しました。このアプローチで問題がなかったので (動画消費の明らかな低下や API エラーの増加がなかった)、試験群を 50% に増やし、残りのユーザーを対照群として、データの収集を開始しました。
2 週間の A/B テストの後、収集した KPI を DynamoDB から取り出し、テストした 2 つのバリエーションのいくつかの KPI を比較しました。この最初の実験ではいくつかの単純な KPI を使用することにしましたが、他の組織の KPI は異なるかもしれません。
最初の KPI は、ユーザーあたりのセッションごとの動画再生数でした。最初の仮説では、動画リストを再ランク付しても意味のある変化は見られないと考えていました。しかし、ユーザーあたりの再生数が 20% 増加したことが測定されました。次のグラフは、各グループの動画再生数をまとめたものです。
合計再生数の測定に加えて、ユーザーが動画を最後まで視聴しているかどうかも確認したいと考えました。ユーザーが動画の 25% を再生するごとにイベントを送信することで、これを追跡しました。その動画が Amazon Personalize で推奨された動画か、元の再生リストで推奨された動画かで、平均再生完了率はあまり変化しないことがわかりました。再生回数と組み合わせて考えると、パーソナライズされたおすすめ動画リストを提示されたユーザーは、全体の再生時間が長くなったと結論付けました。
また、ユーザーの「おすすめ動画」バー内の各動画の位置と、ユーザーが選択した項目も追跡しました。これにより、パーソナライズされたリストと公開順リストのランキングを比較することができました。その結果、2 つのバリエーションに大きな違いはないことがわかりました。これは、ユーザーがリスト全体を見るためにスクロールするのではなく、画面に表示されている動画を選択する可能性が高いことを示唆しています。
実験の結果を分析した後、今後動画をランク付けするデフォルトの方法として Amazon Personalize を有効にするというレコメンデーションをお客様に提示しました。
この過程で、次のような教訓を学びました。これは、あなたが独自のソリューションを実装する際に役立つかもしれません。
今回、Amazon Personalize で機械学習の世界に初めて足を踏み入れました。トレーニングされたモデルをワークフローに統合するプロセス全体が驚くほどシンプルであることがわかりました。また、Amazon Personalize を実装することよりも、実験の有用性を証明するための適切な KPI とデータキャプチャを確認することにはるかに多くの時間を費やしました。
今後、次のような機能強化を進める予定です。
Mark Wood 氏は、Pulselive のプロダクトソリューションディレクターです。Mark 氏は、Pulselive に入社して 6 年以上になりますが、その間にテクニカルディレクターとソフトウェアエンジニアの両方の役割を担ってきました。Pulselive 入社前は、Roke のシニアエンジニア、および Querix のデベロッパーでした。Mark 氏はサウサンプトン大学で数学とコンピュータサイエンスの学位を取得しています。