search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

乾貨 :詳解個性化推薦五大最常用演算法

推薦系統,是當今互聯網背後的無名英雄。

我們在某寶首頁看見的商品,某條上讀到的新聞,甚至在各種地方看見的廣告,都有賴於它。

昨天,一個名為Stats&Bots的博客詳解了構建推薦系統的五種方法。

量子位編譯如下:

現在,許多公司都在用大數據來向用戶進行相關推薦,驅動收入增長。推薦演算法有很多種,數據科學家需要根據業務的限制和要求選擇最好的演算法。

為了簡化這個任務,Statsbot團隊寫了一份現有的主要推薦系統演算法的概述

協同過濾

協同過濾(Collaborative filtering, CF)及其變體是最常用的推薦演算法之一。即使數據科學的新手也可以用它來構建自己的個人電影推薦系統,起碼可以寫在簡歷上。

我們想給用戶推薦東西,最合乎邏輯方法是找到具有相似興趣的人,分析他們的行為,並向用戶推薦相同的項目。另一種方法是看看用於以前買的商品,然後給他們推薦相似的。

CF有兩種基本方法:基於用戶的協同過濾和基於項目的協同過濾。

無論哪種方法,推薦引擎有兩個步驟:

  • 了解資料庫中有多少用戶/項目與給定的用戶/項目相似。

  • 考慮到與它類似的用戶/項目的總權重,評估其他用戶/項目,來預測你會給該產品用戶的打分。

「最相似」在演算法中是什麼意思?

我們有每個用戶的偏好向量(矩陣R的行),和每個產品的用戶評分向量(矩陣R的列),如下圖所示。

首先,我們只留下兩個向量的值都已知的元素。

例如我們想比較Bill和Jane,已知比爾沒有看泰坦尼克號,Jane沒看過蝙蝠俠,於是,我們只能通過星戰來衡量他們的相似度了。誰沒看過星球大戰呢是吧?

測量相似度的最流行方法是餘弦相似性或用戶/項目向量之間的相關性。最後一步,是根據相似度用加權算術平均值填充表中的空單元格。

矩陣分解

這是一個非常優雅的推薦演算法,因為當涉及到矩陣分解時,我們通常不會太多地去思考哪些項目將停留在所得到矩陣的列和行中。但是使用這個推薦引擎,我們清楚地看到,u是第i個用戶的興趣向量,v是第j個電影的參數向量。

所以我們可以用u和v的點積來估算x(第i個用戶對第j個電影的評分)。我們用已知的分數構建這些向量,並使用它們來預測未知的得分。

例如,在矩陣分解之後,Ted的向量是(1.4; .8),電影A的向量是(1.4; .9),現在,我們可以通過計算(1.4; .8)和(1.4; .9)的點積,來還原電影A-Ted的得分。結果,我們得到2.68分。

聚類

上面兩種演算法都極其簡單,適用於小型系統。在這兩種方法中,我們把推薦問題當做一個有監督機器學習任務來解決。

現在,該開始用無監督學習來解決問題了。

假設我們正在建立一個大型推薦系統,這時協同過濾和矩陣分解花費的時間更長了。第一個浮現在腦海里的解決之道,就是聚類。

業務開展之初,缺乏之前的用戶數據,聚類將是最好的方法。

不過,聚類是一種比較弱的個性化推薦,因為這種方法的本質是識別用戶組,並對這個組內的用戶推薦相同的內容。

當我們有足夠數據時,最好使用聚類作為第一步,來縮減協同過濾演算法中相關鄰居的選擇範圍。這個方法還能挺高複雜推薦系統的性能。

每個聚類都會根據其中用戶的偏好,來分配一組典型的偏好。每個聚類中的用戶,都會收到為這個聚類計算出的推薦內容。

深度學習

在過去的十年中,神經網路已經取得了巨大的飛躍。如今,神經網路已經得以廣泛應用,並逐漸取代傳統的機器學習方法。

接下來,我要介紹一下YouTube如何使用深度學習方法來做個性化推薦。

毫無疑問,由於體量龐大、動態庫和各種觀察不到的外部因素,為YouTube用戶提供推薦內容是一項非常具有挑戰性的任務。

根據《Deep Neural Networks for YouTube Recommendations》( https://static.googleusercontent.com/media/research.google.com/ru//pubs/archive/45530.pdf ),YouTube的推薦系統演算法由兩個神經網路組成:一個用於候選生成,一個用於排序。如果你沒時間仔細研究論文,可以看看我們下面給出的簡短總結。

以用戶的瀏覽歷史為輸入,候選生成網路可以顯著減小可推薦的視頻數量,從龐大的庫中選出一組最相關的視頻。這樣生成的候選視頻與用戶的相關性最高,然後我們會對用戶評分進行預測。

這個網路的目標,只是通過協同過濾提供更廣泛的個性化。

進行到這一步,我們得到一組規模更小但相關性更高的內容。我們的目標是仔細分析這些候選內容,以便做出最佳的選擇。

這個任務由排序網路完成。

所謂排序就是根據視頻描述數據和用戶行為信息,使用設計好的目標函數為每個視頻打分,得分最高的視頻會呈獻給用戶。

通過這兩步,我們可以從非常龐大的視頻庫中選擇視頻,並面向用戶進行有針對性的推薦。這個方法還能讓我們把其他來源的內容也容納進來。

推薦任務是一個極端的多類分類問題。這個預測問題的實質,是基於用戶(U)和語境(C),在給定的時間t精確地從庫(V)中上百萬的視頻類(i)中,對特定的視頻觀看(Wt)情況進行分類。

建立推薦系統前該知道的要點

如果你有一個龐大的資料庫,而且準備提供在線的推薦,最好把這個任務拆分成兩個子問題:

  • 選擇Top N個候選;

  • 排序。

如衡量推薦模型的質量?

如果你正在使用分類演算法解決推薦問題,應該考慮生成負例樣本。如果用戶購買了推薦的商品,你應該將其添加為正例樣本,而其他列為負例樣本。

要從在線得分和離線得分兩個方面考察演算法質量。一個只基於歷史數據的訓練模型,可能會導致低水平的推薦,因為演算法沒辦法與時俱進。



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦