論文メモ
TencentRec: Real-time Stream Recommendation in Practice
概要
- 一定の時間間隔でモデルを更新する従来のレコメンダーシステムでは、最新のウェブアプリケーションの要件を満たすことができない
- 本稿では、リアルタイムレコメンデーションにおける「ビッグ」「リアルタイム」「アキュレート」の3つの課題に取り組む
- 「システム」「アルゴリズム」「データ」という3つの側面から、Stormをベースとした一般的なリアルタイム・ストリーム・レコメンデーション・システム「TencentRec」を提案
- はアイテムベースの協調フィルタリング、コンテンツベース、デモグラフィックベースのアルゴリズムを含む、いくつかの古典的な実用的な推薦アルゴリズムをTencentRecに実装
- アイテムベースCFアルゴリズムを詳細に紹介
- リアルタイムのデータ収集と処理を強化することで、レコメンデーションの変化をリアルタイム
- TencentRecを一連のプロダクション・アプリケーションに展開し、毎日100億のユーザー・リクエストに対して正確なリアルタイム・レコメンデーションを提供
- 大量のデータストリームを分析するために、様々なデータ・アクセスと大量のステータス・データ・ストレージを処理するために、Tencent Data Access(TDAccess)とTencent Data Store(TDStore)という2つのコンポーネントをそれぞれ開発
- 以下の三つのアルゴリズムを実装
- アイテムベースの協調フィルタリング[16]
- デモグラフィックベースのアルゴリズム[19]
- コンテンツベースのアルゴリズム[18]
- TencentRecはすでに本番運用されている
- 1日に100億件のユーザーリクエストと1PB以上のデータを扱い、ユーザーに正確なリアルタイム推薦を提供する上で優れた性能を達成
システムアーキテクチャ
- 1日に処理しなければならないユーザーアクションは約40億回、生成されるデータは1PB以上
- TencentRecは1日に100億件のユーザーリクエストを処理する必要があり、約1兆回の計算が発生
- 膨大な計算をサポートするためには、数千台のマシンで構成されるクラスターが必要
- ストリーム処理フレームワークとして、Yahoo S4 2, Spark Streaming 3, and S- torm 4を比較検討
- リアルタイム推薦計算をサポートするためにStormを選択
- Stormは、データのストリームを処理する分散型リアルタイム計算システム
- Stormを選んだ理由
- Stormはリアルタイムのデータストリーム計算をサポート
- Stormは、クラスタ内のノードを動的に追加または削除できる優れたスケーラビリティ
- Stormは、高速な障害回復が可能なステートレスシステムであるため、耐障害性をもつ
- Stormは、シンプルなプログラミングモデル、幅広いプログラミング言語のサポート、Stormの使用に優れたサポートを提供できる活発なオープンソースコミュニティなどの利点
- Stormクラスタの構造を示しており、「Nimbus」と「Supervisor」という2種類のノード
- Tencent Data Access (TDAccess)
- 通信モデルには、Publish/Subscribeモデルを採用
- 従来のキューのように、データを保存しないというわけではない。データをディスクにキャッシュ。
- Tencent Data Store (TDStore)と呼ばれる分散メモリベースのキーバリューストレージを利用して、推薦計算に使用されるステータスデータを保存
推薦アルゴリズム
- 暗黙のフィードバック問題を解決
- リアルタイムアイテムベースCFのためのスケーラブルな増分更新メカニズムを提案
- 計算コストを削減するためのリアルタイム・プルーニング技術を提案
- アイテムペアにリンクタイムを設定し、ある期間内にユーザーが一緒に評価した場合のみ、2つのアイテムが関連しているとみなす
- TencentRecでは、毎日40億以上のユーザーアクションが発生
- ニュースを例にとると、各ユーザーは毎日平均して10個以上のニュースを評価
- Hoeffding bound理論
- Hoeffding boundは、[10]において、データストリーム分析のための非常に高速な決定木を構築するために使用
- ほとんどの推薦システムでは、ユーザーとアイテムのペアの数に比べて、すでに得られた評価の数は通常非常に少ない => data sparsity
計算資源
- 最大のクラスターには約200台のコンピュータが搭載されており、クラスター全体では約1500台のコンピュータが搭載
- 全体のクラスターは、1日に40億のユーザーアクションタプルを扱い、データサイズは1PB以上
- 1日に100億回のユーザーリクエストがあり、1秒間に最大50万回のリクエストがある
- 各リクエストには平均で50回の計算が必要で、TencentRecは1兆回近い計算
- それでも、安定してリアルタイムのレコメンドを提供することが可能
まとめ
- TencentRecと呼ばれる包括的なレコメンデーション・システムを紹介
- Stormを採用
- 様々なデータアクセスと大量のステータスデータの保存を処理するために、TDAcessとTDStoreをそれぞれ開発
- 協調フィルタリング、コンテンツベース、デモグラフィックベースなど、業界でよく使われているレコメンデーションアルゴリズムを実装
- 実用的なアイテムベースのCFアルゴリズムを提案し、暗黙のフィードバック問題に対するロバスト性、スケーラブルなインクリメンタル・アップデート、リアルタイム・プルーニングなどの優れた特性を備えている
- TencentRecは、細分化されたキャッシュ、コンバイナー関数、マルチハッシュ技術などの最適化を利用
- TencentRecは、1日あたり約40億件のリアルタイム・ユーザー・アクション・データ・タプルと100億件のレコメンド・リクエストを長期にわたって処理
Related Articles