1. 程式人生 > >一文讀懂推薦系統知識體系(資料派THU 李中傑)

一文讀懂推薦系統知識體系(資料派THU 李中傑)

1. 推薦系統的3個W

1.1 是什麼(What is it?)

推薦系統就是根據使用者的歷史行為、社交關係、興趣點、所處上下文環境等資訊去判斷使用者當前需要或感興趣的物品/服務的一類應用。

1.2 為什麼(Why is that?)

為什麼我們要用到推薦系統呢?隨著資訊科技和網際網路的發展,人類從資訊匱乏時代走向了資訊過載(Information Overload)時代

對於資訊消費者,也就是使用者,從大量資訊中找到自己感興趣的資訊變得越來越困難;對於資訊生產者,讓自己生產的資訊在眾多資訊中脫穎而出也變得越來越困難。推薦系統正是為了解決這一矛盾而應運而生的。

推薦系統的主要任務就是聯絡使用者和資訊。對使用者而言,推薦系統能幫助使用者找到喜歡的物品/服務,幫忙進行決策,發現使用者可能喜歡的新事物;對商家而言,推薦系統可以給使用者提供個性化的服務,提高使用者信任度和粘性,增加營收。我們可以通過一組資料瞭解推薦系統的價值:

Netflix:2/3 被觀看的電影來自推薦

Google新聞:38%的點選量來自推薦

Amazon:35%的銷量來自推薦

當你看到這些數字,推薦系統的價值就不言而喻了吧?

1.3 用在哪(Where to apply?)

在這個資訊爆炸的時代,資訊過載問題催生了推薦系統在我們日常生活中方方面面的滲透:電子商務、電影或視訊網站、個性化音樂網路電臺、社交網路、個性化閱讀、基於位置的服務、個性化郵件、個性化廣告……在你逛淘寶、訂外賣、聽網路電臺、看美劇、查郵件、淘攻略的時候,推薦系統在你不知不覺中將你可能感興趣的內容推送給你。和搜尋引擎不同,個性化推薦系統需要依賴使用者的行為資料,一般都是作為一個應用存在於不同網站之中。在網際網路的各大網站中都可以看到推薦系統的影子。例如都是逛淘寶,女同胞們和男同胞們看到的網頁介面會有所不同。 

以淘寶為例,本人(女)看到的淘寶介面:


男票看到的淘寶介面:


每個人的喜好不同,在頁面上瀏覽的內容就不同,我們的每一次點選和搜尋都會在網站上留下記錄。淘寶的推薦系統正是通過分析大量我們平時瀏覽商品的行為日誌,推測出我們的喜好,從而給不同使用者提供不同的個性化介面,來提高網站的點選率和轉化率。

2. 推薦系統的結構(Structure)

儘管不同的網站使用不同的推薦系統,但是總的來說,幾乎所有的推薦系統的結構都是類似的,都由線上和線下兩部分組成。線下部分包括後臺的日誌系統和推薦算法系統,線上部分就是我們看到的前臺頁面展示。線下部分通過學習使用者資料和行為日誌建立模型,在新的上下文背景之下,計算相應的推薦內容,呈現於線上頁面中。


3. 推薦引擎演算法(Algorithm)

3.1 協同過濾推薦演算法

3.1.1 關係矩陣與矩陣計算

在一個推薦系統中,存在三類關係:使用者與使用者(U-U矩陣)物品與物品(V-V矩陣)使用者與物品(U-V矩陣)

U-U矩陣

演算法原理 

在基於使用者相似度的協同過濾中,使用者相似度的計算是基本前提。Pearson相關係數主要用於度量兩個變數 i 和 j 之間的相關性,取值範圍是+1(強正相關)到-1(強負相關),計算公式為: 

式中,為使用者 i 和 j 共同評價過的物品的集合,c 是這個集合中的物品元素,是使用者 j 對物品 c 的評價值,為使用者 i 對物品 c 的評價值,分別表示使用者 i 和 j 對物品的平均評價值。

演算法流程 

演算法輸入:使用者行為日誌。 

演算法輸出:基於協同的使用者相似度矩陣。

 
A. 從使用者行為日誌中獲取使用者與物品之間的關係資料,即使用者對物品的評分資料。 
B. 對於n個使用者,依次計算使用者1與其他n-1個使用者的相似度;再計算使用者2與其他n-2個使用者的相似度。對於其中任意兩個使用者 i 和 j : 

a) 查詢兩個使用者共同評價過的物品集; 

b) 分別計算使用者 i 和對物品 j 的平均評價; 

c) 計算使用者間相似度,得到使用者 i 和 j 的相似度。 

C. 將計算得到的相似度結果儲存於資料庫中。

V-V矩陣

演算法原理 

在基於物品相似度的協同過濾中,物品相似度的計算是基本前提。將物品的評價數值抽象為n維使用者空間中的列向量 ,使用修正的餘弦相似度,計算公式為: 


式中,為對物品共同評價過的使用者的集合, 是使用者 u 對物品的評價值,分別表示使用者對物品的平均評價值。

演算法流程 

演算法輸入:使用者行為日誌。 
演算法輸出:基於協同的物品相似度矩陣。 

A. 從使用者行為日誌中獲取使用者與物品之間的關係資料,即使用者對物品的評分資料。 
B. 對於n個物品,依次計算物品1與其他n-1個物品的相似度;再計算物品2與其他n-2個物品的相似度。對於其中任意兩個物品 i 和 j: 

a) 查詢對物品 i 和 j 共同評價過的使用者集; 

b) 分別計算使用者對物品 i 和 j 的平均評價; 

c) 計算物品間相似度,得到物品 i 和 j 的相似度。

C. 將計算得到的相似度結果儲存於資料庫中。

U-V矩陣 

在真實的推薦系統中,一方面U-V矩陣的行列數會隨著使用者和物品數量變得龐大,另一方面,因為使用者實際上只能對有限數量的物品做出評價,所以U-V矩陣的內部會非常稀疏。系統在直接處理這些龐大稀疏矩陣時,耗費的時間、記憶體和計算資源都十分巨大。因此需要採取降低計算複雜度的方法。矩陣分解技術是一種有效降低矩陣計算複雜的方法,它的實質是將高維矩陣進行有效降維。

奇異值分解(SVD)

SVD將給定矩陣分解為3個矩陣的乘積: 

式中,矩陣為對角陣,其對角線上的值 為矩陣M的奇異值,按大小排列,代表著矩陣M的重要特徵。將SVD用在推薦系統上,其意義是將一個係數的評分矩陣M分解為表示使用者特性的U矩陣,表示物品特性的V矩陣,以及表示使用者和物品相關性的矩陣。

主成分分析(PCA)

在推薦系統中,對於有較多屬性的物品(物品的資訊用向量 表示)可用PCA處理進行降維,將m×n的物品矩陣轉化為m×k的新矩陣。

3.1.2 基於記憶的協同過濾演算法

基於使用者的協同過濾演算法

基於使用者的協同過濾(user-based collaborative filtering)演算法是推薦系統中最古老的演算法,產生於1992年,最初應用於郵件過濾系統,1994年被GroupLens用於新聞過濾。在此之後直到2000年,該演算法都是推薦系統領域最著名的演算法。

演算法原理

什麼是基於使用者的協同過濾演算法?舉個簡單的例子,我們知道櫻桃小丸子喜歡葡萄、草莓、西瓜和橘子,而我們通過某種方法瞭解到小丸子和花倫有相似的喜好,所以我們會把小丸子喜歡的而花倫還未選擇的水果(葡萄和橘子)推薦給花倫。 


通過上面的例子我們可以做出如下總結:假設使用者為
,物品的評分為,基於使用者的協同過濾演算法主要包含以下兩個步驟:

A. 蒐集使用者和物品的歷史資訊,計算使用者u和其他使用者的相似度

,找到和目標使用者Ui興趣相似的使用者集合N(u)

B. 找到這個集合中使用者喜歡的,且目標使用者還沒有聽說過的物品推薦給目標使用者。 


基於使用者的協同過濾子引擎,通過下面的公式來計算使用者對物品的喜好程度: 


式中,表示使用者 u 對物品 j 的喜好程度,表示使用者Ni對物品 j 的評價,表示使用者 u 和使用者 的相似度。最後根據來對候選物品進行排序,為使用者推薦分值最高的Top-N個物品。

演算法流程 


演算法輸入:使用者行為日誌,基於協同的使用者相似性矩陣。 
演算法輸出:初始推薦結果

A. 訪問使用者行為日誌,獲取近期變化的使用者ID集合U。 

B. 針對集合U中每個使用者 u:

a) 訪問使用者相似矩陣,獲取與使用者相似的使用者合集N(u)。 
b) 對於N(u)中的每一個使用者ui: 

獲取與使用者ui有關聯的物品合集

針對物品合集中的每個物品,計算使用者偏好值。 

c) 對集M(u)中的所有物品進行按照使用者偏好進行加權、去重、排序。 
d) 取Top-N個物品,為每個物品賦予解釋。 
e) 儲存Top-N個物品到初始推薦列表中。

適用性 

由於需計算使用者相似度矩陣,基於使用者的協同過濾演算法適用於使用者較少的場合; 由於時效性較強,該方法適用於使用者個性化興趣不太明顯的領域。

基於物品的協同過濾演算法

基於物品的協同過濾(item-based collaborative filtering)演算法是目前業界應用最多的演算法。無論是亞馬遜網,還是Netflix、Hulu、Youtube,其推薦演算法的基礎都是該演算法。

演算法原理

基於物品的協同過濾演算法給使用者推薦那些和他們之前喜歡的物品相似的物品。比如,我們知道櫻桃小丸子和小玉都喜歡葡萄和西瓜,那麼我們就認為葡萄和西瓜有較高的相似度,在花倫選擇了西瓜的情況下,我們會把葡萄推薦給花倫。

ItemCF演算法並不利用物品的內容屬性計算物品之間的相似度,它主要通過分析使用者的行為記錄計算物品之間的相似度。該演算法認為,物品A和物品B具有很大的相似度是因為喜歡物品A的使用者大都也喜歡物品B。 


假設使用者為
,物品的評分為,基於物品的協同過濾演算法主要分為兩步:

A. 對於目標使用者及其待評分的物品,根據使用者對物品的歷史偏好資料,計算物品與其他已評分物品之間的相似度 Sim(j,i),找到與物品相似度的物品合集N(u); 

B. 根據所有物品 N(u) 的評分情況,選出N(u)中目標使用者可能喜歡的且沒有觀看過的推薦給目標使用者並預測評分。 

式中,為使用者 u 對物品 i 的評分,是使用者 u 對他買過的物品的平均打分。 


ItemCF通過下面的公式來計算使用者對物品的喜好程度: 

式中,表示使用者 u 對物品 j 的喜好程度,物品 i 是使用者買過的物品,

相關推薦

推薦系統知識體系資料THU

1. 推薦系統的3個W1.1 是什麼(What is it?)推薦系統就是根據使用者的歷史行為、社交關係、興趣點、所處上下文環境等資訊去判斷使用者當前需要或感興趣的物品/服務的一類應用。1.2 為什麼(Why is that?)為什麼我們要用到推薦系統呢?隨著資訊科技和網際網

C_推薦系統知識體系資料THU

1. 推薦系統的3個W 1.1 是什麼(What is it?) 推薦系統就是根據使用者的歷史行為、社交關係、興趣點、所處上下文環境等資訊去判斷使用者當前需要或感興趣的物品/服務的一類應用。 1.2 為什麼(Why is that?) 為什麼我們要用到推薦系統

推薦系統知識體系-上概念、結構、演算法

  本文主要闡述: 推薦系統的3個W 推薦系統的結構 推薦引擎演算法 瀏覽後四章的內容請見下篇。 1. 推薦系統的3個W 1.1 是什麼(What is it?) 推薦系統就是根據使用者的歷史行為、社交關係、興趣點、所處上下文環境等資訊去

推薦系統

1. 推薦系統的3個W1.1 是什麼(What is it?)推薦系統就是根據使用者的歷史行為、社交關係、興趣點、所處上下文環境等資訊去判斷使用者當前需要或感興趣的物品/服務的一類應用。1.2 為什麼(Why is that?)為什麼我們要用到推薦系統呢?隨著資訊科技和網際網

通訊系統的均衡原理(時域均衡)

一、均衡的概念 二、均衡器的作用:校正或補償系統特性,減小碼間串擾的影響! 均衡器在系統中的位置: 三、均衡的分類: 一般情況下,頻域均衡器很難實現,現實或研究中,均衡一般都是指時域均衡器 下圖是一個橫向濾波器的時域均衡系統: 下面波形圖中,均衡的目標

架構整潔之道知識脈絡圖

程式的世界飛速發展,今天所掌握的技能可能明年就過時了,但有一些東西是歷久彌新,永遠不變的,掌握了這些,在程式的海洋裡就不會迷路,架

深度 | 生成對抗網路初學入門:GAN的基本原理附資源

選自 Sigmoidal 作者:Roman Trusov 機器之心編譯 參與:Panda 生成對抗網路是現在人工智慧領域的當紅技術之一。近日,Sigmoidal.io 的部落格發表了一篇入門級介紹文章,對 GAN 的原理進行了解釋說明。另外,在該文章的最後還附帶了一些能幫助初學者自己

生成對抗網路GANs附學習資源

原文標題:AnIntuitive Introduction to Generative Adve

服務端技術進階(四)分散式系統本質:高吞吐、高可用、可擴充套件

服務端技術進階( 四)一篇文讀懂分散式系統本質:高吞吐、高可用、可擴充套件 承載量是分散式系統存在的原因   當一個網際網路業務獲得大眾歡迎的時候,最顯著碰到的技術問題,就是伺服器非常繁忙。當每天有1000萬個使用者訪問你的網站時,無論你使用什麼樣的伺服

推薦R的探索性資料分析附R程式碼

作者:Pablo Casas;翻譯:蔣雨暢;校對:車前子;本文約1500字,建議閱讀7分鐘。本文

大數據計算框架與平臺

ddr 不同 失敗 克服 可定制 同時 數據庫引擎 後處理 alc  1.前言   計算機的基本工作就是處理數據,包括磁盤文件中的數據,通過網絡傳輸的數據流或數據包,數據庫中的結構化數據等。隨著互聯網、物聯網等技術得到越來越廣泛的應用,數據規模不斷增加,TB、PB量級成為常

超簡單的 structured stream 源碼解讀

ket exec res exce bus sin imp += work 為了讓大家理解structured stream的運行流程,我將根據一個代碼例子,講述structured stream的基本運行流程和原理。 下面是一段簡單的代碼: 1 val spark =

Spring Boot、微服務架構和大數據治理之間的故事

Springboot微服務架構 微服務的誕生並非偶然,它是在互聯網高速發展,技術日新月異的變化以及傳統架構無法適應快速變化等多重因素的推動下誕生的產物。互聯網時代的產品通常有兩類特點:需求變化快和用戶群體龐大,在這種情況下,如何從系統架構的角度出發,構建靈活、易擴展的系統,快速應對需求的變化;同時,隨著用戶的

阻塞、非阻塞、同步、異步IO

UC max register class 掃描 基本 角度 cloud 問題: 介紹 在談及網絡IO的時候總避不開阻塞、非阻塞、同步、異步、IO多路復用、select、poll、epoll等這幾個詞語。在面試的時候也會被經常問到這幾個的區別。本文就來講一下這幾個詞

架構師都不知道的isinstance檢查機制

Python起步通過內建方法 isinstance(object, classinfo) 可以判斷一個對象是否是某個類的實例。但你是否想過關於鴨子協議的對象是如何進行判斷的呢? 比如 list 類的父類是繼 object 類的,但通過 isinstance([], typing.Iterable) 返回的卻是

【深度學習】機器學習常用損失函數Loss Function

back and 們的 wiki 導出 歐氏距離 classes 自變量 關於 最近太忙已經好久沒有寫博客了,今天整理分享一篇關於損失函數的文章吧,以前對損失函數的理解不夠深入,沒有真正理解每個損失函數的特點以及應用範圍,如果文中有任何錯誤,請各位朋友指教,謝謝~

從HTTP/0.9到HTTP/2:HTTP協議的歷史演變和設計思路

eight 結果 key 視頻 this sso單點登陸 會有 研究 patch 本文原作者阮一峰,作者博客:ruanyifeng.com。 1、引言 HTTP 協議是最重要的互聯網基礎協議之一,它從最初的僅為瀏覽網頁的目的進化到現在,已經是短連接通信的事實工業標準,最新版

以太坊代幣合約

規則 sta ini class 2015年 交易 存在 部分 生活 本文首發自 https://www.secpulse.com/archives/73696.html ,轉載請註明出處。 工欲善其事,必先利其器。要想挖掘和分析智能合約的漏洞,你必須要先學會看

什麽是音視頻直播雲服務 ?

type 限制 推流 數據 優缺點 視頻通訊系統 最終 通訊 地理 說到音視頻雲服務,大多數人可能聯想到的是網絡直播應用場景,實際上,硬件對音視頻雲服務的需求也在逐漸提升。而這樣的市場需求也推動了整個行業的發展,目前,阿裏雲、騰訊雲和網易雲等巨頭都已入局,除此之外還有即構科