獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

(點擊可查看大圖)

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

本文主要闡述:

  • 推薦系統的3個W

  • 推薦系統的結構

  • 推薦引擎算法

瀏覽後四章的內容請見下篇。

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 是用戶買過的物品,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

表示用戶 u 對物品 i 的偏好程度,然後根據

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

來對候選物品進行排序,為用戶推薦分值最高的物品。

  • 算法流程

算法輸入:用戶行為日誌,基於協同的物品相似性矩陣

算法輸出:初始推薦結果

A. 訪問用戶行為日誌,獲取該用戶最近瀏覽過物品的用戶集合U。

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

a) 訪問用戶相似矩陣,獲取與用戶相似的用戶合集N(u)。

b) 訪問物品相似矩陣,獲取與M(u)相似的物品合集N(u)。

c) 針對物品合集M(ui)中的每個物品,計算用戶偏好值。

d) 根據用戶偏好值,對N(u)的物品進行排序。

e) 取Top-N個物品,為每個物品賦予解釋。

f) 保存Top-N個物品到初始推薦列表中。

  • 適用性

適用於物品數明顯小於用戶數的場合; 長尾物品豐富,用戶個性化需求強烈的領域。

  • UserCF和ItemCF的比較

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

3.1.2 基於模型的協同過濾算法

  • 基於隱因子模型的推薦算法

隱語義模型是最近幾年推薦系統領域最為熱門的研究話題,它的核心思想是通過隱含特徵(latent factor)聯繫用戶興趣和物品。也就是,對於某個用戶,首先找到他的興趣分類,然後從分類中挑選他可能喜歡的物品。

  • 基本算法

基於興趣分類的方法大概需要解決3個問題:

A. 如何給物品進行分類?

B. 如何確定用戶對哪些類的物品感興趣,以及感興趣的程度?

C. 對於一個給定的類,選擇哪些屬於這個類的物品推薦給用戶,以及如何確定這些物品在一個類中的權重?

隱含語義分析技術採取基於用戶行為統計的自動聚類,可以自動解決物品分類問題。LFM通過如下公式計算用戶 u 對物品 i 的興趣:

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

這個公式中,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

是模型的參數,其中, 度量了用戶 u 的興趣和第 k 個隱類的關係,而度量了第 k 個隱類和物品 i 之間的關係。要計算這兩個參數,需要一個訓練集,對於每個用戶 u ,訓練集裡都包含了用戶 u 喜歡的物品和不感興趣的物品,通過學習這個數據集,就可以獲得上面的模型參數。

  • LFM和基於鄰域的方法的比較

  • 理論基礎

LFM具有比較好的理論基礎,它是一種學習方法,通過優化一個設定的指標建立最優的模型。基於鄰域的方法更多的是一種基於統計的方法,並沒有學習過程。

  • 離線計算的空間複雜度

基於鄰域的方法需要維護一張離線的相關表。在離線計算相關表的過程中,如果用戶/物品數很多,將會佔據很大的內存。而LFM在建模過程中,可以很好地節省離線計算的內存。

  • 離線計算的時間複雜度

在一般情況下,LFM的時間複雜度要稍微高於UserCF和ItemCF,這主要是因為該算法需要多次迭代。但總體上,這兩種算法在時間複雜度上沒有質的差別。

  • 在線實時推薦

UserCF和ItemCF在線服務算法需要將相關表緩存在內存中,然後可以在線進行實時的預測。LFM在給用戶生成推薦列表時,需要計算用戶對所有物品的興趣權重,然後排名,不太適合用於物品數非常龐大的系統,如果要用,我們也需要一個比較快的算法給用戶先計算一個比較小的候選列表,然後再用LFM重新排名。另一方面,LFM在生成一個用戶推薦列表時速度太慢,因此不能在線實時計算,而需要離線將所有用戶的推薦結果事先計算好存儲在數據庫中。因此,LFM不能進行在線實時推薦,也就是說,當用戶有了新的行為後,他的推薦列表不會發生變化。

  • 推薦解釋

ItemCF算法支持很好的推薦解釋,它可以利用用戶的歷史行為解釋推薦結果。但LFM無法提供這樣的解釋,它計算出的隱類雖然在語義上確實代表了一類興趣和物品,卻很難用自然語言描述並生成解釋展現給用戶。

  • 基於樸素貝葉斯分離的推薦算法

  • 算法原理

由於推薦問題可以看成分類問題,因此可以使用機器學習領域中的分類算法加以解決。樸素貝葉斯分類算法是貝葉斯分類算法中比較簡單的一種,它的基本思想是:對於給出的待分類物品和既定的類別,計算該物品在各個類別中出現的頻率,哪個類別計算出的概率大就將物品歸於那個類。在推薦系統中,樸素貝葉斯分類能夠在已知某些評分的情況下,通過計算概率預測未知評分。

計算中用到貝葉斯定理:

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

式中,表示事件B已經發生的前提下事件A發生的概率;P(A)和P(B)均為無條件概率。

  • 算法流程

算法輸入:已知目標用戶對物品

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

之外的物品的評分情況,以及其他用戶對各物品的評分情況。

算法輸出:確定目標用戶對物品

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

的評分

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

A.

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

為一個待分類項,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

的特徵屬性;

B. 設類別集合

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

C. 計算

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

a) 找到一個已知分類的待分類項集合作為訓練樣本;

b) 統計得到在各個類別下各個特徵屬性的條件概率估計,即

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

c) 如果各個特徵屬性是條件獨立的,則根據貝葉斯定理有如下關係:

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

因為分母對所有類別為常數,因此只需將分子最大化即可,又由於各特徵屬性是條件獨立的,所以有:

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

D.

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

,則

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

  • 適用性

樸素貝葉斯分類實現起來比較簡單,準確率高,但是分類的時候需要學習全部樣本的信息。因此,樸素貝葉斯分類適用於數據量不大,類別較少的分類問題。

3.2 基於內容(CB)的推薦算法

  • 基礎CB推薦算法

  • 算法背景

基礎CB推薦算法利用物品的基本信息和用戶偏好內容的相似性進行物品推薦。通過分析用戶已經瀏覽過的物品內容,生成用戶的偏好內容,然後推薦與用戶感興趣的物品內容相似度高的其他物品。

比如,用戶近期瀏覽過馮小剛導演的電影“非誠勿擾”,主演是葛優;那麼如果用戶沒有看過“私人訂製”,則可以推薦給用戶。因為這兩部電影的導演都是馮小剛,主演都有葛優。

計算公式為:

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

式中,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

表示用戶,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

表示物品,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

表示用戶在第 k 個方面的特徵,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

表示物品在第 k 個方面的特徵,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

表示

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

在第 k 個特徵方面上的相似度,表示權重

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

  • 算法流程

算法輸入:物品信息,用戶行為日誌。

算法輸出:初始推薦結果。

A. 物品表示:每個物品使用特徵向量

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

表示,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

其中表示物品的特徵屬性;

B. 從用戶行為日誌中,獲取該用戶所瀏覽、收藏、評價、分享的物品集合M,根據物品集合M中物品的特徵數據,可以學到用戶的內容偏好;

C. 保存Top-K個物品到初始推薦結果中。

  • 適用場景

適用於基礎CB架構的搭建,尤其是對新上線物品會馬上被推薦非常有效,被推薦的機會與老的物品是相同的。

  • 基於TF-IDF的CB推薦算法

  • 算法背景

在推薦系統中,用戶的反饋往往分為兩類:評分和文字評論。前者通過分數直接反映用戶對物品的喜好程度,後者則需要從文字當中提取關鍵信息,這時需要用到TF-IDF(Term Frequency-Inverse Document Frequency)。TF-IDF算法被公認為信息檢索中最重要的發明,在搜索、文獻分類和其他相關領域有廣泛應用。

TF-IDF是自然語言處理領域中計算文檔中詞或短語的權值的方法,是詞頻(Term Frequency, TF)和逆轉文檔頻率(Inverse Document Frequency, IDF)的乘積。TF指的是某一個給定的詞語在該文件中出現的次數,這個數字通常會被正規化,以防止它偏向長的文件(同一個詞語在長文件裡可能會比段文件有更高的詞頻,而不管該詞語重要與否)。IDF是一個詞語普遍重要性的度量,某一特定詞語的IDF,可以由總文件數目除以包含該詞語的文件數目,再將得到的商取對數得到。

  • 算法原理

TF-IDF算法基於這樣一個假設:若一個詞語在目標文檔中出現的頻率高而在其他文檔中出現的頻率低,那麼這個詞語就可以用來區分出目標文檔。這個假設的主要信息有兩點:

  • 在本文檔出現的頻率高;

  • 在其他文檔出現的頻率低。

因此,TF-IDF算法的計算可以分為詞頻(TF)和逆轉文檔頻率(IDF)兩部分,由TF和IDF的乘積來設置文檔詞語的權重。

假設文檔集包含的文檔數為N,文檔集中包含關鍵詞

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

的文檔數為

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

表示關鍵詞

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

在文檔

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

中出現的次數,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

表示文檔

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

中出現的詞語總數,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

在文檔

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

中的詞頻

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

定義為

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

這個數字通常會被正規化,以防止它偏向長的文件。

IDF衡量詞語的普遍重要性。

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

表示某一詞語在整個文檔中出現的頻率,由它計算的結果取對數得到關鍵詞

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

的逆文檔頻率

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

由TF和IDF計算詞語的權重為

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

可以看出,TF-IDF與詞語在文檔中的出現次數成正比,與該詞在整個文檔集中的出現次數成反比。在目標文檔中,提取關鍵詞的方法就是將該文檔所有詞語的TF-IDF計算出來並進行對比,取其中TF-IDF值最大的個數組成目標文檔的特徵向量來表示該文檔。

  • 基於KNN的CB推薦算法

  • 算法背景

KNN(k-Nearest Neighbor)算法基於這樣的假設:如果在特徵空間中,一個樣本的k個最鄰近樣本中的大多數樣本屬於某一個類別,則該樣本也屬於這個類別。

  • 算法原理

KNN在CB推薦算法中的應用於在CF推薦算法中的應用極為相似,它們都是要首先找到與目標物品相似的且已經被用戶 u 評價過的 k 個物品,然後根據用戶 u 對這 k 個物品的評價來預測其目標物品的評價。它們的差別在於,CF推薦算法中的KNN是根據用戶對物品的評分來計算物品間相似度的,而CB推薦算法中KNN是根據物品畫像來計算相似度的,所以對於後者來說,如何通過物品畫像來計算物品間的相似度是算法中的關鍵步驟。相似度的計算可以使用餘弦相似度或Pearson相關係數的計算方法。

  • 算法流程

算法輸入:用戶已評分物品,目標物品 i 。

算法輸出:用戶對目標物品 i 的評分。

A. 採用餘弦相似度公式計算相似度。

B. 選擇最近鄰。在用戶 u 評過分的所有物品中,找出 k 個與目標物品 i 相似度最高的物品,並用 N(u,i) 來表示這出 k 個物品的集合。

C. 計算預測值。在第二步的基礎上,可使用以下公式計算用戶對目標物品的評分:

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

式中,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

表示用戶 u 對物品 i 的預測評分,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

是相似度。

  • 基於Rocchio的CB推薦算法

  • 算法背景

Rocchio是從用戶瀏覽歷史中抽取用戶喜好的物品特徵來構建用戶畫像的一種常用算法,是信息檢索領域處理相關反饋(Relevance Feedback)的一個著名算法。它提供瞭如何通過用戶瀏覽的物品,反饋計算用戶特徵向量中屬性值的方法。

舉個簡單例子,假如用戶觀看過“星球大戰”和“加勒比海盜”,並給予高分,那麼根據用戶的行為歷史數據構建畫像時,用戶的特徵向量可表示為{“動作”:1,“歐美”:1,“科幻”:1,“冒險”:0.5}。

  • 算法原理

Rocchio算法基於這樣的假設:如果我們需要計算出最精準度的用戶特徵向量

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

,那麼這個用戶特徵向量應該與用戶喜歡的物品特徵最相似,與用戶討厭的物品特徵最不同。若

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

表示用戶喜歡的物品,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

表示用戶討厭的物品,那麼根據Rocchio算法的思想,定義最優的用戶特徵向量為:

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

式中,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

表示用戶特徵向量與用戶喜歡的物品的相似度,採用餘弦相似度計算,公式為:

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

更新用戶的特徵向量,修改公式為:

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

式中,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

是原始的用戶特徵向量,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

為權重。若用戶新的歷史數據較多,那麼可以增大

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

的值,反之,用戶更新數據較少則可以適當減小

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

的值。在基於內容的物品推薦中,根據用戶的歷史行為數據建立用戶畫像,我們可以採用Rocchio算法不斷地調整用戶的特徵向量

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

  • 基於決策樹的CB推薦算法

  • 算法背景

基於決策樹的推薦算法在訓練階段會生成一個顯示的決策模型。決策樹可以通過訓練數據構建並有效判斷一個新的物品是否可能受到歡迎。當物品的特徵屬性較少時,採用決策樹算法能夠取得不錯的效果,另外,決策樹學習的思想也比較容易被理解,在物品推薦時的可解釋性較好。

  • 算法原理

在物品推薦系統中,決策樹的內部節點通常表示物品的特徵屬性,這些節點用於區分物品集合,例如,通過物品中是否包含這個特徵將其進行分類。在只有兩個分類的簡單數據集中,用戶是否對物品感興趣一般出現在決策樹的葉子節點上。

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

  • 基於線性分類的CB推薦算法

  • 算法背景

將基於內容的物品推薦問題視為分類問題時,可以採用多種機器學習方法。從一個更抽象的角度上看,大部分學習方法致力於找到一個可以準確區分用戶喜歡和不喜歡的物品的線性分類模型係數。

將物品數據用n維特徵向量來表示,線性分類器試圖在給定的物品特徵空間中找到一個能夠將物品正確分類的平面,一類點儘可能在平面的某一邊(喜歡),另一類在平面的另一邊(不喜歡)。

  • 算法原理

基於線性分類器的CB推薦算法通過物品特徵的線性組合進行分類。若輸入的物品特徵向量為

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

,輸出的結果 y 表示用戶是否喜歡物品,則線性分類器可以表示為:

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

式中,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

表示物品特徵向量對應的權重,根據輸入的物品特徵屬性做出決定輸出結果。

  • 基於樸素貝葉斯的CB推薦算法

  • 算法背景

基於樸素貝葉斯的推薦系統假設用戶和物品的特徵向量中的各個分量之間條件獨立,判斷用戶是否對某個物品有興趣的方法是將這個問題轉化為分類問題:喜歡和不喜歡。

計算物品分類情況的後驗概率為:

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

式中,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

表示物品的相關屬性;C為物品的分類,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

表示在分類 c 的一個物品的特徵屬性

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

出現的概率。這樣,物品分類的後驗概率可以通過觀察分析訓練數據得到。

  • 算法原理

推薦系統中,分類 c 下的一個物品特徵屬性

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

的條件概率用

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

在分類 c 下所有物品中出現的頻率近似表示,即

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

式中,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

表示在標記為的物品 c 出現的次數,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

表示在這些物品中出現的所有特徵屬性的個數。為了預防計算概率為0的情況,對式子進行平滑,新公式如下:

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

式中,|V|表示所有物品中的出現的不同特徵屬性數。

3.3 基於知識的推薦算法

3.3.1 概述

基於知識(Knowledge-based, KB)的推薦算法,是區別於基於CB和基於CF的常見推薦方法。如果說CB和CF像通用搜索引擎的話,KB好比某個領域的垂直搜索引擎,可以提供該領域的特殊需求,包括專業性的優質特徵,幫助提高搜索引擎在特定領域的服務。

以視頻推薦為例,一部電影的上映時期和檔期熱度,哪些導演執導的一定是大片,變形金剛和指環王系列口碑肯定不會太差,都是非常有價值的推薦信息。此外,基於知識的推薦,也更容易滿足主觀個性化需求。例如,對於VIP用戶,如果配置好了偏好,就可以為其提供更加精準的推薦服務。

  • 約束知識與約束推薦算法

如今網上購物所能涵蓋的物品越來越豐富,人們逐漸發現推薦系統的CF和CB推薦算法並不能很好地適應某些特殊物品的推薦需求。例如,更新換代非常快的而人們又通常不會經常更換的電子產品。對於這些產品來說,其各方面的性能參數在幾年間就會有很大變化,代表歷史偏好的用戶畫像並不能很好地反映用戶當前的購買需求,於是就需要推薦系統將用戶當前的需求作為重要信息參考源。人們發現可以利用物品的參數特徵等屬性形成約束知識,再將用戶對物品的特定刻畫為約束條件,然後經過對物品集合的約束滿足問題的求解,就可以得到用戶所期望的物品了。

  • 創建推薦任務

推薦任務是以元組(R,I)的形式表示出來,其中用集合 R 表示目標用戶對物品的特定需求,即對物品的約束條件,用集合 I 表示一個物品集合。推薦的任務就是從集合 I 中確定出能夠滿足集合 R 要求的物品。

  • 推薦任務的解決

推薦任務的解決是以找到可能的集合 S 為目標,集合 S 應滿足的條件是

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

,並且

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

,其中,

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

表示對集合 I 進行合取查詢的運算符,R 表示對物品的約束條件或選擇標準。

  • 衝突集

衝突集CS應滿足的條件為:

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

,並且

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

。特別地,當不存在集合

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

時,集合CS被稱為最小衝突集。

  • 診斷集

診斷集

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

應滿足的條件是

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

,並且

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

。特別地,當不存在集合

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

時,集合

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

被稱為最小診斷集。

  • 關聯知識與關聯推薦算法

  • 算法原理

關聯知識以關聯規則為表現形式,用以描述數據庫中數據之間關聯性的知識。在推薦系統領域,可以通過對用戶畫像中關聯規則的挖掘分析來分析用戶的習慣,發現物品之間的關聯性,並利用這種關聯性指導系統做出推薦。

  • 算法流程

算法輸入:n個用戶畫像。

算法輸出:針對目標用戶u的Top-N推薦列表。

A. 從系統中的n個用戶畫像中挖掘出所有的強關聯規則,建立集合

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

以表示目標用戶u尚未觀看但極有可能感興趣的物品。

B. 再次使用置信度對集合

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

中的物品進行高低排序。

C. 取出排序列表中的前N個物品構成Top-N推薦列表。 由於對系統中全體用戶的畫像進行規則關聯挖掘意義不明顯且計算量大,所以基於關聯規則的推薦算法常與CF推薦算法混合使用。在這類混合方案中,使用了CF推薦算法中的最近鄰算法將用戶畫像數目n限定在目標用戶的最鄰近範圍內,使得關聯規則挖掘算法處理的數據規模被有針對性地限定在一定範圍內。

3.4 混合推薦算法

各種推薦方法都有優缺點,為了揚長補短,在實際中常常採用混合推薦(Hybrid Recommendation)。研究和應用最多的是內容推薦和協同過濾推薦的組合。最簡單的做法就是分別用基於內容的方法和協同過濾推薦方法去產生一個推薦預測結果,然後用某方法組合其結果。儘管從理論上有很多種推薦組合方法,但在某一具體問題中並不見得都有效,組合推薦一個最重要原則就是通過組合後要能避免或彌補各自推薦技術的弱點。

  • 加權式:加權多種推薦技術結果。

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

  • 切換式:根據問題背景和實際情況或要求決定變換採用不同的推薦技術。

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

  • 混雜式:同時採用多種推薦技術給出多種推薦結果為用戶提供參考。

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

  • 特徵組合:組合來自不同推薦數據源的特徵被另一種推薦算法所採用。

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

  • 層疊式:先用一種推薦技術產生一種粗糙的推薦結果,第二種推薦技術在此推薦結果的基礎上進一步作出更精確的推薦。

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

  • 特徵補充:一種技術產生附加的特徵信息嵌入到另一種推薦技術的特徵輸入中。

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

  • 級聯式:用一種推薦方法產生的模型作為另一種推薦方法的輸入。

獨家|一文讀懂推薦系統知識體系-上(概念、結構、算法)

相關推薦

推薦中...