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

推薦系統主要演算法總結及Youtube深度學習推薦演算法實例概括

現如今,許多公司使用大數據來做超級相關推薦,並以此來增加收益。在海量推薦演算法中,數據科學家需要根據商業限制以及需求來選擇最佳演算法。為使其簡單化,Statsbot 團隊為現有的主要推薦系統演算法準備了一份概述。

協同過濾

協同過濾(CF)及其變式是最常用的推薦演算法之一。即使是數據科學的初學者,也能憑之建立起自己的個性化電影推薦系統,例如,一個簡歷項目。

當我們想要向某個用戶推薦某物時,最合乎情理的事情就是找到與他/她具有相同愛好的用戶,分析其行為,並且為之推薦相同的東西。或者我們可以關注那些與該用戶之前購買物品相似的東西,並推薦相似的產品。

協同過濾(CF)有兩種基本方法,它們分別是:基於用戶的協同過濾技術和基於項目的協同過濾技術。

該推薦演算法的以上情形中均包含兩步:

1. 找到資料庫中有多少用戶/項目與目標用戶/項目相似。

2. 在給定與某產品用戶/項目更相似的用戶/項目的總權重時,評估其它用戶/項目,來預測你給用戶的相關產品的評分。

在該演算法中,「最為相似」意味著什麼?

我們擁有的是每一位用戶的偏好向量(矩陣 R 的列),以及每一個產品的用戶評分的向量(矩陣 R 的行)。

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

舉個例子,如果我們想比較 Bill 和 Jane,我們知道的信息是 Bill 沒有看過泰坦尼克號,Jane 沒有看過蝙蝠俠,那麼我們只能通過星戰來衡量他們的相似度。怎麼可能會有人不看星戰,對吧?(微笑)

最流行的測量相似度的方法,是測量用戶/項目向量的餘弦相似度(cosine similarity)或相關度(correlations)。最後一步是根據相似程度,採取加權算術平均方法,填滿表中的空單元格。

用於推薦的矩陣分解

另一個有趣的方法是使用矩陣分解。這是一種優雅的推薦演算法,因為通常在矩陣分解時,我們不會過多考慮結果矩陣的行列中哪些項(item)會被保留。但使用該推薦工具時,我們可以清楚地看到 u 是關於第 i 個用戶的興趣的向量,而 v 是關於第 j 部電影的參數的向量。

於是我們能夠通過 u 和 v 的點積來估計 x(第 i 個用戶對第 j 部電影的評分)。我們用已知的評分建立這些向量並以此預測未知的評分。

舉個例子,矩陣分解后我們獲得了 Ted 的向量(1.4;.9)和電影 A 的向量(1.4; .8),現在我們可以僅僅通過計算(1.4; .9)和(1.4; .8)的點積來還原電影 A-Ted 的評分,評分結果為 2.68。

聚類

以前的推薦演算法比較簡單並且適用於小系統。而且直到現在,我們仍把推薦問題設想成一個監督式機器學習任務。現在是時候用非監督方法來解決此類問題了。

設想一下,我們是正在建造一個大型推薦系統,在此系統中協同過濾和矩陣分解這兩項工作的時間應該更長。而第一種設想就是聚類(clustering)。

在業務的開始階段,往往是缺乏先前用戶的等級劃分的,而聚類則是最好的方法。

但是如果單獨使用,聚類就顯得有一些薄弱了,因為事實上我們所做的事情其實是對用戶組別進行鑒定,並且為本組裡的每一位用戶推薦相同的東西。當我們擁有了足夠的數據的時候,使用聚類方法作為第一步是更好的選擇,這樣可以減少協同過濾演算法中的相關近鄰(neighbor)的選擇。它也可以改善複雜推薦系統的性能表現。

每一個群集(cluster)都會被分配有代表性的偏好,這是以屬於該群集的用戶的偏好為基礎的。每一組群集的用戶都會收到在群集層面上計算過的推薦結果。

推薦系統的深度學習方法

在過去十年,神經網路的發展已經有了巨大的飛躍。現在它們正被應用於各種各樣的應用,並且正在逐漸代替傳統的機器學習方法。下面我將展示深度學習方法是如何在 Youtube 中被使用的。

毋庸置疑,由於其規模大,語料庫不斷變化,以及種種不可觀測的外部因素,為這樣的服務項目製作推薦系統是一項極具挑戰性的任務。

根據「YouTube 推薦系統的深度神經網路」的相關研究,YouTube 推薦系統演算法包含兩部分神經網路:一個是用於候選集生成(candidate generation),另一個則是用於排序。如果你沒有足夠的時間,我將在這裡給你進行一個簡要的概括。

使用用戶的歷史作為輸入,候選集生成網路(candidate generation network)顯著地減少了視頻的數量,並且可以從一個大型語料庫中選取一組最相關的視頻集。生成的候選集對用戶來說是最為相關的,此神經網路的目的僅僅是為了通過協同過濾來提供一個寬泛的個性化服務。

在這一步中,我們擁有了更少量的候選結果,這些結果與用戶需求更加接近。我們現在的目的是仔細地分析所有候選結果,這樣我們就可以做出最好的決策。此任務是由排序網路(ranking network)來完成的,它可以根據一個期望的目標函數為每一個視頻都分配一個分數,這個目標函數是使用數據來對有關用戶行為的視頻和信息來進行描述的。

使用兩階段法(two-stage approach),我們就能夠從很大的視頻語料庫中做出視頻推薦,然而可以確信的是,這些推薦結果中只有少量是個性化的,而且是被用戶真正進行應用的。這一設計也能使我們把其它資源生成的結果和這些候選結果混合在一起。

推薦任務就像是一個極端的多類別分類問題,預測問題變成了一個在給定的時間 t 下,基於用戶(U)和語境(C),對語料庫(V)中數百萬的視頻類別(i)中的一個特定視頻(wt)進行精準分類的問題。

在創建你自己的推薦系統前要注意的要點:

  • 如果你擁有一個很大的資料庫,並且你要用它進行在線推薦,最好的方式就是把這個問題分成兩個子問題:1)選擇前 N 個候選結果,2)對它們進行排序。
  • 你怎樣衡量你的模型的質量?除了標準化的質量指標,還有一些用於推薦問題中特定的指標:Recall@k,Precision@k也可看一下推薦系統的最佳描述指標。
  • 如果你正在使用分類演算法解決推薦問題,你應該考慮生成負樣本(negative samples)。如果一個用戶買了一件推薦的商品,你不應該把它當做正樣本(positive sample)來進行添加,也不應該把其餘作為負樣本來處理。
  • 考慮一下你的演算法質量的在線與離線評分。一個僅基於歷史數據的訓練模型可以產生簡單的推薦結果,因為該演算法並不會知道未來的新趨勢與偏好。

本文由機器之心編譯出品,原文來自Statsbot,出處:https://www.jiqizhixin.com/articles/a9e87160-b26c-4ac4-abfa-0a1edeaa899f


熱門推薦

本文由 yidianzixun 提供 原文連結

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