推荐算法--总结(08)
- 一、推薦系統結構
- 二、推薦引擎算法(Algorithm)
- 1、協同過濾推薦算法
- 1.1 關系矩陣與矩陣計算
- 1.1.1 用戶與用戶(U-U矩陣)
- 1.1.2 物品與物品(V-V矩陣)
- 1.1.3 用戶與物品(U-V矩陣)
- 1.1.4 奇異值分解(SVD)
- 1.1.5 主成分分析(PCA)
- 目標:PCA目標是使用使用另一組基去重新描繪得到的數據空間,新的基要盡可能揭示原有數據的關系。
- 本質:實際上是K-L變換(卡洛南-洛伊(Karhunen-Loeve)變換),又名:最優正交變換
- 1.2 基于記憶的協同過濾算法
- 1.2.1 基于用戶的協同過濾算法
- 基于用戶的協同過濾算法主要包含以下兩個步驟:
- 適用性
- 1.2.2 基于物品的協同過濾算法
- 基于物品的協同過濾算法主要分為兩步:
- 適用性
- U-CF與I-CF比較
- 1.2.1 基于用戶的協同過濾算法
- 1.3 基于模型的協同過濾算法
- 1.3.1 基于隱語義模型的協同過濾算法(LFM)
- 主要用于:填充用戶打分矩陣的缺失值
- 思路來源:應該有一些隱藏的因素(不一定是人可以理解的)影響用戶的評分,找到隱藏因子,可以對U和I進行關聯;假定隱藏因子的個數小于U和I的數目,,因為如果每個User都關聯一個獨立的隱藏因子,那就沒法預測了;
- 離線計算的空間復雜度
- 離線計算的時間復雜度
- 在線實時推薦
- 推薦解釋
- 1.3.2 基于樸素貝葉斯分離的推薦算法
- 適用性
- 1.3.1 基于隱語義模型的協同過濾算法(LFM)
- 1.1 關系矩陣與矩陣計算
- 2、基于內容的推薦算法(CB)
- 2.1 基礎CB推薦算法
- 算法流程
- 適用場景
- 2.2 基于TF-IDF的CB推薦算法
- 算法原理
- 算法流程
- 2.3 基于KNN的CB推薦算法
- 2.4 基于Rocchio的CB推薦算法
- 2.5 基于決策樹的CB推薦算法
- 2.6 基于線性分類的CB推薦算法
- 2.7 基于樸素貝葉斯的CB推薦算法
- 2.1 基礎CB推薦算法
- 3、 基于知識的推薦算法
- 3.1 概述
- 3.2 約束知識與約束推薦算法
- 創建推薦任務
- 3.3 關聯知識與關聯推薦算法
- 算法原理
- 算法流程
- 適用場景
- 4、 混合推薦算法
- 4.1 加權式
- 4.2 切換式
- 4.3 混雜式
- 4.4 特征組合
- 4.5 特征補充
- 4.6 級聯式
- 1、協同過濾推薦算法
- 三、推薦系統評估
- 1、打分系統-評分誤差率
- 2、Top-N推薦系統
- 2.1 準確率
- 2.2 召回率
- 2.3、覆蓋率
- 2.4、多樣性
- 2.5、其他(新穎度、驚喜度、信任度、實時性)
一、推薦系統結構
盡管不同的網站使用不同的推薦系統,但是總的來說,幾乎所有的推薦系統的結構都是類似的,都由線上和線下兩部分組成。線下部分包括后臺的日志系統和推薦算法系統,線上部分就是我們看到的前臺頁面展示。線下部分通過學習用戶資料和行為日志建立模型,在新的上下文背景之下,計算相應的推薦內容,呈現于線上頁面中。
二、推薦引擎算法(Algorithm)
1、協同過濾推薦算法
1.1 關系矩陣與矩陣計算
1.1.1 用戶與用戶(U-U矩陣)
使用原理:Pearson相關系數主要用于度量兩個變量 i 和 j 之間的相關性,取值范圍是+1(強正相關)到-1(強負相關)
算法輸入:用戶行為日志。
算法輸出:基于協同的用戶相似度矩陣。
A. 從用戶行為日志中獲取用戶與物品之間的關系數據,即用戶對物品的評分數據。
B. 對于n個用戶,依次計算用戶1與其他n-1個用戶的相似度;再計算用戶2與其他n-2個用戶的相似度。
對于其中任意兩個用戶 i 和 j :
a) 查找兩個用戶共同評價過的物品集;
b) 分別計算用戶 i 和對物品 j 的平均評價和;
c) 計算用戶間相似度,得到用戶 i 和 j 的相似度。
C. 將計算得到的相似度結果存儲于數據庫中。
1.1.2 物品與物品(V-V矩陣)
使用原理:將物品的評價數值抽象為n維用戶空間中的列向量 和,使用修正的余弦相似度
算法輸入:用戶行為日志。
算法輸出:基于協同的物品相似度矩陣。
A. 從用戶行為日志中獲取用戶與物品之間的關系數據,即用戶對物品的評分數據。
B.對于n個物品,依次計算物品1與其他n-1個物品的相似度;再計算物品2與其他n-2個物品的相似度。
對于其中任意兩個物品 i 和 j:
a)查找對物品 i 和 j 共同評價過的用戶集;
b)分別計算用戶對物品 i 和 j 的平均評價和;
c) 計算物品間相似度,得到物品 i 和 j 的相似度。
C. 將計算得到的相似度結果存儲于數據庫中。
1.1.3 用戶與物品(U-V矩陣)
1.1.4 奇異值分解(SVD)
SVD將給定矩陣分解為3個矩陣的乘積:
式中,矩陣為對角陣,其對角線上的值 為矩陣M的奇異值,按大小排列,代表著矩陣M的重要特征。將SVD用在推薦系統上,其意義是將一個系數的評分矩陣M分解為表示用戶特性的U矩陣,表示物品特性的V矩陣,以及表示用戶和物品相關性的矩陣。
1.1.5 主成分分析(PCA)
在推薦系統中,對于有較多屬性的物品(物品的信息用向量 表示)可用PCA處理進行降維,將m×n的物品矩陣轉化為m×k的新矩陣。
主成分分析(Principal Component Analysis,PCA), 是一種統計方法。通過正交變換將一組可能存在相關性的變量轉換為一組線性不相關的變量,轉換后的這組變量叫主成分。
目標:PCA目標是使用使用另一組基去重新描繪得到的數據空間,新的基要盡可能揭示原有數據的關系。
本質:實際上是K-L變換(卡洛南-洛伊(Karhunen-Loeve)變換),又名:最優正交變換
有了K-L變換(最優正交變換 )的知識做鋪墊后,接下來提供PCA具體的計算過程
1、數據標準化
為什么要進行數據標準化,最主要的原因是消除量綱(即單位)帶來的差異。常見的數據標準化方法有 0-1標準化,最大最小標準化。
2、計算協方差矩陣
設標準化的數據矩陣為X,則協方差矩陣cov(X,X)=1nXTX
3、求取協方差矩陣的特征值和特征向量
在matlab或者python里面都有相應的求特征值和特征向量的函數
4、對特征值從大到小排序,依據主元貢獻率賀主元個數得到相應的的特征向量
1.2 基于記憶的協同過濾算法
1.2.1 基于用戶的協同過濾算法
舉個簡單的例子,我們知道櫻桃小丸子喜歡葡萄、草莓、西瓜和橘子,而我們通過某種方法了解到小丸子和花倫有相似的喜好,所以我們會把小丸子喜歡的而花倫還未選擇的水果(葡萄和橘子)推薦給花倫。
基于用戶的協同過濾算法主要包含以下兩個步驟:
A. 搜集用戶和物品的歷史信息,計算用戶u和其他用戶的相似度,找到和目標用戶Ui興趣相似的用戶集合N(u)
B.找到這個集合中用戶喜歡的,且目標用戶還沒有聽說過的物品推薦給目標用戶。
適用性
由于需計算用戶相似度矩陣,基于用戶的協同過濾算法適用于用戶較少的場合; 由于時效性較強,該方法適用于用戶個性化興趣不太明顯的領域。
1.2.2 基于物品的協同過濾算法
基于物品的協同過濾算法是目前業界應用最多的算法。無論是亞馬遜網,還是Netflix、Hulu、Youtube,其推薦算法的基礎都是該算法。
基于物品的協同過濾算法給用戶推薦那些和他們之前喜歡的物品相似的物品。比如,我們知道櫻桃小丸子和小玉都喜歡葡萄和西瓜,那么我們就認為葡萄和西瓜有較高的相似度,在花倫選擇了西瓜的情況下,我們會把葡萄推薦給花倫。
ItemCF算法并不利用物品的內容屬性計算物品之間的相似度,它主要通過分析用戶的行為記錄計算物品之間的相似度。該算法認為,物品A和物品B具有很大的相似度是因為喜歡物品A的用戶大都也喜歡物品B。
基于物品的協同過濾算法主要分為兩步:
A.對于目標用戶及其待評分的物品,根據用戶對物品的歷史偏好數據,計算物品與其他已評分物品之間的相似度 Sim(j,i),找到與物品相似度的物品合集N(u);
B. 根據所有物品 N(u) 的評分情況,選出N(u)中目標用戶可能喜歡的且沒有觀看過的推薦給目標用戶并預測評分。
適用性
適用于物品數明顯小于用戶數的場合; 長尾物品豐富,用戶個性化需求強烈的領域。
U-CF與I-CF比較
1.3 基于模型的協同過濾算法
1.3.1 基于隱語義模型的協同過濾算法(LFM)
主要用于:填充用戶打分矩陣的缺失值
思路來源:應該有一些隱藏的因素(不一定是人可以理解的)影響用戶的評分,找到隱藏因子,可以對U和I進行關聯;假定隱藏因子的個數小于U和I的數目,,因為如果每個User都關聯一個獨立的隱藏因子,那就沒法預測了;
其實是使用ALS(交替最小二乘法)
隱語義模型的進一步優化(例如y=kx+b比y=kx擁有更好的擬合能力)
離線計算的空間復雜度
基于鄰域的方法需要維護一張離線的相關表。在離線計算相關表的過程中,如果用戶/物品數很多,將會占據很大的內存。而LFM在建模過程中,可以很好地節省離線計算的內存。
離線計算的時間復雜度
在一般情況下,LFM的時間復雜度要稍微高于UserCF和ItemCF,這主要是因為該算法需要多次迭代。但總體上,這兩種算法在時間復雜度上沒有質的差別。
在線實時推薦
UserCF和ItemCF在線服務算法需要將相關表緩存在內存中,然后可以在線進行實時的預測。LFM在給用戶生成推薦列表時,需要計算用戶對所有物品的興趣權重,然后排名,不太適合用于物品數非常龐大的系統,如果要用,我們也需要一個比較快的算法給用戶先計算一個比較小的候選列表,然后再用LFM重新排名。另一方面,LFM在生成一個用戶推薦列表時速度太慢,因此不能在線實時計算,而需要離線將所有用戶的推薦結果事先計算好存儲在數據庫中。因此,LFM不能進行在線實時推薦,也就是說,當用戶有了新的行為后,他的推薦列表不會發生變化。
推薦解釋
ItemCF算法支持很好的推薦解釋,它可以利用用戶的歷史行為解釋推薦結果。但LFM無法提供這樣的解釋,它計算出的隱類雖然在語義上確實代表了一類興趣和物品,卻很難用自然語言描述并生成解釋展現給用戶。
1.3.2 基于樸素貝葉斯分離的推薦算法
貝葉斯
適用性
樸素貝葉斯分類實現起來比較簡單,準確率高,但是分類的時候需要學習全部樣本的信息。因此,樸素貝葉斯分類適用于數據量不大,類別較少的分類問題。
2、基于內容的推薦算法(CB)
2.1 基礎CB推薦算法
基礎CB推薦算法利用物品的基本信息和用戶偏好內容的相似性進行物品推薦。通過分析用戶已經瀏覽過的物品內容,生成用戶的偏好內容,然后推薦與用戶感興趣的物品內容相似度高的其他物品。
比如,用戶近期瀏覽過馮小剛導演的電影“非誠勿擾”,主演是葛優;那么如果用戶沒有看過“私人訂制”,則可以推薦給用戶。因為這兩部電影的導演都是馮小剛,主演都有葛優。
算法流程
算法輸入:物品信息,用戶行為日志。
算法輸出:初始推薦結果。
A.物品表示:每個物品使用特征向量表示;
B. 從用戶行為日志中,獲取該用戶所瀏覽、收藏、評價、分享的物品集合M,根據物品集合M中物品的特征數據,可以學到用戶的內容偏好;
C.保存Top-K個物品到初始推薦結果中。
適用場景
適用于基礎CB架構的搭建,尤其是對新上線物品會馬上被推薦非常有效,被推薦的機會與老的物品是相同的。
2.2 基于TF-IDF的CB推薦算法
TF-IDF在CB推薦算法中的應用于在CF推薦算法中的應用極為相似,唯一不同的是:
CF推薦算法中的KNN是根據用戶對物品的評分來計算物品間相似度的,而TF-IDF在CB推薦算法是根據【物品的詞語的TF-ID值構成的向量】來計算相似度的;
TF-IDF是自然語言處理領域中計算文檔中詞或短語的權值的方法,是詞頻(Term Frequency, TF)和逆轉文檔頻率(Inverse Document Frequency, IDF)的乘積。
TF指的是某一個給定的詞語在該文件中出現的次數,IDF是一個詞語普遍重要性的度量;
算法原理
TF-IDF算法基于這樣一個假設:若一個詞語在目標文檔中出現的頻率高而在其他文檔中出現的頻率低,那么這個詞語就可以用來區分出目標文檔。
算法流程
算法輸入:物品信息,用戶行為日志。
算法輸出:初始推薦結果。
A. 物品表示:向量表示 描述物品的詞語的TF-IDF值;
B.使用上面的向量計算物品的相似度,保存Top-K個物品到初始推薦結果中;
C. 從用戶行為日志中,獲取該用戶所瀏覽、收藏、評價、分享的物品集合M,根據物品集合M中物品的特征數據,可以學到用戶的內容偏好;
例如:
2.3 基于KNN的CB推薦算法
KNN在CB推薦算法中的應用于在CF推薦算法中的應用極為相似,唯一不同的是:
CF推薦算法中的KNN是根據用戶對物品的評分來計算物品間相似度的,而CB推薦算法中KNN是根據物品畫像來計算相似度的;
所以對于后者來說,如何通過物品畫像來計算物品間的相似度是算法中的關鍵步驟。
相似度的計算可以使用余弦相似度或Pearson相關系數的計算方法。
2.4 基于Rocchio的CB推薦算法
2.5 基于決策樹的CB推薦算法
基于決策樹的推薦算法在訓練階段會生成一個顯示的決策模型。決策樹可以通過訓練數據構建并有效判斷一個新的物品是否可能受到歡迎。當物品的特征屬性較少時,采用決策樹算法能夠取得不錯的效果,另外,決策樹學習的思想也比較容易被理解,在物品推薦時的可解釋性較好。
2.6 基于線性分類的CB推薦算法
將基于內容的物品推薦問題視為分類問題時,可以采用多種機器學習方法。從一個更抽象的角度上看,大部分學習方法致力于找到一個可以準確區分用戶喜歡和不喜歡的物品的線性分類模型系數。
將物品數據用n維特征向量來表示,線性分類器試圖在給定的物品特征空間中找到一個能夠將物品正確分類的平面,一類點盡可能在平面的某一邊(喜歡),另一類在平面的另一邊(不喜歡)。
2.7 基于樸素貝葉斯的CB推薦算法
3、 基于知識的推薦算法
3.1 概述
基于知識(Knowledge-based, KB)的推薦算法,是區別于基于CB和基于CF的常見推薦方法。如果說CB和CF像通用搜索引擎的話,KB好比某個領域的垂直搜索引擎,可以提供該領域的特殊需求,包括專業性的優質特征,幫助提高搜索引擎在特定領域的服務。
基于知識的推薦,也更容易滿足主觀個性化需求。例如,對于VIP用戶,如果配置好了偏好,就可以為其提供更加精準的推薦服務。
3.2 約束知識與約束推薦算法
如今網上購物所能涵蓋的物品越來越豐富,人們逐漸發現推薦系統的CF和CB推薦算法并不能很好地適應某些特殊物品的推薦需求。例如,更新換代非常快的而人們又通常不會經常更換的電子產品。對于這些產品來說,其各方面的性能參數在幾年間就會有很大變化,代表歷史偏好的用戶畫像并不能很好地反映用戶當前的購買需求,于是就需要推薦系統將用戶當前的需求作為重要信息參考源。
人們發現可以利用物品的參數特征等屬性形成約束知識,再將用戶對物品的特定刻畫為約束條件,然后經過對物品集合的約束滿足問題的求解,就可以得到用戶所期望的物品了。
創建推薦任務
推薦任務是以元組(R,I)的形式表示出來,其中用集合 R 表示目標用戶對物品的特定需求,即對物品的約束條件,用集合 I 表示一個物品集合。推薦的任務就是從集合 I 中確定出能夠滿足集合 R 要求的物品。
3.3 關聯知識與關聯推薦算法
算法原理
關聯知識以關聯規則為表現形式,用以描述數據庫中數據之間關聯性的知識。在推薦系統領域,可以通過對用戶畫像中關聯規則的挖掘分析來分析用戶的習慣,發現物品之間的關聯性,并利用這種關聯性指導系統做出推薦。
算法流程
算法輸入:n個用戶畫像。
算法輸出:針對目標用戶u的Top-N推薦列表。
A. 從系統中的n個用戶畫像中挖掘出所有的強關聯規則,建立集合以表示目標用戶u尚未觀看但極有可能感興趣的物品。
B.再次使用置信度對集合中的物品進行高低排序。
C.取出排序列表中的前N個物品構成Top-N推薦列表。
適用場景
由于對系統中全體用戶的畫像進行規則關聯挖掘意義不明顯且計算量大,所以基于關聯規則的推薦算法常與CF推薦算法混合使用。在這類混合方案中,使用了CF推薦算法中的最近鄰算法將用戶畫像數目n限定在目標用戶的最鄰近范圍內,使得關聯規則挖掘算法處理的數據規模被有針對性地限定在一定范圍內。
4、 混合推薦算法
各種推薦方法都有優缺點,為了揚長補短,在實際中常常采用混合推薦。
研究和應用最多的是內容推薦和協同過濾推薦的組合。最簡單的做法就是分別用基于內容的方法和協同過濾推薦方法去產生一個推薦預測結果,然后用某方法組合其結果。
組合推薦一個最重要原則就是通過組合后要能避免或彌補各自推薦技術的弱點。
4.1 加權式
加權多種推薦技術結果:
4.2 切換式
根據問題背景和實際情況或要求決定變換采用不同的推薦技術。
4.3 混雜式
同時采用多種推薦技術給出多種推薦結果為用戶提供參考。
4.4 特征組合
4.5 特征補充
一種技術產生附加的特征信息嵌入到另一種推薦技術的特征輸入中。
4.6 級聯式
三、推薦系統評估
1、打分系統-評分誤差率
2、Top-N推薦系統
2.1 準確率
2.2 召回率
2.3、覆蓋率
2.4、多樣性
2.5、其他(新穎度、驚喜度、信任度、實時性)
總結
以上是生活随笔為你收集整理的推荐算法--总结(08)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Python Cookbook 3rd
- 下一篇: 算法(15)-leetcode-expl