Algorithmic Effects on the Diversity of Consumption on Spotifyを読みました

先日、同僚からSpotifyの推薦とユーザー選好の多様性についての[論文](https://dl.acm.org/doi/abs/10.1145/3366423.3380281)を紹介されました。
私がSpotifyユーザーなのと、推薦アルゴリズムにおける多様性に興味があったので読んでみました。
せっかくなので、備忘がてら紹介します。

# 大まかな結論

- 推薦アルゴリズムよりユーザードリブンな視聴の方が楽曲が多様になる
- 多様な楽曲を聴くユーザーの方が、離脱率が低く、コンバージョンも高い
- ユーザーの多様性選好レベルは、時間でそんなに変わらない
- 多様性選好レベルが上昇したユーザーは、ユーザードリブンなプレイリストを聴くようになる
- ユーザーの特徴、楽曲の特徴、ユーザーと楽曲の類似性などを学習した推薦アルゴリズムのパフォーマンスが最も良い

# 狙い

推薦アルゴリズムとユーザーの多様なコンテンツ利用との関連を理解すること、及びその良い方法を検討すること。

# 結果

論文中の図表ベースで結果を紹介します。

## Music Embeddings

ユーザーのコンテンツが多様なコンテンツを利用しているかどうかを測定するために、コンテンツの特徴を抽出する必要があります。この論文では、楽曲のプレイリストをドキュメント、プレイリストに含まれる楽曲を単語として、word2vecのCBOWで学習します。次の図は、word2vecで埋め込まれた楽曲のベクトル空間をt-SNEで可視化したものです。色は楽曲のジャンルを表します。概ね、ジャンルごとに固まるのが分かります。

<img title="figure 1" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267335/a2e9487f-0648-91c3-8f61-f2f69894e748.jpeg" witdh=480>

## Distributions of Diversity

ユーザーが多様な楽曲を聴くタイプ (Generalist) か、似た楽曲を聴くタイプ (Specialst) かを判断するために、Generalist-Specialist score (GS score) というものを導入します。ユーザー $i$ のGS scoreは、そのユーザーが聴く楽曲のベクトルとユーザーの重心ベクトルとの内積和となっています。GS scoreが高いということは、コサイン類似度の和が高いことになり、似た楽曲を聴く傾向にあり、逆に低いと多様な楽曲を聴く傾向にあるということになります。$\vec{\mu}$ はユーザーの重心ベクトル、$w$ は重み (視聴回数)、$\vec{s}$ は楽曲の特徴ベクトルです。

```math

\vec{\mu}_i = \frac{1}{\sum w_j} \cdot \sum_j w_j\vec{s}_j
\\
GS(u_i) = \frac{1}{\sum w_j} \sum_j w_j \frac{\vec{s}_j \cdot \vec{\mu}_i}{||\vec{s}_j|| \cdot ||\vec{\mu}_i||}

```

次の図の通り、ユーザーアクティビティが極端に低い人はGS scoreが高く、似た楽曲を聴く傾向のあるSpecialistが多いものの、大体のユーザーアクティビティレベルにおいて、概ね同じようなGS scoreの分布になっています。

<img title="figure 2" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267335/84be82f3-f648-b970-37a5-b7066f592033.jpeg" width=480>

## Organic versus programmed diversity

推薦アルゴリズムとユーザーのコンテンツ消費の多様性との関連を見るために、推薦によって試聴されたものと、ユーザードリブンの視聴とに分けて、GS scoreを算出します。次の図は、それらの同時分布を示しています。両者が同じ場合、白い対角線上に分布しますが、線より左側に分布がずれていることから、ユーザードリブンの視聴の方が、より多様な楽曲を聞いていると分かります。

<img title="figure 3" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267335/3b7931c5-26e9-8c41-db53-b0a7feebba2f.jpeg" width=480>

## Demographic variation in musical diversity

ユーザーのデモグラ属性で多様性が変わるのかを測定するために、log odds ratio ($LOR$) を導入します。$x$は organic GS score、$y$ は programmed GS scoreで、$p_A$ はグループAにおける、$x$ と $y$ の割合です。

```math

LOR(x, y) = log \frac{p_A(x,y)/(1-p_A(x,y))}{p_B(x,y)/(1-p_B(x,y))}

```

次の図の左は、18~24歳のユーザー(A)と45歳以上のユーザー(B)を比較したものです。年齢が高いユーザーは、organic GS scoreが高くなる、つまり楽曲の多様性が下がる傾向にあります。

右側は男性(A)と女性(B)を比較したもので、こちらは $LOR$ にあまり違いがありません。

<img title="figure 4" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267335/3d4c284a-32fb-e798-b796-e9fb03954754.jpeg" width=480>

## User Retention and Conversion

次にユーザーの楽曲視聴の多様性と主要なビジネス指標であるチャーンレートとコンバージョンについて見ていきます。

### Retention

次の図が示す通り、GS scoreが高く、楽曲の多様性が低いユーザーほどチャーンレートが高くなっています。ここで、チャーンレートは、2018年7月にアクティブだったユーザーが1年後にもアクティブである割合で、全体でのチャーンレートに対して、対象とするサブグループでのチャーンレートの相対値を使っています。

個人的には、アクティビティが低いユーザーが離脱しやすいのは当然として、全体的に傾きが変わらないのが印象的です。

<img title="figure 5" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267335/5c3fdfc6-b413-805b-3c8c-c937fc997536.jpeg" width=480>

### Conversion

コンバージョンでも同様に、2018年7月にフリーアカウントだったユーザーが、1年後にどれくらいプレミアムアカウントになったかを計測します。チャーンレートと同様の傾向で、GS scoreが低く、楽曲の多様性が高いユーザーはコンバージョンが高く、GS scoreが低いユーザーはコンバージョンが低くなっています。

個人的に、ここで気になるのは、チャーンレートと違って、ユーザーアクティビティによって、GS scoreへの反応が異なることです。アクティビティの低いユーザーは、GS scoreに関わらず、コンバージョンが低くなっているため、アクティビティの高さがコンバージョンへより重要なファクターだと考えられます。

<img title="figure 6" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267335/8b6714c5-7c96-de39-e21d-db4fdaa4b7b5.jpeg" width=480>

楽曲の多様性とチャーンレート及びコンバージョンの定量的な関係性が見えたわけですが、厳密な因果関係については引き続き調査が必要です。

## The Stability of Musical Diversity

視聴する楽曲の多様性が、ユーザー行動の重要な指標だと示されたところで、この多様性が時間で変化するかどうかを調べます。

次の図では、2018年のGS scoreと2019年のGS score[^1]の同時分布を示しています。ほとんどのユーザーのGS scoreはあまり変化していないことが分かります。

<img title="figure 7" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267335/78c56e9e-ac3b-5e89-6dbb-5e028cf90818.jpeg" width=480>

次の図は、2018年7月のGS scoreと続く12カ月ごとのGS scoreとの相関を示しています。相関係数は、0.72 ~ 0.56の間をとっており、やはりユーザーのGS scoreはあまり変化しないことが示唆されています。

逆にいうと、Spotifyにて、ユーザーが最初にどのような体験をしたか、振る舞いをしたかが、その後の長期的な結果 (離脱やコンバージョン) に結びつくと考えられます。

個人的には、人間の性格や選好は1年ではそんなに変わらないということかと思います。とすると、そもそもターゲットとなる顧客層は限定されるということでしょうか。もちろん、そうだったとしても、新規ユーザーにどんな体験をさせるかが重要なことには変わりませんが。

<img title="figure 8" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267335/aad7810f-b5bb-d346-fcc9-89c613fa65e1.jpeg" width=480>

## Mechanisms of Change

多くのユーザーのGS scoreが変わらないとしても、一部のユーザーは楽曲の多様性スペクトラムが移動しています。この時、ユーザードリブンの楽曲リストおよび推薦アルゴリズムによる楽曲とユーザーの楽曲多様性の間の関係はどうなっているのでしょうか。これを調べるために、GS scoreが上昇したユーザーと減少したユーザーとで $LOR$ を算出しました。

次の図が、その $LOR$ を示しています。青はユーザードリブンなコンテンツの視聴 (Stream) で、オレンジがアルゴリズムドリブンなコンテンツの視聴です[^2]。GS scoreが上昇したユーザーは、自分で楽曲をキュレートしたり、自身のプレイリストを聴いたりする割合が増えています。一方で、アルゴリズムドリブンのコンテンツの消費が減っています。

個人的には、実数として全体的に視聴回数が増えたのかどうかが気になります。楽曲が多様なユーザーはアクティビティも高い傾向にあるため、相対的には視聴が減っているように見えても、全体的には視聴が増えていそうな気がします。

<img title="figure 9" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267335/158fde89-4290-820f-2e07-ab3d33069c47.jpeg" width=480>

## Impact of Recommendations for Generalists & Specialists

推薦アルゴリズムと長期的な楽曲の多様性の減少が確認されたところで、推薦アルゴリズムとコンテンツ消費の多様性およびユーザーの行動結果の間の因果関係は何なのかというのが、自然な疑問です。直接この疑問を取り扱うのは困難なので、ここでは、3つの推薦アルゴリズムに対して、ユーザーがどのように反応するかを調査します。

All Outというプレイリストのランキングを出すアルゴリズムとして、次の3つを試します。

1. 人気に基づくもの (Popularity)
2. 楽曲とユーザーの関連性に基づくもの (Relevance)
3. ユーザーの特徴、楽曲の特徴、ユーザーと楽曲の類似性などから学習したDNN (Learned)

A/Bテストを、1週間、All Outのプレイリストを再生した54万人のフリーアカウントのユーザーで実施します。

次の表が結果を示しています。Streamsは楽曲の再生、Skipsは楽曲のスキップを意味します。 Relevance によるアルゴリズムは Popularity によるものより再生が高いものの、スキップも増えました。Streamsはスペシャリストでより高く、Skipsはジェネラリストでより高くなりました。Learned によるものは、RelevanceよりもStremsが高く、スペシャリストにおいては、Skipsも減少しました。

個人的には、やはり学習したモデルのパフォーマンスがいいとはいえ、ユーザーの初期体験がサービス利用の継続に重要だと示された以上、十分なデータのない新規ユーザーに対するいいアプローチが必要だと思いました。まあ、永遠の課題な気がしますが。

|Comparison|User Type|Song Streams|Song Skips|
|---|---|---|---|
|Relevance over popularity|Generalists|+10.03%|+4.71%|
||Specialists|+25.66%|+2.89%|
|Learned over Relevance|Generalists|+1.82%|+0.90%|
||Specialists|+1.30%|-9.76%|

# 終わり

現場からは以上です。面白そうと思った方は、ぜひ論文を読んでみてください。

# ググって見つかったSpotifyのMLについての記事
- [The Web Conference2020 参加報告会 by Wantedly](https://connpass.com/event/174856/)
    - この論文について、Wantedlyの松村さんの資料
- [Explore, Exploit, and Explain: Personalizing Explainable Recommendations with Bandits](http://jamesmc.com/blog/2018/10/1/explore-exploit-explain)
    - 別の論文、読んでいない
    - [スライド](https://static1.squarespace.com/static/5ae0d0b48ab7227d232c2bea/t/5ba85dac7817f764cdda68f4/1537760712983/bart_recsys.pdf)
- [Spotifyって機械学習をどう活用してるの？⇒元社員がQuoraで回答](http://incubit.co.jp/blog/3612)
- [WSDM2020に参加しました！ ](https://cyberagent.ai/blog/research/12087/)
    - ちょっとだけ書いてある
- [SpotifyResearchのTwitter](https://twitter.com/SpotifyResearch)

[^1]: 厳密には、activity-adjusted GS scoreですが、詳細は割愛します

[^2]: この箇所は、本文中のstreamやcontextなどの厳密な意味や計測があまり理解できていないためご容赦ください