Shimizuが徒然と語るブログ

徒然なるままに

Spotifyのレコメンドロジックについて語り尽くす

昨日Twitterで、「Spotifyのレコメンドが優れている」といった旨のツイートを 何気なく投稿したところ、フォロワー200人以下の弱小アカウントにしてはわりと盛り上がったので、 ちょっとSpotifyのレコメンドロジックについてまとめてみようと思います。

【レコメンドにおける基本の考え方】

まず、Spotify含め世の中のレコメンドエンジンを考える上で、 基本となる考え方を紹介したいと思います。 その名も、協調フィルタリングと言います。

wikipediaには、下記のように書かれてます。

"多くのユーザの嗜好情報を蓄積し、あるユーザと嗜好の類似した他のユーザの情報を用いて自動的に推論を行う方法論である。"

これだけだとあまりに説明不足なので例を挙げて説明します。 例えばZOZOTOWNの商品を、協調フィルタリングを用いて ユーザーにレコメンドするとなると、下記のような流れになります。

①ユーザー(=A君とする)がBEAMSの白いTシャツを閲覧し、購入

②裏側のレコメンドで、A君がBEAMSの白いTシャツを買った、というデータを記録

BEAMSの白いTシャツを買った人が興味を持ちそうな他の商品をレコメンド

ようは、閲覧/購買データを基に、「これも好きだろうな」というのを統計的にあぶり出し、 ユーザーにアピールして関連商品のアップセルを狙うような手法ですね。

ウェブ広告でいうリターゲティングはこの手法です。 「この商品を見た方にはこれもオススメです」みたいなのは ほぼ協調フィルタリングです。(一部例外あればすいませんですがほぼコレのはず)

この考え方を基にしてSpotifyとその他のサービスの 違いを考えていければと思います。

Spotify以外のレコメンドロジック】

全部調べたわけではないので断定はできないのですが、 ほぼ協調フィルタリングOnlyで間違いないはずです。(異論は認めます)

たとえばApple Musicだと、初期設定で好きなジャンル、アーティスト、 好きじゃない(あまり聞かない)ジャンルなどを選ぶフローがあるのですが、 そのデータを基にApple側である程度そのユーザーの好みの"アテ"をつけて、 好まれる確率の高い曲をレコメンドしているはずです。

協調フィルタリングの限界】

一見完璧に思える協調フィルタリングですが、 もちろん限界もあります。

先のZOZOTOWNの例でいうと、例えばBEAMSの白いTシャツを見たとしましょう。 裏側のレコメンドロジックが閲覧データ/購買履歴などを分析し、 「じゃあこれもどうでしょう?」という形で様々な商品をレコメンドしてくるわけですが、

「いや、こんなんいらんわ・・・俺の好み全然わかってへんやん。」

こういう経験のある方は多いと思います。

白いTシャツを購入したユーザーが他に何がほしいかを予測するのは、 結論から言うと非常に難しいです。 言い換えると、ユーザーがなぜ白いTシャツを閲覧/購入したのか、という背景は、 ユーザーによって違うわけですよ。

A君は単純にTシャツがめっちゃ好きで、Tシャツ集めているコレクターみたいなタイプだとしたら、 A君に対してSHIPSnano universeの白いTシャツをレコメンドするのは正解だと思います。

しかし、同じBEAMSの白いTシャツを買ったB君は、友人へのプレゼント用に 買っただけかもしれません。 彼にはギフト用にもう一品なにか小物でもどうですか?ぐらいの方が いいかもしれませんね。

C君は白いTシャツを買い、今度はそれに合うジーンズや、 上に羽織るシャツがほしいと思っているかもしれません。

パッと思いつくだけでもユーザーの好みって人それぞれで多様化しているので、 それを杓子定規に、「白いTシャツが好きな人はきっと白いTシャツを他にも買ってくれるだろう」と決めつけて レコメンドすること自体がナンセンスなんですよね。

同じように考えるとApple Musicもそうで、 いくらJ-POPが好きな人でも洋楽ではまる可能性のある曲っていくらでもあるんですよね。 しかしながら、協調フィルタリングだと「J-POP好きがはまる洋楽の曲」を抽出するのが 難しく、抽出できても好みにはまらない可能性が高いです。 結果的に、J-POP好きには西野カナとか、いわゆる「大きく外さない」レコメンドになるので、 非常に退屈になってしまうんですね。

もちろん、「外さない」というのはひとつ大きな価値ではあるのですが、 それが過半数の人の好みにマッチしているとはとてもではないですが言い難いです。 よくて10-15%ぐらいの人(これでもおそらくマジョリティ)の人に ヒットすればいい方なんじゃないでしょうか。 それぐらい人の好みは多種多様で、それを協調フィルタリングでカバーすることは 到底無理な話だと僕は考えてます。

Spotifyのレコメンドロジック】

協調フィルタリングについてひととおり語りきったので、 ここからはSpotifyのレコメンドの中身に入っていこうと思います。

これはQuoraに元Spotifyの中の人の回答があったので、 それをまずは紹介する形で論を展開していこうと思います。 (一番上のErik Bernhardssonの回答です)

How did Spotify get so good at machine learning? Was machine learning important from the start, or did they catch up over time? - Quora

TOEIC約900点(学生時代)ですが頑張って要点を日本語でまとめると、

・最初は協調フィルタリング中心のロジック

・その後、Echo Nestを買収。(2014-2015年あたり) 優秀な人材の確保に成功 しかしEcho Nestの得意とする、曲のテンポなどの分析データを基に類似した曲を ユーザーにレコメンドする機能は結局実装まで至らずだった(←ほんとかな?)

インターンとしてSpotifyで働いていたSander Dielemanという方により、 曲のテンポなどを分析し、似ている曲をレコメンドする手法を開発 それが結果的にうまくいった(←Echo Nestの技術を導入すればよかったのでは。。。)

・現在は協調フィルタリングとマシーンラーニングの両輪でロジックを回している (氏はすでに退社済みなのであくまで推測)

まとめると、協調フィルタリングによるユーザーの行動履歴で当てにいく部分と、 聞いている曲のテンポなどを分析し、協調フィルタリングだと当てはまらないけど 似ている曲をレコメンドする部分、という2軸でロジックが動いているのかなと思います。

Spotifyのレコメンドロジックが完璧だと言うつもりは全く無いですが、 少なくとも協調フィルタリングOnlyの他のプロダクトよりは 相対的に優れているはずです。 協調フィルタリングは、なるべく外さない「守り」のレコメンドですが、 Spotifyは類似した曲をレコメンドする「攻め」の部分も持ち合わせてますからね。

さらに、Spotifyでズバッと好みの曲を当てられたユーザーは、 その瞬間に畏敬の念を抱くに違いありません。 (僕もその一人です)

Spotifyの有料課金ユーザーの離脱率がどれぐらいなのかはわからないですが、 個人的にははまってしまったら抜けられなくなるので、 曲をズバッと当てられる体験をしたユーザーが増えれば増えるほど 競合優位性は高まっていくのではないでしょうか。

【まとめ】

少し長くなりましたが、Spotifyのレコメンドロジックについて 自分なりにまとめてみました。

というか、本来ならSpotifyのマーケ担当の仕事ではないでしょうかw このような明らかな優位性をアピールしないのは非常にもったいないです!!

Spotify Japanのみなさま、絶対にAppleに負けないでください。 どうぞよろしくお願いいたします。

※注※ Spotifyの中の人ではないので推論を含みます 「これ違うんじゃね?」みたいなご意見はどんどん欲しいです