Slide 1

Slide 1 text

Using Navigation to Improve Recommendations in Real time Chao-Yuan Wu@UT Austin Christopher V. Alvino@Netflix Alexander J. Smola@CMU Justin Basilico@Netflix Recsys’16 Yoshifumi Seki@Gunosy Inc. GunosyDM研究会 2017.06.13

Slide 2

Slide 2 text

自己紹介 ● 関 喜史 ○ Gunosy 共同創業者 ○ データ分析部研究開発チーム (仮) ○ 東大松尾研, 工学博士(2017年3月卒) ● 研究テーマ: ニュース推薦システムのサービス応用について ● 関心領域 ○ 推薦システム, ユーザ行動分析 ● 趣味 ○ アイドル、日本酒、将棋

Slide 3

Slide 3 text

概要 ● Netflixのリアルタイムな推薦システムの仕組み ● オンライン機械学習 ● 利用におけるcontextは様々 ○ 一人で使う、二人で使う、家族と使う ○ 複数人でアカウントを共有している ○ 感情とか ● ユーザのスクロールの情報を元に、どの列を見せるかを逐次決める ●

Slide 4

Slide 4 text

Model ● r: row ● s: session ● i: i-th video ● S: scrolled or not {0, 1} ● C: played or not {0, 1} ● I: interested or not {0, 1}

Slide 5

Slide 5 text

この事後確率を最大化するパラメータを作りたい

Slide 6

Slide 6 text

この事後確率を最大化するパラメータを作りたい セッションと行に分解する

Slide 7

Slide 7 text

この事後確率を最大化するパラメータを作りたい セッションと行に分解する

Slide 8

Slide 8 text

この事後確率を最大化するパラメータを作りたい セッションと行に分解する 興味関心変数を導入

Slide 9

Slide 9 text

この事後確率を最大化するパラメータを作りたい セッションと行に分解する

Slide 10

Slide 10 text

Play prediction ● 劣モジュラ関数で推定する ● <>は何らかの関数: コサイン類似度でも、FMでもよい ○ f_tiはビデオiの特徴ベクトル ● qの各次元はf_tiのその次元の総和を凸関数にかけたもの ● パラメータはshared, user-specific, row-specific, {row-user}-specificの4種を分け てる

Slide 11

Slide 11 text

User Intentの導入 ● User intentの導入をする ○ 先程の定義と同様 ● I_s,rが0のときは, C=1の確率は0になるという仮定を置く

Slide 12

Slide 12 text

この事後確率を最大化するパラメータを作りたい セッションと行に分解する

Slide 13

Slide 13 text

User Intentの推定 ● セッションとrowに対する興味関心 ● vとwはplay prediction同様にshared, user-specific, session-specificで校正され る ● v_ρはvの潜在変数

Slide 14

Slide 14 text

この事後確率を最大化するパラメータを作りたい セッションと行に分解する

Slide 15

Slide 15 text

Scroll prediction ● I_s,r=1のとき、δ_ρにのみ依存するロジスティック関数になる ● I_s,r=0のときはS_s,r=1の確率は0になる

Slide 16

Slide 16 text

Online Page Adaptation ● 目的はコンテンツ行の並びと、行内のビデオの並びを最適化すること ● 足した時の閲覧率が最も高くなる行/ビデオをえらんでいく

Slide 17

Slide 17 text

Impression Fatigue and Repeated Plays ● 式(2)に加える ● x_tはユーザが再生した回数 ● 何度も再生する動画もある ○ Binaryなindicatorを追加する ○ Repeated play

Slide 18

Slide 18 text

Inference ● EMアルゴリズムで推定 ● E-step: I_s,rの事後確率を計算する ● M-step: S, Cの事後確率が最大になるパラメータを計算する

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

Online-Update ● Session中に学習して、パラメータを更新していきたい ○ つまり上部をみたユーザの行動から、下部の行を生成する ● EMアルゴリズムのM-stepでセッションのパラメータだけを更新する

Slide 21

Slide 21 text

Experiment ● Playstation 3のセッション ○ 同一の国 ● 2015/4 ~ 2015/5 ● 294k sessions ● Testデータは2015/6, 59k sessions ● 40 rows, max 75 videos

Slide 22

Slide 22 text

Evaluation ● 10行のデータが与えられたときに残りの行を生成する ● 再生されてたビデオが含まれる行が生成できたら、positive ○ Mean Reciprocal Rank(MRR) ■ 平均逆順位 ■ 初めて正解がでた順位の逆数を足し合わせて平均化する ○ Precision at 5(P@5) ● ベースラインはユーザと行のFactorization Machine(libFM) ● オフラインモデルからのgain値で比較する

Slide 23

Slide 23 text

● FMより強い ● 観測が増えるに連れて、改善している

Slide 24

Slide 24 text

● 過去のSessionが無いユーザにおいて強い -> Cold startで成果を上げている

Slide 25

Slide 25 text

Fatigue Effect and repeated plays

Slide 26

Slide 26 text

まとめ ● セッション内での動きから推薦結果を徐々に改善していく ○ Cold-startでも強い ○ ただ、これ本当にアプリで実装できんの???無理じゃね??? ● スクロールや再生をモデリングする方法として参考になった ● ただ特徴量の設計がわかんないので、うーん ● オンラインで実験してほしかった感 ● Factorization Machineとの比較って、相手弱すぎない? ●

Slide 27

Slide 27 text

References ● Slide: https://www.cs.utexas.edu/~cywu/RecSys2016_slides.pdf ● Youtube: https://www.youtube.com/watch?v=rYinLmOWRtM ●