WSDM2015読み会 - connpass
Just in Time Recommendations: Modeling the Dynamics of Boredom in Activity Streams (WSDM 2015)
お疲れ様でした.
概要
あるユーザとアイテムについて,次にそのユーザがアイテムを消費する時間 (gap) を予測する.
ユーザの心理状態が Sensitization (飽きてない状態,以降S) と Boredom (飽きた状態,以降B) があるとして,それにもとづいて次に消費するまでの時間が決まるとしたモデル.
関連研究
「アイテムの接触時間についてはあまり着目されていない」と著者らは主張するけど,さすがに言い過ぎで,正直大量にある.
論文中でも触れられているように,そもそも生存時間分析が「次にイベントが起こるのはいつか」を 時間 t (gap) に関する関数として hazard function を推定する研究であるはず (著者らのアプローチは逆で, gap の期待値を求めてからそれを gap に関する密度関数に逆算している).
直近のトップカンファレンスの論文を見ても,当然似た発想の研究は色々ある.基本的には hazard function にもとづいている.
- Tracking Temporal Dynamics of Purchase Decisions via Hierarchical Time-Rescaling Model
- CIKM 2014.イベントが起こる時間間隔を推定するのに複数要因を階層的に入れまくる.
- Opportunity model for e-commerce recommendation: right product; right time(SIGIR 2013) - 糞ネット弁慶
- Recsys 2013.異なるアイテム間の購買間隔 (ノートPCを買った人が交換用バッテリーを買うのはいつか?) を推定
- A hazard based approach to user return time prediction
- KDD 2014.タイトルそのまま.
モデル
Hidden Semi Markov Model (HSMM) を使う.
HSMM は HMM と同様に,観測値にはマルコフ性がなく,潜在変数にマルコフ性が存在するモデル.
HMM との大きな違いは,ある潜在変数が持続する長さも確率分布に従う.なので,潜在変数 Z = S である状態がどれぐらい続くか,というのが確率分布で表すことができる.
(HSMMを使う事がそんなに重要なのか? というのは当日の質疑でも上がっていた.自分でも整理がついていない.)
まず,モデルの入力として,あるユーザがあるアイテムを消費したタイムスタンプの集合 が存在する.そこから差分を取って とやってアイテム消費の間隔を観測値とする.
あとはこれを HSMM で推定していく.
ここで,HSMM の潜在変数の数を2つに絞ると
- Z = S の時はユーザは当該アイテムを好ましいと思っているのが消費間隔が短くなる
- Z = B の時はユーザは当該アイテムを飽きているので消費間隔が長くなる
- S や B が持続する分布が決まっているので,一定時間経つとユーザは飽きたり (Z が S から Bになる),またいいなと思ったりする (Z が B から S になる)
というのがモデル化できるようになる.
推定すべきパラメータは初期の潜在変数確率 と gap を生成する分布 (emission distribution) である LogLogistic 分布のパラメータ ,及び潜在変数の長さの分布 (state duration distribution) である Gamma 分布のパラメータ .後ろ二つは z ごとに推定すること,潜在変数間の遷移確率は対角行列で十分な事に注意.
ここから先が少し雲行きが怪しい.前述のパラメータはユーザとアイテムごとに定義されるので非常にスパース.
なので階層ベイズで……というのが関連研究では一般的だけれども,この論文ではユーザとアイテムを k-means でクラスタリングする.その上でユーザクラスタとアイテムクラスタという2つ組のデータを作る.
その上でパラメータを推定する.なのでこの後で述べられる実験は「あるユーザクラスタのあるアイテム集合 I に対する接触が与えられた時,次にそのアイテム集合 I に接触するのはいつか」を推定している.
正直
- k-means でユーザとアイテムの同時クラスタリングをどうやっているのか
- 何の情報を使って k-means を行っているか
の二点が理解できなかった.
実験
データはlast.fm.対象ユーザ数が600人と異常に絞られているのが気になる.
実験は2種類やっている.
一つは gap の RMSE.比較手法は HMM,それと gap を直接 LogLogistic と Exponential で推定 HSMM の RMSE が 0.9791,HMM の RMSE が 1.0691 という感じでそもそも RMSE がやたら小さい.
もう一つは item recommendation.明記はされていないけど, hazard function の形にして を出した上である t を固定してその時点での p(t) を並べて比較しているように見える.SVD++,TSVD++,RBM,Tensor,Time-Weighted に勝っている.
冒頭のアイデアがはっきりしていて楽しかったけど,クラスタリングし始めたあたりから雲行きが怪しかった.HSMMの実装はさておき,これを追試しようとはちょっと思わないというかクラスタリングの部分はどうにかしたい.