糞糞糞ネット弁慶

読んだ論文についてメモを書きます.趣味の話は http://repose.hatenablog.com

Recsys2013読み会で Personalized next-song recommendation in online karaokes と Nonlinear latent factorization by embedding multiple user interests を読みました

というわけで Gunosy 新オフィスで行われた RecSys 2013 (Hong Kong) – RecSys の論文読み会に参加した.発表者の皆様お疲れ様でした.
自分は Personalized next-song recommendation in online karaokes と Nonlinear latent factorization by embedding multiple user interestsの short paper を2本読んだ.

Personalized next-song recommendation in online karaokes

Personalized next-song recommendation in online karaokes(pdf)
オンラインのカラオケサービスで次に何を歌うかを予測する論文.ある曲を歌った次にどの曲を歌うかのマルコフ性,及びあるユーザがどの曲を歌うかの関係性を Metric Enbedding で学習.結果を見た感じ,ユーザごとに構築した一次のマルコフ連鎖とそんなに精度が変わっていないのが渋い.

Nonlinear latent factorization by embedding multiple user interests

Nonlinear latent factorization by embedding multiple user interests(pdf)
ユーザとアイテムで構成される行列を行列分解する時,通常は低次元に落とすわけだけど,大きな仮定として「ユーザはm個の興味を持っていて,m個の興味からアイテムが生成される」というものが置かれる.けれども,アイテムが多岐に渡る場合ではこの仮定は厳しい(食品と本の嗜好が一つのトピックで表現できるか?).なので,アイテム側はm次元で持って,ユーザ側はテンソルで表現する.スパースになりすぎるのではないかというのが疑問.
評価アイテムと非評価アイテムのランク差を考える損失関数,あまり見たことはなかったけど結構よくあるらしく勉強になった.
その他の論文は以下に.

Personalized News Recommendation with Context Trees

Personalized News Recommendation with Context Trees(pdf)

  • ニュース推薦の論文
  • ニュース推薦に求められる要件
    • 新しい記事に価値がある
    • 新しい記事がどんどん追加されるので,インクリメンタルに処理をする必要がある
  • 提案手法: context trees
    • マルコフモデルに近い(過去のk個の記事から次の記事を選ぶ)
      • variable-order Markov model
      • 人生ゲームみたいに,記事をノードで持つツリーがあって,ユーザが記事を読むたびノードを移動する
    • 記事ごとの topic ã‚’kd treeで分割して格納
  • expert model
    • ノードごとに持つ予測モデル
    • 重みは推薦が成功するたび更新する
    • expert model は以下の3つの重み付き和
      • standard model
        • 頻度ベースでどれだけ読まれたか
      • popular
        • 直近で読まれてる数の頻度
      • freshness model
        • 誰にも読まれてない最新記事F件を使う
  • 実験
    • 人気記事を含めると,提案手法は精度が良くない
    • 人気記事を抜くと精度が良い
    • 著者らいわく「重要なのは人気記事以外の指標だ」

Query-Driven Context Aware Recommendation

Query-driven context aware recommendation

  • ユーザ,アイテム,コンテキストを使って LDA
  • 提案モデル: トピック混合比率,トピック別アイテム分布,トピック別特徴量分布(コンテキスト)を学習
    • アイテムの背景にあるコンテキストをモデルに導入
    • グラフィカルモデル的に言えば,トピックからアイテムと特徴量が生成される感じ
  • アイデア: context aware
    • アイテムに対して属性とスコアがついている感じ
    • この特徴量がアイテムと同じトピックを持つ
  • 計算したいのは p(アイテム|コンテキスト,ユーザ)
    • p(s|q, p; theta, mu, phi) = p(q|s, p; theta, mu, phi) * p(s | p, theta, mu)
    • 分解の途中で特徴量が独立であると仮定
    • 「アイテムのらしさ」と「特徴量のらしさ」を積で表す
  • 結果: ニュース記事だとkNNに勝てない,音楽推薦だと改善
    • 特徴量とトピックが異なっていたので改善した?

A Fast Parallel SGD for Matrix Factorization in Shared Memory Systems

A Fast Parallel SGD for Matrix Factorization in Shared Memory Systems(pdf)

  • best paper
  • 行列分解のSGDを高速に並列計算したい
    • hogwild: なんでもいいからランダムに更新しまくる.衝突が起こるけど気にない.
    • DSGD: 飛車が絶対重ならないように配置するノリで行列を分割
  • DSGDの問題: 全ノードの計算待ちコスト,各ノードにおける処理時間の差がボトルネックに.
  • 提案手法: 行列をノード数よりも細かく分割.計算が終わったノードにどんどん振っていくことで計算待ちノードを生じさせない
    • 細かなチューニングとしてブロック単位ではランダムアクセス,ブロック内はシーケンシャルなアクセスにしてキャッシュミスを減らす

感想

どの論文も(最後のparallel SGD以外は)手法だけでなく,「どうやって提案手法の精度をはかるか」という点が問題になっているように感じた.
今回紹介した論文において,正直なところ,最も人気な商品を薦めておけば難しいアルゴリズムを使わずとも大抵そこそこの精度が出てしまっている.じゃあユーザにとってそれが良いかというと実際はそうではなくて,意外性だったり,セレンディピティだったり,他の要素でユーザがそのサービスに満足するか否か,という点が決まってくると考えられる.
それを実験でどうはかるか,どう主張するかが重要であるように感じた.