Rabbit Holes and Taste Distortion: Distribution-Aware Recommendation with Evolving Interests(WWW2021)

論文
http://people.tamu.edu/~zhaoxing623/publications/WWW21-Final-Publication.pdf

概要

既存のレコメンドロジックとしてよくあるユーザーの過去の嗜好を元にしたレコメンドは、ユーザーの嗜好が基本的に固定であることが前提となっている。
この論文では、こういった前提によって起こる味覚の歪み(本来ユーザーが持つ嗜好とレコメンド側で認識しているユーザーの嗜好が異なっていることを言っていると思われる)をまずデータから明らかにする。
その上でユーザーの好みがどのように動的に変化し、その変化を考慮したキャリブレーションカニズムを設計する必要性を示す。

どういう問題

MovieLensのデータセットからランダムに抽出したあるユーザーに対して、

  • Trainに利用するデータにおけるユーザーの嗜好の分布
  • BPRが予測したユーザーの嗜好の分布
  • xQuAD(Diversityを加味したレコメンドモデル)が予測したユーザーの嗜好の分布
  • Testデータにおける実際のユーザーの嗜好の分布

のそれぞれを可視化する。

f:id:A_Koide0519:20210721212227p:plain

これを見ると、まずTrainとTestでのユーザーの嗜好の分布は全く異なる傾向を持っている。
特にBPRはTrain時の傾向に引っ張られるので予測結果も似たような傾向を持っている。
また、Diversityを加味することでこの問題は緩和しているようにも見えるが、あくまでも多くのユーザーの嗜好をカバーすることが目的となっているので、実際の嗜好に近づいたものを出せているわけではない。

システム的には頻度高く再学習をすることでこの問題に対処することができるかもしれないが、モデルとしてこの問題にアプローチするのが目的。

最終的に求めたいのは、

  • あるユーザーに対するTopKレコメンド
  • あるユーザーに対するTopKレコメンドのアイテムのジャンルの分布

データを実際に見てみる

分布の変化

学習データにおけるジャンル単位の嗜好の分布と、テストデータ、BPRの結果、CaliRec*1という先行研究にてCalibrationを加味した手法それぞれで観測されるジャンル単位の嗜好の分布感のKL-Divergence(以降KL)を取った結果が下記になる。
なおCaliRecの設定はベースのモデルがBPRで、Calibrationを調整するパラメータはCalibrationを強く効かせるように設定している。
この既存手法のほうは、BPRによって計算されたレコメンドにたいして、Trainデータの各ユーザーの視聴履歴から作られるジャンル分布により近づけるようにCalibrationするものになっている。
f:id:A_Koide0519:20210722164258p:plain
結果を見ると、まずTrainデータとTestデータ間のKLの値は非常に大きくなっており、傾向が大きく異なることがわかる。
BPRやCaliRecについてはTrainデータの傾向を強く反映しているのでKLのあたりが非常に小さくなっている。特にTrainデータの傾向に合わせるようにCalibrationされたCaliRecはその傾向が強い。
同様にTestデータに対して同じような比較をするとKLの値はどれも大きくなる。
結局の所、このアプローチでは性能を出すことが難しいと考えられる。

ケーススタディ

実際にランダムに抽出したユーザーの視聴の傾向の変化を見てみる。
このユーザーだとミステリー->サイエンスフィクション->コメディ->ロマンス->戦争->ドラマ->ホラーと嗜好が変化しているのがわかる。
f:id:A_Koide0519:20210722165148p:plain

Taste-Enhanced calibrated Recommendation(TecRec)

先行研究のCaliRecと同様に、BPRなど何らかのロジックで算出されたレコメンド結果(accuracy term)に対してCalibration(calibration term)し、TopK件のレコメンドを返却する。

嗜好分布の学習

過去z分のTrainの嗜好の分布を入力とし、現時点の嗜好の分布を予測する。
f:id:A_Koide0519:20210722172700p:plain
Lossはユーザーに対する時刻t時点で予測した嗜好の分布q_{u,t}と真の嗜好の分布q^_{u,t}のKLを用いる。
f:id:A_Koide0519:20210722174224p:plain
最終的な目的関数は下記となり、これを最小化する重みを求める。
f:id:A_Koide0519:20210722180236p:plain
ここで予測した嗜好の分布q_{u,t}を次のフェーズで利用する。

ランキング

Post-rankingという方法でアイテムの並び替えをする。
f:id:A_Koide0519:20210722180952p:plain

候補のアイテム(ここではすべてを候補とせず、計算コストを削減するためにスコア上位Zのアイテムだけをターゲットにする。この値はこの研究ではジャンル数の30倍で設定している。)に対して、accuracy termでは、何らかのモデルによって算出されたスコアのsumを取り、calibration termでは先述の学習で算出された予測した嗜好の分布q_{u,t}と、現状のレコメンドリストと候補アイテムのジャンルの分布ベクトルをsumしたものとのKLを取る。
この2つの結果を重み付け線形和としてこの値が最大になるアイテムiをリランキングしたレコメンドアイテムとして追加する。重みλは大きくなるほどcalibrationが作用する。

評価

嗜好の変化に追従できているか

比較として下記のデータ、モデルで得られる嗜好の分布、並びに提案手法の嗜好の分布に対する真の嗜好の分布とのKLを取った結果。

  • allTrain:Trainデータのすべてから嗜好の分布を算出したもの
  • lastTrain:Trainデータの最後のtime windowで算出された嗜好の分布
  • BPR:Accuracy-driven recommender
  • SASRec:sequential recommender
  • xQuAD, SPAD:diversity-focused recommender

BPR以下のものについてはレコメンド結果上位10件のアイテムからジャンルの分布を算出して比較する。
f:id:A_Koide0519:20210722184732p:plain

提案したTecRecはKLが他に比べて小さくなっており、Testデータでのユーザーの嗜好の分布により近いレコメンドを出すことができていると言えそう。
ただし、実際にユーザーの好みのものが出せているかはこれではわからないので、レコメンドそのものの性能も確認する。

レコメンドが改善しているか

BPRとSASRecをaccuracy termとして用いたTecRecの性能が良くなっているかをCaliRecと比較して確認する。
指標はRecall@KとNDCG@Kを用いた。
※ここではこの2つのモデルを使っているが、Post-rankingの方法がこのモデルに限らず利用できる
f:id:A_Koide0519:20210722184736p:plain
どちらのモデル並びにどちらの評価指標においても既存の手法を上回る結果が得られている。
評価指標によって最適なλの値微妙に違ったりするが、0.5くらいが良さそうに見える。

ところでこの結果を見ると先行研究の一つのCaliRecの方はλ=0がオフライン上では一番いい結果にみえていてなんのための比較なのか色々とよくわからなくなってしまった。
元論文のほうを確認した感じでは、そもそも性能の議論をしているわけじゃなくて、例えばユーザーが薄く関心を持っているジャンルの情報が、acuuracyベースのモデルだと潰されてしまって強い関心のあるものばかりレコメンドしてしまうので、それを防ぐためにTrainデータ内の視聴履歴から作られる嗜好の分布を加味してレコメンド結果をCalibrationするという感じのようなので比較の意味があまりないような気もする。

なお、SASRecのほうが改善幅が小さいのはSASRecにはすでにシーケンシャルな情報が部分的に入っているからではないかと考察されている。