立場新聞 Stand News

Spotify 如何估算你喜歡的歌曲

2019/5/2 — 15:57

資料圖片,來源:Burst @Pixels

資料圖片,來源:Burst @Pixels

「Spotify 可讓你隨時尋找想聽的音樂 — 包括你的手機、電腦、平板電腦及更多。」這是 Spotify 提供的免費及付費音樂串流服務,用戶可利用各種不同的設備隨時收聽自己所喜歡的音樂。很多用戶都可能沒有注意到,Spotify 一直在估算著用戶可能喜歡的音樂,從而作出歌曲推薦。最近亦提供「每週新發現」(Discover Weekly)播放清單,究竟 Spotify 如何作出歌曲建議呢?

Spotify 最近公佈付費用戶突破一億大關,而在美國地區,收費用戶 2,600 萬人,僅次於 Apple Music 的 2,800 萬付費用戶。免費用戶平均每月活躍用戶亦超過 2 億人。歌曲 3,000 萬首,向超過 60 個地區提供服務。這麼龐大的數據庫,不好好利用豈不是浪費了?所以 Spotify 的歌曲建議改一改形象,變成「每週新發現」(Discover Weekly),透過了解用家的音樂品味,每星期提供不同的播放清單讓用家選擇。

讓我用一個簡單例子去解釋歌曲建議之演算法。不論免費用戶或付費用戶都需要註冊一個帳號才可以使用服務,所以每位用戶所曾播放的歌曲都被紀錄在案。在後台的龐大數據庫中,每首歌曲會被分類及設定為多項不同屬性,例如:

廣告
  • 語言
  • 歌曲長度
  • 音調
  • 音速
  • 聲量
  • 音樂類型
  • 語言歌曲或純音樂
  • 錄製歌曲或現場演繹… 等等

而另一方面,就是用戶的歌曲播放歷史資料。除了用戶註冊時所收集到的用戶個人數據外,歌曲播放歷史及其在平台上的行為也是重要的一環。數據包括:

  • 曾播放的歌曲
  • 播放長度
  • 曾加入播放清單的歌曲
  • 喜歡的歌曲… 等等

收集各種數據後,便可以把所有數據放進系統,進行演算法分析。Spotify 所使用的演算法為 Matrix Factorization(矩陣分解)。首先了解一下如何建立 Matrix。每一個用戶在系統內都有一項紀錄,這項紀錄非常詳細,因為它包括此用戶在平台中所有的行為及相關屬性。例如,我們很容易在系統中找到有曾聽過爵士樂曲及其歌曲長度為三分鐘以上的用戶;或者,同時喜歡歌手 Jason Mraz 及 Lady Gaga 之音樂愛好者等等。當每位用家在系統內存有這項紀錄,我們便可以把所有紀錄合成為一個龐大的 Matrix。

廣告

合成 Matrix 後,內容不再是用戶自己的數據,而是用戶與用戶之間的相似度。例如,我們希望找尋用戶 A 跟用戶 B 的相似度。假設系統中只有十個歌手的歌曲,用戶 A 曾收聽其中八位歌手之歌曲,而用戶 B 則只有收聽四位歌手之歌曲,在這四位歌手之中,有兩位是用戶 A 沒有收聽過的。在這個簡單資料中,便可以尋找他們的相似度。在這個例子中,兩位用戶看來相似度很低。假若用戶 C 的紀錄顯示曾收聽其中八位歌手之歌曲,而當中只有一位歌手(例如是 Justin Bieber)是用戶 A 沒有收聽過的,相似度應該很高,對吧?系統很可能會對用戶 A 作出歌曲建議,而所建議的歌曲屬於 Justin Bieber 的。原因很簡單,因為他們看來在平台上的使用習慣很相似,所以系統便會基於他們的微小分別向另一位用戶作出建議。

Spotify 所建立的 Matrix 非常龐大,每位用戶在系統內的屬性超過一億個。所以他們所收集的數據量不可勝數,而且系統所需的運算能力亦非常高。Netflix 其實也是利用類似的方法作出影片建議,由今天開始,細心留意系統所建議的是否真的你可能喜歡的歌曲吧!

發表意見