Netflix 推薦系統 (Part One)-排序演算法

做推薦的Bella醬發表於2018-09-27

這一系列的文章是關於netflix techblog的推薦系統相關文章的總結。大部分內容來自netflix-techblog:recommendations

按照時間順序,最早的關於推薦系統的文章發表於2012年.

Netflix Recommendations: Beyond the 5 stars (Part 1)

Netflix Recommendations: Beyond the 5 stars (Part 1)

最早在2006年,Netflix舉辦了一個名叫Netflix Prize的比賽,用來徵集movie rating prediction演算法。最終, Matrix Factorization和Restricted Boltzmann Machines (RBM)演算法在比賽中取得了最好的結果。Netflix把這兩個演算法用到了自己的產品中。 Netflix在這篇blog中闡述了推薦演算法的重要性以及他們為什麼要使用推薦演算法,但我們忽略這一部分,只闡述技術相關的問題。

從使用者進入首頁開始,Netflix就開始在各種地方使用推薦系統,以使使用者儘可能獲得個性化的體驗。Netflix的推薦系統有這些目標:

  • Accuracy:這是一般推薦系統都有的預測準確度的目標
  • Diversity:在家庭使用的場景,多樣性尤為重要
  • Awareness:Netflix希望使用者知道個性化內容是怎樣生成的,其中最典型的一個做法是explainable recommendation reason

在推薦理由的視覺化上,Netflix充分利用了與Facebook的連線,這樣他們就可以使用好友的興趣愛好來進行reco以及reco reason的解析。

一些最有識別度的collection被稱為genre,這相當於一些cluster,根據這些cluster推薦能更好地保證diversity。內容之間的similarity也是考慮的重點,實際上,大部分推薦系統都是以此為根基的。 Netflix的推薦系統從結構上就是經典的普通推薦系統,主要由retriver和ranker組成,而上述的演算法主要是用在ranking階段的。

Netflix Recommendations: Beyond the 5 stars (Part 2)

Netflix Recommendations: Beyond the 5 stars (Part 2)

Ranking是推薦系統最重要的組成部分之一。推薦系統的目標主要是提供一些有吸引力的物品供人選擇。 這通常通過選擇一些專案並按某個指標的順序對其進行排序來完成。 最常見的呈現推薦專案的方式是某種形式的列表,推薦系統需要一個適當的排名模型,可以使用各種各樣的資訊來為每個專案提供最佳的專案排名。 Netflix選擇的排序目標是"受歡迎程度"和"預期使用者評分",這是很容易理解的,當然在實際情況的不同場景中,還會有很多其它的附屬指標。

許多監督學習方法可用於排名。 典型的選擇包括Logistic迴歸,支援向量機,神經網路或基於決策樹的方法,如梯度提升決策樹(GBDT)。 另一方面,近年來出現了大量專門用於學習排名的演算法,例如RankSVM或RankBoost。 沒有簡單的辦法去確定哪種模型在給定的排名問題中表現最佳。您的特徵空間越簡單,您的模型就越簡單。 只有和特徵空間和實際情況匹配的演算法,才是好演算法。

Data and Models

Netflix的資料來源包括:

  • 來自使用者的數十億item rating。每天收到數百萬的new ratings。
  • 使用item popularity作為基線。有很多方法可以計算受歡迎程度,可以在不同的時間範圍內計算它,例如每小時,每天或每週。或者按地區或其他相似性指標對成員進行分組,並計算該組內的受歡迎程度.
  • 每天收到數百萬個流播放事件,其中包括持續時間,時間和裝置型別等上下文。
  • 使用者每天都會在他們的佇列中新增數百萬個專案。
  • 每個item都有豐富的後設資料:演員,導演,流派,家長評級和評論。
  • 知道Netflix推薦的專案以及向使用者展示的內容,並瞭解這些如何影響使用者的行動。還可以觀察使用者的interaction:滾動,滑鼠懸停,點選或在給定頁面上花費的時間。
  • 社交資料:可以處理相關朋友觀看或評分的內容。
  • 使用者每天直接在Netflix服務中輸入數百萬個搜尋字詞。
  • 上面提到的所有資料都來自內部資源。還可以利用外部資料來改進的功能。例如,可以新增外部專案資料功能,如票房表現或評論。
  • 當然,這還不是全部:還有許多其他功能,例如可以在預測模型中使用的人口統計,位置,語言或時間資料。

以下model是Netflix曾經考慮或者嘗試過的,但這並不是全部:

  • Linear regression
  • Logistic regression
  • Elastic nets
  • Singular Value Decomposition
  • Restricted Boltzmann Machines
  • Markov Chains
  • Latent Dirichlet Allocation
  • Association Rules
  • Gradient Boosted Decision Trees
  • Random Forests
  • Clustering techniques from the simple k-means to novel graphical approaches such as Affinity Propagation
  • Matrix factorization

資料驅動是我們研究推薦系統時一般會採用的方法,Netflix也不例外。具體表現就是,每個上線的演算法都要經過AB test。它的AB Test的流程和大部分公司都沒什麼區別。

Netflix 推薦系統 (Part One)-排序演算法

相關文章