【論文紹介】Jointly Leveraging Intent and Interaction Signals to Predict User Satisfaction with Slate Recommendations

この記事は [PLAID Advent Calendar](https://qiita.com/advent-calendar/2019/plaid) 18日目のエントリーです。

こんにちは、PLAIDエンジニアの @nichimuです。
最近、目にとまった論文を紹介したいと思います。
レコメンドを出してみた時に、そのレコメンドが満足するものだったか知ることが自動でできたらいいなと思うことはありませんか...？僕は常に思います。

ユーザー行動からレコメンドの満足度を測る取り組みをSpotifyが行っており、以下の論文に書かれていたので紹介したいと思います。
[Jointly Leveraging Intent and Interaction Signals to Predict User Satisfaction with Slate Recommendations](https://www.rishabhmehrotra.com/papers/WWW2019-intent-mehrotra.pdf)

# Abstract
- Spotifyが行った研究であり、www'19に採択されている
- 出されたレコメンドに対してユーザーが満足しているかどうかを行動データから把握しようという取り組み
- ユーザーの興味の違いによって満足とされる行動が違うのではないかという仮説のもとそれぞれの興味に基づいて満足度を予測した結果、ユーザー全体を一つとして扱って予測するよりも良い予測精度が得られた


# Intent Identification
レコメンドに対してユーザーは様々な興味軸を持っているだろうということから、まずは、ユーザーの興味軸がどんなものかを検討し、定義している。
以下の3つの方法を用いて、最終的には8つの興味軸を定義している。
#### face-to-faceでのインタビュー
- 対象
    - ニューヨークに住んでいる12人のSpotifyユーザー
    - アプリの利用度合いとホームページ (レコメンドを表示している画面) をよくみているかどうかの2軸で対象ユーザーを絞り込んでいる
- 質問概要
    - どんな興味を持ってホームページ (レコメンドを表示している画面) に訪れるか
    - ホームページでの体験に対して満足しているか
    - 興味と満足度でどれくらい関係して行動するか
- 結果
    - インタビューの事後分析からレコメンドをみているユーザーを以下の7つのグループに分けられることがわかった
    - 受動的に聞いている人 (Passively Listening)
        - バックグラウンド再生したい音楽を探している人、などの3項目
    - 能動的に動いている人 (Actively Engaging)
        - 今聴きたい新しい音楽やプレイリストを探している人、などの3項目
    - レコメンドに対してあまり興味がない人

#### Spotify App利用者へのアンケート
上記のインタビュー結果を検証するためにSpotifyアプリ上でアンケートを取っている

- 対象
    - アメリカに住んでいてSpotifyアプリを使用している300万人のiPhoneユーザー
- 質問内容
    - ホームページでの体験の満足度を5段階で評価してもらう
    - なぜホームページにきたのかを上記インタビューでわかった興味軸から選んでもらう
        - 「その他」を選んだ人に対しては自由記述欄を設けている
- 結果
    - 85%のユーザーは上記の興味軸でカバーできたが、15%のユーザーは「その他」を選んでいたので、新たな興味軸を探るために下記のテキスト解析を行っている

#### アンケートでの自由記述欄でのテキスト解析
- 手法
    - dd-CRP (non-prameteric clusteringでよく使われている)
- 結果
    - 5つの興味軸のクラスタを得ることができ、そのうちの1つ (特定の何かを探している) は今まで出てきた興味軸とは違うものであったので、新たな興味軸として加えている

<img width="500" alt="スクリーンショット 2019-12-18 11.12.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116775/be669455-ea5b-897d-d530-cc92c28aae8e.png">


# User Interaction
レコメンドに対する満足度を予測する特徴量となるユーザー行動を以下の4つと定義している。

1. Temporal: 一般的なユーザー行動
2. Downstream: レコメンドを出しているホームページから離脱した後の行動
3. Surface Level: レコメンドを出しているホームページ上でのユーザー行動を集計したもの
4. Derivative: 新しいものを見つけようとしていないような行動

これらの特徴量設計は既存研究 ([Predicting User Satisfaction with Intelligent Assistants](https://www.researchgate.net/publication/303261822_Predicting_User_Satisfaction_with_Intelligent_Assistants)や[Detecting Good Abandonment in Mobile Search](https://pdfs.semanticscholar.org/7189/24736d73b8ee83c4e764daaf4536aeff22d4.pdf)) をもとに、レコメンドという文脈で設計している。

<img width="500" alt="スクリーンショット 2019-12-18 11.19.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116775/c13e412a-b166-a0c8-c84e-bae887bbf598.png">

# User Interaction & Intents
ユーザーの興味ごとに行動を分析した結果が以下のヒートマップになっている。やはり、興味ごとにユーザー行動は大きく違うことがわかる。例えば、intent 2 (To quickly access my playlists or saved music) では、ホームページをクリックした数 (numInteractions) が圧倒的に少ない。

<img width="500" alt="スクリーンショット 2019-12-18 11.13.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116775/de9df8b6-2264-2ab0-1ea8-838c4547b977.png">


# Model
ユーザーの満足度を予測するモデルとして、以下の3つのモデルを作成している。
#### Global Model
-  全ユーザーのデータを同質のデータとして扱ってモデルを訓練させる (既存研究と同じ)
- アルゴリズムとしては、ロジスティック回帰と勾配ブースティングを使用している
- ユーザーの興味軸に関しては全く考慮されていない

#### Per-Intent Model
- ユーザーの興味軸ごとにデータを分割し、それぞれモデルを訓練させる
- 興味軸によってデータを分割しているので、興味軸によってはデータ量が少ないことがある

#### Multi-Level Model
- Global ModelとPer-Intent Modelを組み合わせて表現できるようなモデル

<img width="500" alt="スクリーンショット 2019-12-18 11.12.48.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116775/a6ca1552-cc27-c126-89b2-f30c8dfc255b.png">


# Experiment
## Dataset
- Spotifyアプリ上で300万人以上にアンケートを送り、回答してもらった結果を使用している
    - 4.5%の回答率で、最終的には116,000人のユーザから200,000のアンケート結果を得ることができ、それらを使用している
    - 回答をもらったユーザーの行動ログも使用している

## Result
- ユーザーの興味軸ごとに作成したモデル (ex. Inten X)やMulti-LevelのモデルがGlobal Modelよりも予測精度が良いことから、ユーザーそれぞれの興味軸に応じて満足度を予測することで予測精度を向上させることができることがわかった

<img width="1000" alt="スクリーンショット 2019-12-18 11.13.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116775/280687b0-077a-5559-e638-46ae1ea2903b.png">



# 個人的な感想
- ユーザーの興味軸によって満足とされる行動が異なるのは確かにな、面白いなと感じました
- 一方で、実運用するとなった時には、そもそもユーザーの興味が事前にわかっていないといけないので、ユーザーの興味もユーザー行動からわかったら使いやすいシステムが作れそうかなと思いました
- あとは、音楽アプリに限定した興味軸の定義だったので、もう少し汎用的なものを作ってみたさがあります