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

C_一文讀懂推薦系統知識體系(資料派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 是使用者買過的物品,表示使用者 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.3 基於模型的協同過濾演算法

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

隱語義模型是最近幾年推薦系統領域最為熱門的研究話題,它的核心思想是通過隱含特徵(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 混合推薦演算法

各種推薦方法都有優缺