The YouTube video recommendation system
関連論文
目的
ユーザにビデオを推薦する.
課題
システム
- 動画の新しさなどを考慮し
- ユーザの行動に対する関連性と多様性を考慮し
- 「何故その動画が推薦されたか?」を提示
できるようなシステムが目標.
使用する変数
二種類考えられる.
- content data : タイトルや説明などのメタデータも含めた動画データ
- user activity : explicitとimplicitに分かれる
- explicit : 動画を評価したり,お気に入りに入れたり,動画の投稿者を購読(お気に入り登録みたいなもの?)したりなどの行動
- implicit : 動画を見たり,一時停止したりなどの行動
これらの変数もかなりノイジー.例えば動画視聴だったら,全て見たからと言ってその動画を気に入ってるとは必ずしも言えないし,そもそもシステム側でユーザの動画視聴を検知する前にブラウザが閉じられてしまうこともある.
アルゴリズム
Related Videos
動画について関連するrelated videos集合をまずは考えることにする.これは全ユーザ共通で使う.
全ユーザの行動を一定時間で区切り(ex.24h),その区切り(session)の中で同時に見られた動画を数え上げる.動画について,を同時に見られた回数だとすると
とする.は正規化のために必要で,普通だと動画に対して観られた回数とするととするが,に関する全てでが共通して出てきて面倒なのでとしてしまう.
で,あとはについてが大きい上位N件をとするけれども,一部の動画は再生数が少なすぎるのでここでrの最小値に閾値を設定して足切りする.
実際はこれはもっと面倒で,ノイジーだったりpresentation biasがあったり(説明が無いので勝手に想像すると,既に動いてる推薦システムによって推薦される動画は再生されやすいのでその影響を除きたい,という事ではないだろうか),更に使えるデータ(動画の再生時間やタイムスタンプ,メタデータ)も考慮しているとか.
Generationg Recommendation Candidates
次はユーザの行動を考慮して推薦をする.
ユーザが見たり,"liked"を押したり,プレイリストに追加した動画の集合をseed set とする(明記はされていないがこれも一定時間で区切っているのだろう).
このseed setの各動画について関連動画集合とする(グラフで例えるとseed setにおける各隣接要素).普通ならこのだけでも十分なんだけど,これだと多様性に欠けてしまい,seed setにほとんど似た動画しか得られない.ユーザの興味には沿ってるが,ユーザが新しい動画を見つけるのには失敗してしまう.
なのでとして,とする(グラフで例えるとseed setから深さNまでの幅優先探索).Nはそんなに大きくしなくても十分な量,多様性を持つ動画集合が得られる.ここでどの動画がどのseed setから得られたかを忘れずに保持しておく.
Ranking
が得られたらそれらをランキングしていく.三種類(video quality,user specificity,diversification)の観点から考慮し,ランキングの時点でまず二つを使う.
- video quality : 再生数,レーティング,コメント,likeやshareの数,アップロード日時
- user specificity : ユーザ固有の興味にマッチしているかをseed videoの再生数や再生時間などを使って計算
これらを線形で組み合わせてにランク付けができる.ここから少数の動画のみをユーザに提示するわけだが,ここでは単純に上位から非表示するのではなく,ここで関連性と多様性(diversification)のバランスを取る.ユーザは本来なら様々な興味を持っているなので,ここであまりに似すぎている動画を取り除く.簡単な方法ではひとつのseed videoに関連する動画の数を制限する,同じチャンネル(投稿者)の動画の数を制限するなどである.もっと凝った方法では(明記していないが)トピックごとの動画クラスタリング,内容の分析などを使っている.
interface
一番重要.推薦時にseed videoへのリンクを貼ることによってユーザに納得してもらう.また,を大量に計算して表示時に絞るという方式を取っているので推薦リストの表示件数を変えてもすぐ反映できる.
評価
A/B testやった(これができるのがシステム提供者の強みだろう).
21日間計測したらベースラインと比較してクリック率(CTR)が207%向上した.
どんなfeature使ってるかとかはさすがに教えてくれないんですね.