Statsbot數(shù)據(jù)科學家Daniil Korbut簡明扼要地介紹了用于推薦系統(tǒng)的主流機器學習算法:協(xié)同過濾、矩陣分解、聚類、深度學習。
現(xiàn)在有許多公司使用大數(shù)據(jù)來制定高度相關的建議以提高收入。數(shù)據(jù)科學家需要根據(jù)業(yè)務的限制和需求,在各種推薦算法中選擇最好的算法。
為了簡化這一任務,Statsbot團隊準備了一份現(xiàn)有主要推薦系統(tǒng)算法的概覽。
協(xié)同過濾
協(xié)同過濾(collaborative filtering, CF)及其改版是最常用的推薦算法之一。 即使是數(shù)據(jù)科學初學者也可以使用它來構建他們的個人電影推薦系統(tǒng),比如用它寫一個簡歷項目。
當我們想向用戶推薦東西時,最符合邏輯的做法是找到有相似興趣的人,分析他們的行為,然后給我們的用戶推薦相同的東西。 或者我們可以查看與用戶之前所購類似的物品,并進行相應的推薦。
這正是CF的兩種基本方法:基于用戶的協(xié)作過濾和基于物品的協(xié)作過濾。
在這兩種情形下,推薦引擎分兩步:
-
找出數(shù)據(jù)庫中有多少用戶/物品與給定的用戶/物品類似。
-
評估其他用戶/物品,這一評估基于比待評估用戶/物品更相似的用戶/物品的總權重,以預測給用戶推薦相應產(chǎn)品的評分。
算法中的“最相似”是什么意思?
假設我們有一個表示每個用戶的偏好的向量(矩陣 R的行)和一個表示用戶給每件產(chǎn)品評分的向量(矩陣 R的列)。
首先,讓我們?nèi)コ恍┰兀槐A魞蓚€向量中值均已知的元素。
例如,如果我們想比較比爾和簡,我們可以看到,比爾還沒有看過《泰坦尼克號》,而簡到現(xiàn)在為止還沒看過《蝙蝠俠》,所以我們只能通過《星球大戰(zhàn)》來衡量他們的相似性。怎么會有人不看《星球大戰(zhàn)》,是吧?:)
最流行的衡量相似性的技術是用戶/物品向量之間的余弦相似性或加權平均數(shù)。
矩陣分解
下一個有趣的算法是矩陣分解。這是一個非常優(yōu)雅的推薦算法,因為使用矩陣分解時通常不用考慮要在結果矩陣的列和行中保留的物品。
u是第i個用戶的興趣向量,v是表示第j部電影的參數(shù)的向量。因此,我們可以使用u和v的點積來逼近x(第i個用戶對第j部電影的評分)。我們使用已知評分來構建這些向量,并使用它們來預測未知評分。
例如,我們有表示用戶特德的向量(1.4; .9)和表示電影A的向量(1.4; .8),矩陣分解之后我們可以直接通過計算(1.4; .9)和(1.4; .8)的點積來還原電影A——特德的評分,結果為2.68。
聚類
前面兩個推薦算法非常簡單,比較適合小型系統(tǒng)。到目前為止,我們將推薦問題看作一個監(jiān)督學習任務?,F(xiàn)在到了應用無監(jiān)督方法來解決這個問題的時候了。
想象一下,我們正在建立一個大型推薦系統(tǒng),協(xié)同過濾和矩陣分解會花很長時間。這時第一個想到的應該是聚類(clustering)。
根據(jù)屬于同一聚類的所有客戶的偏好,每個聚類會被分配一個典型偏好。每個聚類中的客戶將收到在聚類層次計算出的推薦。
業(yè)務初期缺乏用戶評分,因此聚類會是最佳選擇。
不過,單獨使用的話,聚類有點弱。因為通過聚類,我們識別出用戶群組,然后給同一群組中的每個用戶都推薦相同的物品。當我們有足夠多的數(shù)據(jù)的時候,更好的選擇是將聚類作為第一步,用來調(diào)整相關用戶/物品選取,以供協(xié)同過濾算法使用。聚類也能提升復雜推薦系統(tǒng)的性能。
深度學習
十年來,神經(jīng)網(wǎng)絡有一個巨大的飛躍。今天,神經(jīng)網(wǎng)絡被應用到許多領域,正逐漸取代傳統(tǒng)的機器學習方法。我想談一下YouTube使用的深度學習方法。
毫無疑問,為這樣的服務打造推薦系統(tǒng)是一項非常具有挑戰(zhàn)性的任務,因為這一服務的規(guī)模很大,語料庫是動態(tài)的,還有各種難以觀察的外部因素。
根據(jù)《YouTube推薦系統(tǒng)的深度神經(jīng)網(wǎng)絡》,YouTube推薦系統(tǒng)算法包括兩個神經(jīng)網(wǎng)絡:一個用于生成候選視頻,另一個用于排名。如果你沒有足夠的時間閱讀上面的論文,我這里有一個快速總結。
接受用戶的歷史事件作為輸入,候選生成網(wǎng)絡顯著減少了視頻的數(shù)量,從一個巨大的語料庫抽取出一組相關性最高的視頻。生成的候選視頻是最和用戶相關的,我們即將預測用戶給候選視頻的評分。這個網(wǎng)絡的目標只是通過協(xié)同過濾來提供一些范圍較廣的個性化候選視頻。
接下來我們需要更仔細地分析這些候選視頻,以挑選出其中最好的視頻。我們通過評分網(wǎng)絡完成這一任務,評分網(wǎng)絡可以通過一個期望目標函數(shù)給每個視頻賦值一個分數(shù),該期望目標函數(shù)使用描述視頻的數(shù)據(jù)和有關用戶行為的信息。評分最高的那些視頻將被推薦給用戶。
使用這一兩步方法,我們可以基于一個非常巨大的視頻語料庫推薦視頻,同時保證推薦的少量視頻是個性化的。這一設計也允許我們混合從其他來源生成的候選視頻。
這一推薦任務構成了一個極端多類分類(extreme multiclass classification)問題,基于用戶(U)和情境(C)精確地分類在給定時刻t觀看(wt)的特定視頻,這一視頻取自一個語料庫(V),總共有數(shù)百萬的視頻類別(i)。
構建你自己的推薦系統(tǒng)
-
基于大型數(shù)據(jù)庫的在線推薦,最好的辦法是將這個問題拆分成兩個子問題:1)選擇排名最高的N個候選 2)對它們進行評分。
-
如何評估模型質(zhì)量?除了標準的質(zhì)量指標之外,還有一些特別針對推薦問題的指標:Recall at K和Precision at K,Average Recall at K和Average Precision at K。另外可以參考《A Survey of Accuracy Evaluation Metrics of Recommendation Task》(JMLR 10 (2009))
-
如果使用分類算法解決推薦問題,則應考慮生成負樣本。如果用戶購買了推薦的物品,不應將其作為正樣本,也不應將未購買的推薦物品作為負樣本。
-
基于在線分數(shù)和離線分數(shù)考量算法質(zhì)量。 僅使用歷史數(shù)據(jù)的訓練模型可能導向簡陋的推薦系統(tǒng),因為該算法不知道新的潮流和偏好。
-
聚類
+關注
關注
0文章
146瀏覽量
14212 -
協(xié)同過濾
+關注
關注
0文章
45瀏覽量
9785 -
矩陣分解
+關注
關注
1文章
13瀏覽量
3676
原文標題:推薦系統(tǒng)機器學習算法概覽
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論