這一系列的文章是關於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的流程和大部分公司都沒什麼區別。