1. 程式人生 > >主要推薦系統演算法總結及Youtube深度學習推薦演算法例項概括

主要推薦系統演算法總結及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)對它們進行排序。
  • 你怎樣衡量你的模型的質量?除了標準化的質量指標,還有一些用於推薦問題中特定的指標:[email protected][email protected]也可看一下推薦系統的最佳描述指標。
  • 如果你正在使用分類演算法解決推薦問題,你應該考慮生成負樣本(negative samples)。如果一個使用者買了一件推薦的商品,你不應該把它當做正樣本(positive sample)來進行新增,也不應該把其餘作為負樣本來處理。
  • 考慮一下你的演算法質量的線上與離線評分。一個僅基於歷史資料的訓練模型可以產生簡單的推薦結果,因為該演算法並不會知道未來的新趨勢與偏好。

原文連結:https://blog.statsbot.co/recommendation-system-algorithms-ba67f39ac9a3

相關推薦

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

現如今,許多公司使用大資料來做超級相關推薦,並以此來增加收益。在海量推薦演算法中,資料科學家需要根據商業限制以及需求來選擇最佳演算法。為使其簡單化,Statsbot 團隊為現有的主要推薦系統演算法準備了一份概述。 協同過濾 協同過濾(CF)及其變式是最常用的推薦演算法之一。即使是資料科學的初學者,

YouTube 深度學習推薦系統的十大工程問題

這篇文章主要介紹了 YouTube 深度學習系統論文中的十個工程問題,為了方便進行問題定位,我們還是簡單介紹一下背景知識,簡單回顧一下 Deep Neural Networks for YouTube Recommendations中介紹的 YouTube 深度學習推薦系統的框架。(更詳細的資訊,請參見重讀

廣告行業中那些趣事系列9:一網打盡Youtube深度學習推薦系統

最新最全的文章請關注我的微信公眾號:資料拾光者。   摘要:本篇主要分析Youtube深度學習推薦系統,借鑑模型框架以及工程中優秀的解決方案從而應用於實際專案。首先講了下使用者、廣告主和抖音這一類視訊平臺三者之間的關係:就是平臺將視訊資源作為商品免費賣給使用者,同時將使用者作為商品有償賣給廣告主

乾貨 | 個性化推薦系統五大研究熱點之深度學習(一)

【編者按】在這個科技高速發展、資訊爆炸的時代,毫不誇張地說,推薦系統已經完全融入了我們的生活。我們去哪一家餐館、買哪一件衣服、瀏覽哪一類資訊、觀看哪一種視訊,很大程度上都取決於背後的推薦系統。 在本文中,微軟亞洲研究院社會計算組的研究員們從深度學習、知識圖譜、強化學習、使用者畫像、可解釋性推薦等五個方面,展望

286頁PDF教你如何搞明白深度學習演算法、理論與計算系統!(可下載)

【導讀】如何將深度學習等AI演算法應用到實際場景裡,不是一件容易的事情。 2016年,卡耐基梅隆大學電腦科學院的終身教授邢波(Eric Xing)在匹茲堡創辦了Petuum,他致力於建立一個平臺,通過自定義的虛擬化和作業系統構建機器學習和深度學習應用程式,為企業提供所需的機器學習工具。結合

深度學習 --- BP演算法詳解(流程圖、BP主要功能、BP演算法的侷限性)

上一節我們詳細推倒了BP演算法的來龍去脈,請把原理一定要搞懂,不懂的請好好理解BP演算法詳解,我們下面就直接把上一節推匯出的權值調整公式拿過來,然後給出程式流程圖,該流程圖是嚴格按照上一節的權值更新過程寫出的,因此稱為標準的BP演算法,標準的BP演算法中,每輸入一個樣本,都要回傳誤差並調整權值,

常見排序演算法總結效能比較

一.常見排序演算法有哪些 二. 插入排序 1.直接插入排序 基本思想:插入排序是每次將一個待排序的記錄,按照大小,插入到前面已經排好的有序區中適當的位置,直到將所有記錄插入完位置。大概思想是將待

吳恩達機器學習(十四)推薦系統(基於梯度下降的協同過濾演算法

目錄 0. 前言 學習完吳恩達老師機器學習課程的推薦系統,簡單的做個筆記。文中部分描述屬於個人消化後的理解,僅供參考。 如果這篇文章對你有一點小小的幫助,請給個關注喔~我會非常開心的~ 0. 前言 在推薦系統中,主要有兩種方法,基於內容的推薦

Java推薦系統-基於使用者的最近鄰協同過濾演算法

基於使用者的最近鄰演算法(User-Based Neighbor Algorithms),是一種非概率性的協同過濾演算法,也是推薦系統中最最古老,最著名的演算法,我們稱那些興趣相似的使用者為鄰居,如果使用者n相似於使用者u,我們就說n是u的一個鄰居。起初演算法,對於未知目標的預測是根據該使用者的

推薦系統】詳解基於內容的推薦演算法

作者:章華燕編輯:田 旭前言在第一篇文章《推薦演算法綜述》中我們說到,真正的推薦系統往往是多個推

個性化推薦系統技術總結

1 概述 個性化推薦系統 作為一種資訊過濾系統,個性化推薦系統在近幾年得到了學術界和工業界的廣泛關注。這與網際網路的資訊爆炸是分不開的,只有資訊量超過了使用者的處理能力,推薦系統才能發揮重要作用。 個性化推薦演算法都來自於傳統的機器學習和資料探勘的演算法,並沒有什麼特殊的地

推薦系統實踐》——基於物品的協同過濾演算法(程式碼實現)

一、基礎演算法 基於物品的協同過濾演算法(簡稱ItemCF)給使用者推薦那些和他們之前喜歡的物品相似的物品。不過ItemCF不是利用物品的內容計算物品之間相似度,而是利用使用者的行為記錄。 該演算法認為,物品A和物品B具有很大的相似度是因為喜歡物品A的使用者

【JAVA】常用加解密演算法總結JAVA實現【BASE64,MD5,SHA,DES,3DES,AES,RSA】

BASE64 這其實是一種編解碼方法,但是隻要我們能夠將原文變成肉眼不可識別的內容,其實就是一種加密的方法。 BASE64 的編碼都是按字串長度,以每 3 個 8 bit 的字元為一組,然後針對每組,首先獲取每個字元的 ASCII 編碼,然後將 ASCII 編碼轉換成 8

DAY7: 神經網路深度學習基礎--演算法的優化(deeplearning.ai)

一、mini-batch gradient descent(批量梯度下降法) mini-batch size的確定(結餘1~m之間,有利於充分利用向量化和每次訓練部分樣本以提高訓練速度) ①對於樣本總數小於2000個時,用總體的梯度下降法 ②典型的mini-batch s

各種排序演算法總結C#程式碼實現

 排序是計算機內經常進行的一種操作,其目的是將一組“無序”的記錄序列調整為“有序”的記錄序列。分內部排序和外部排序。若整個排序過程不需要訪問外存便能完成,則稱此類排序問題為內部排序。反之,若參加排序的記錄數量很大,整個序列的排序過程不可能在記憶體中完成,則稱此類排序問

排序演算法總結面試題

// d為資料長度 private static void radixSorting(int[] arr, int d) { for (int i = 1; i <=d; i++) { int[] res = countingSort(arr,

KMP演算法總結相關例題

KMP演算法總結 相關介紹KMP演算法的文章很多,在這裡並不累述,主要寫一下其中的要點 KMP演算法主要是兩個步驟  1. getnext : 生成next表(時間複雜度O(lenP))      

推薦系統--方法總結

在推薦系統簡介中,我們給出了推薦系統的一般框架。很明顯,推薦方法是整個推薦系統中最核心、最關鍵的部分,很大程度上決定了推薦系統性能的優劣。目前,主要的推薦方法包括:基於內容推薦、協同過濾推薦、基於關聯規則推薦、基於效用推薦、基於知識推薦和組合推薦。 一、基於內容推薦

字串查詢演算法總結MS的strstr原始碼

http://www.cnblogs.com/ziwuge/archive/2011/12/09/2281455.html 首先

深度學習優化演算法總結

  深度學習優化演算法最耳熟能詳的就是GD(Gradient Descend)梯度下降,然後又有一個所謂的SGD(Stochastic Gradient Descend)隨機梯度下降,其實還是梯度下降,只不過每次更新梯度不用整個訓練集而是訓練集中的隨機樣本。梯度下降的好處就是用到了當前迭代的一些性質,以至於總