㈠ 協同過濾與分類
[TOC]
本文是《寫給程序員的數據挖掘實踐指南》的一周性筆記總結。主要涵蓋了以下內容:
所謂推薦系統就是系統根據你的行為操作為你推薦你可能想要的其他物品。這在電商平台、音樂平台、資訊推送平台等多有見到。而協同過濾簡單來說是利用某興趣相投、擁有共同經驗之群體的喜好來推薦用戶感興趣的信息,個人通過合作的機制給予信息相當程度的回應(如評分)並記錄下來以達到過濾的目的進而幫助別人篩選信息。其推薦基礎是用戶評分。這里可以分為兩種用戶評分,即顯式評分與隱式評分。顯式評分即日常見到的為物品打分,如對喜好音樂評級等;隱式評分是通過對用戶行為的持續性觀察,進而發現用戶偏好的一種方法,如新聞網頁中的推送你經常閱讀過的相關內容等。兩種評分方法都有自己的問題。
總體來說,協同過濾其運作機制也可以分為兩種:
基於用戶的推薦是指通過用戶的行為偏好,劃分相似用戶。在相似用戶群體之間互相推送一方喜歡而另一方未有過的物品。核心在於相似用戶群體的劃分。這種推薦方法有自己的局限:
基於用戶的過濾其核心是用戶群體的劃分,其實也就是分類。
這里的距離函數包括三種:曼哈頓距離和歐氏距離。這里以二維舉例,更多維情況下類推即可。
兩距離函數可以一般化為:
其中,當r=1時,函數為曼哈頓距離;當r=2時,函數為歐氏距離。
演算法實現:
在算出距離函數後,通過比對目標用戶與所有用戶群體的偏好,找到最近鄰的用戶並給予推薦。
基於用戶距離的推薦有一個明顯的問題,就是用戶評分體系的差異。比如評分極端的用戶給喜歡的評最高分,給不喜歡的評最低分;而有些用戶傾向於不出現極端評分。即所謂「分數貶值」( Grade Inflation )問題。這種問題的存在可能讓基於距離的評分產生偏差。皮爾遜相關系數可以緩解這種問題。
原皮爾遜相關系數公式在實際運用的時候會出現多次迭代的問題,影響計算效率,這里給出了近似公式:
皮爾遜相關系數的用戶判斷依據不是單純的用戶距離,而是用戶的評分一致性:取值在[-1, 1]之間,越接近1則表示兩用戶的評分一致性越好;反之則反。
python實現:
基於用戶推薦的過程中,另一個存在的問題就是由於大部分人的喜愛物品集合的交集過少,存在大量計算值為0的feature的情況。即所謂 稀疏性 問題。一個較容易理解的例子是對書本內容的挖掘。餘弦相似度會忽略這種0-0匹配。
餘弦相似度:
python實現:
如此多的評估系數,如何進行抉擇呢?根據數據特徵:
另外值得考慮的一點是,目前為止的推薦都是基於單用戶的。即對一個用戶的推薦系統只是基於另一個用戶。這會存在一些問題。比如雖然雖然兩者相似度很高,但是另外一個人有一些怪癖,怪癖的推薦就是不合理的;又比如,在相似度極高的情況下,你不能確定統一賬戶下的操作是同一個人做出的或者說操作行為是為了用戶自身。比如用戶考慮購買某件商品作為禮物送給別人,這就是基於別人喜好的購買行為,這種推薦也是不合適的。
對這種問題的解決可以使用群體劃分的方法。原理與單用戶類似,但是用戶的匹配是k個。在這k位最優匹配的用戶之間,以相似度的大小為依據設定權重作為物品推薦的條件。此即協同過濾的k近鄰。
正如前面提到的基於用戶的推薦有復雜度、稀疏性的問題,而基於物品的過濾則可以緩解這些問題。所謂基於物品的過濾是指,我們事先找到最相似的物品,並結合用戶對物品的評級結果來生成推薦。前提是要對物品進行相似度匹配,找到一種演算法。
這里的調整是指為了減輕用戶評分體系的不一致情況(抵消分數貶值),從每個評級結果中減去該用戶所有物品的平均分的評級結果。
其中,U表示所有同時對i, j進行評級過的用戶的集合。 表示用戶u給物品i的評分減去用戶u對所有物品的評分的平均值。
在得到所有物品的餘弦相似度後,我們就可以通過該指數預測用戶對某件物品的偏好程度。方法就是所有相似物品的相似度乘以得分的總和。
其中p(u, i)指的是用戶u對物品i評分的預測值。N是用戶u的所有評級物品中每個和i得分相似的物品。這里的相似指的是矩陣中存在N和i的一個相似度得分。 是i和N之間的相似度得分。 是u給N的評級結果。公式較好運行的條件是 取值在(-1, 1)之間,這里就要使用歸一化概念。
另一種常用的基於物品過濾的演算法就是 slope one 演算法。它的大概原理是預測用戶u對產品j的評分時,預先計算包含所有物品的兩物品偏差表;根據u的已評價的所有物品評分與該物品和產品j的偏差( )之和並乘以所有對此兩類物品有過評分的用戶個數,一一加總,除以所有同時對產品i與u評價過的所有物品有過評分的用戶的人數,得到得分。公式如下:
其中, ; 是利用加權s1演算法給出的用戶u對物品j的預測值。 指的是對所有除j之外u打過分的物品。
python實現:
在前面兩節中,基於物品和基於用戶的過濾其前提都是用戶需要對已有的item進行評分。而實際上,如果一個新的item出現,由於缺乏別人的偏好,他永遠不會被推薦。這就是推薦系統中所謂的—— 冷啟動 問題。基於用戶評價的系統就會出現這種問題。
冷啟動 問題的解決方案之一就是 基於物品屬性的過濾 來進行推薦:對物品自身的屬性進行歸納總結,並以此進行物品推薦。基於物品屬性的過濾存在一個問題同樣是量綱的不統一。如果量綱不統一極端值將會對推薦系統造成大麻煩。解決方法也很簡單:歸一化。此章使用的是z-評分。
使用z得分也存在問題,就是極易受到離群值的影響。這里可以使用 改進的標准分數 來緩解這個問題:
什麼時候可以進行歸一化呢?
這里用曼哈頓距離舉例基於物品屬性的過濾:
在上一章最後一節對於用戶是否喜歡某件item的判別中,實際上包含了分類器的思想:分類器就是利用對象屬性判定對象屬於哪個組或類別的程序。這里簡單用另一個小項目來說明。
簡單來說就是根據運動員的某些指標來判斷這位運動員屬於什麼類別的運動員。
准確率有0.8。
㈡ 協同過濾
協同過濾(Collaborative Filtering,CF)——經典/老牌
只用戶行為數據得到。對於 個用戶, 個物品,則有共現矩陣 :
對於有正負反饋的情況,如「贊」是1和「踩」是-1,無操作是0:
對於只有顯示反饋,如點擊是1,無操作是0:
演算法步驟:
1)得到共現矩陣 ;
2)計算 任意兩行 用戶相似度,得到用戶相似度矩陣 ;
3)針對某個用戶 選出與其最相似的 個用戶, 是超參數;——召回階段
4)基於這 個用戶,計算 對每個物品的得分;
5)按照用戶 的物品得分進行排序,過濾已推薦的物品,推薦剩下得分最高的 個。——排序階段
第2步中,怎麼計算用戶相似度?——使用共現矩陣的行
以餘弦相似度為標准,計算 和 之間的相似度:
第4步中,怎麼每個用戶對每個物品的得分?
假如和用戶 最相似的2個為 和 :
對物品 的評分為1,用戶 對物品 的評分也為1,那麼用戶 對 的評分為:
也就是說:利用用戶相似度對用戶評分進行加權平均:
其中, 為用戶 和用戶 之間的相似度, 為用戶 和物品 之間的相似度。
UserCF的缺點
1、現實中用戶數遠遠大於物品數,所以維護用戶相似度矩陣代價很大;
2、共現矩陣是很稀疏的,那麼計算計算用戶相似度的准確度很低。
演算法步驟:
1)得到共現矩陣 ;
2)計算 任意兩列 物品相似度,得到物品相似度矩陣 ;
3)對於有正負反饋的,獲得用戶 正反饋的物品;
4)找出用戶 正反饋的物品最相似的 個物品,組成相似物品集合;——召回階段
5)利用相似度分值對相似物品集合進行排序,生產推薦列表。——排序階段
最簡單情況下一個物品(用戶未接觸的)只出現在另一個物品(用戶已反饋的)的最相似集合中,那麼每個用戶對每個物品的得分就是相似度。如果一個物品和多個物品最相似怎麼辦?
如用戶正反饋的是 和 ,對於物品 其最相似的是 ,相似度為0.7,對於物品 其最相似的也是 ,相似度為0.6,那麼 相似度為:
也就是說:如果一個物品出現在多個物品的 個最相似的物品集合中,那麼該物品的相似度為多個相似度乘以對應評分的累加。
其中, 是物品p與物品h的相似度, 是用戶u對物品p的評分。
第2步中,怎麼計算物品相似度?——使用共現矩陣的列
以餘弦相似度為標准,計算 和 之間的相似度:
餘弦相似度
皮爾遜相關系數
基於皮爾遜相關系數的改進
UserCF適用於用戶興趣比較分散變換較快的場景,如新聞推薦。
IteamCF適用於用戶情趣不叫穩定的場景,如電商推薦。
優點:直觀,可解釋性強。
缺點:
㈢ 推薦系統(一):基於物品的協同過濾演算法
協同過濾(collaborative filtering)演算法是最經典、最常用的推薦演算法。其基本思想是收集用戶偏好,找到相似的用戶或物品,然後計算並推薦。
基於物品的協同過濾演算法的核心思想就是:給用戶推薦那些和他們之前喜歡的物品相似的物品。主要可分為兩步:
(1) 計算物品之間的相似度,建立相似度矩陣。
(2) 根據物品的相似度和用戶的歷史行為給用戶生成推薦列表。
相似度的定義有多種方式,下面簡要介紹其中幾種:
其中,分母 是喜歡物品 的用戶數,而分子 是同時喜歡物品 和物品 的用戶數。因此,上述公式可以理解為喜歡物品 的用戶中有多少比例的用戶也喜歡物品 。
上述公式存在一個問題。如果物品 很熱門, 就會很大,接近1。因此,該公式會造成任何物品都會和熱門的物品有很大的相似度,為了避免推薦出熱門的物品,可以用下面的公式:
這個公式懲罰了物品 的權重,因此減輕了熱門物品會和很多物品相似的可能性。
另外為減小活躍用戶對結果的影響,考慮IUF(nverse User Frequence) ,即用戶活躍度對數的倒數的參數,認為活躍用戶對物品相似度的貢獻應該小於不活躍的用戶。
為便於計算,還需要進一步將相似度矩陣歸一化 。
其中 表示用戶 對物品 的評分。 在區間 內,越接近1表示相似度越高。
表示空間中的兩個點,則其歐幾里得距離為:
當 時,即為平面上兩個點的距離,當表示相似度時,可採用下式轉換:
距離越小,相似度越大。
一般表示兩個定距變數間聯系的緊密程度,取值范圍為[-1,1]
其中 是 和 的樣品標准差
將用戶行為數據按照均勻分布隨機劃分為M份,挑選一份作為測試集,將剩下的M-1份作為訓練集。為防止評測指標不是過擬合的結果,共進行M次實驗,每次都使用不同的測試集。然後將M次實驗測出的評測指標的平均值作為最終的評測指標。
對用戶u推薦N個物品(記為 ),令用戶u在測試集上喜歡的物品集合為 ,召回率描述有多少比例的用戶-物品評分記錄包含在最終的推薦列表中。
准確率描述最終的推薦列表中有多少比例是發生過的用戶-物品評分記錄。
覆蓋率反映了推薦演算法發掘長尾的能力,覆蓋率越高,說明推薦演算法越能夠將長尾中的物品推薦給用戶。分子部分表示實驗中所有被推薦給用戶的物品數目(集合去重),分母表示數據集中所有物品的數目。
採用GroupLens提供的MovieLens數據集, http://www.grouplens.org/node/73 。本章使用中等大小的數據集,包含6000多用戶對4000多部電影的100萬條評分。該數據集是一個評分數據集,用戶可以給電影評1-5分5個不同的等級。本文著重研究隱反饋數據集中TopN推薦問題,因此忽略了數據集中的評分記錄。
該部分定義了所需要的主要變數,集合採用字典形式的數據結構。
讀取原始CSV文件,並劃分訓練集和測試集,訓練集佔比87.5%,同時建立訓練集和測試集的用戶字典,記錄每個用戶對電影評分的字典。
第一步循環讀取每個用戶及其看過的電影,並統計每部電影被看過的次數,以及電影總數;第二步計算矩陣C,C[i][j]表示同時喜歡電影i和j的用戶數,並考慮對活躍用戶的懲罰;第三步根據式\ref{similarity}計算電影間的相似性;第四步進行歸一化處理。
針對目標用戶U,找到K部相似的電影,並推薦其N部電影,如果用戶已經看過該電影則不推薦。
產生推薦並通過准確率、召回率和覆蓋率進行評估。
結果如下所示,由於數據量較大,相似度矩陣為 維,計算速度較慢,耐心等待即可。
[1]. https://blog.csdn.net/m0_37917271/article/details/82656158
[2]. 推薦系統與深度學習. 黃昕等. 清華大學出版社. 2019.
[3]. 推薦系統演算法實踐. 黃美靈. 電子工業出版社. 2019.
[4]. 推薦系統演算法. 項亮. 人民郵電出版社. 2012.
[5]. 美團機器學習實踐. 美團演算法團隊. 人民郵電出版社. 2018.
㈣ 基於物品的協同過濾
參考書本: 項亮, 推薦系統實踐. 2012
本文系閱讀筆記
1.網站用戶基數增多,矩陣難以構造,時空復雜度增加。
2.難以對推薦結果做出解釋。
該演算法會因為你購買過《數據挖掘導論》而給你推薦《機器學習》。不過, ItemCF 演算法並不利用物品的內容屬性計算物品之間的相似度,它主要通過分析用戶的行為記錄計算物品之間的相似度。 該演算法認為,物品 A 和物品 B 具有很大的相似度是因為喜歡物品 A 的用戶大都也喜歡物品B 。
基於物品的協同過濾演算法可以利用用戶的歷史行為給推薦結果提供推薦解釋,比如給用戶推薦《天龍八部》的解釋可以是因為用戶之前喜歡《射鵰英雄傳》。
基於物品的協同過濾演算法主要分為兩步。
(1) 計算物品之間的相似度。
(2) 根據物品的相似度和用戶的歷史行為給用戶生成推薦列表。
具體公式(ij直接的相似度):
N(i)表示喜歡物品i的用戶數。
但是如果物品j很熱門,幾乎每個人都喜歡,則關系度會接近於1。(如可能很多人都會買《新華字典》或《哈利波特》)
為了避免推薦熱門物品,則有公式:
這個公式懲罰了物品j的權重,減輕了熱門物品會和很多物品相似的可能性。
盡管上面的公式分母已經考慮到了 j 的流行度,但在實際應用中,熱門的 j 仍然會獲得比較大的相似度。因此可在分母上進行懲罰。
但不能完全解決,兩個不同領域的最熱門物品之間往往具有比較高的相似度。這個時候,僅僅靠用戶行為數據是不能解決這個問題的,因為用戶的行為表示這種物品之間應該相似度很高。此時,我們只能依靠引入物品的內容數據解決這個問題,比如對不同領域的物品降低權重等。這些就不是協同過濾討論的范疇了。
可以首先建立用戶-物品倒排表,即每一個用戶建立一個包含他喜歡的物品的列表。
比如電影,一般來說,同系列的電影、同主角的電影、同風格的電影、同國家和地區的電影會有比較大的相似度。
在得到物品之間相似度後,itemCF運用以下公式計算用戶u對一個物品j的興趣:
S(j,K) 與物品j最相似的K個物品的集合
為物品相似度。 即用戶u對物品i的興趣程度,這里可看做有過行為為1。
對既屬於用戶喜歡的物品,又在與j物品相似的物品集合內的每一個物品,得到權重相加和(即相似度乘感興趣程度)。
精度(准確率和召回率) 可以看到 ItemCF 推薦結果的精度也是不和 K 成正相關或者負相關的,因此選擇合適的 K 對獲得最高精度是非常重要的。
流行度 和 UserCF 不同,參數 K 對 ItemCF 推薦結果流行度的影響也不是完全正相關的。
隨著 K 的增加(流行物品相對增多),結果流行度會逐漸提高,但當 K 增加到一定程度,流行度就不會再有明顯變化。
覆蓋率 K 增加會降低系統的覆蓋率(流行率增加)。
A.
假設有這么一個用戶,他是開書店的,並且買了當當網上 80% 的書准備用來自己賣。那麼,他的購物車里包含當當網 80% 的書。假設當當網有 100 萬本書,也就是說他買了 80 萬本。從前面對 ItemCF 的討論可以看到,這意味著因為存在這么一個用戶,有 80 萬本書兩兩之間就產生了相似度,也就是說,內存里即將誕生一個 80 萬乘 80 萬的稠密矩陣。
John S. Breese 在論文中提出了一個稱為 IUF ( Inverse User Frequence ),即用戶活躍度對數的倒數的參數,他也認為活躍用戶對物品相似度的貢獻應該小於不活躍的用戶,他提出應該增加 IUF參數來修正物品相似度的計算公式:ItemCF-IUF演算法
同ItemCF相比,降低了流行度,提高了推薦結果的覆蓋率。
B.
物品相似度歸一化。
Karypis 在研究中發現如果將 ItemCF 的相似度矩陣按最大值歸一化,可以提高推薦的准確率。
其研究表明,如果已經得到了物品相似度矩陣 w ,那麼可以用如下公式得到歸一化之後的相似度矩陣 w' :
相似度的歸一化可以提高推薦的多樣性。[解釋看原書]
㈤ 個性化推薦演算法——協同過濾
有三種:協同過濾
用戶歷史行為
物品相似矩陣
㈥ 推薦演算法綜述
推薦系統的目的是通過推薦計算幫助用戶從海量的數據對象中選擇出用戶最有可能感興趣的對象。涉及三個基本內容:目標用戶、待推薦項目以及推薦演算法,基本流程為:描述為用戶模型構建、項目模型建立以及推薦演算法處理三個基本流程;
為了能夠為用戶提供准確的推薦服務,推薦系統需要為用戶構建用戶模型,該模型能夠反映用戶動態變化的多層次興趣偏好,有助於推薦系統更好的理解用戶的特徵和需求。構建用戶模型通常需要經歷三個流程:用戶數據收集,用戶模型表示以及用戶模型更新。
(1)用戶數據收集:用戶數據是用戶模型構建的基礎,用戶數據收集的方式一般有顯示方式獲取和隱式方式獲取兩種。
顯示方式獲取的數據是用戶特徵屬性和興趣偏好的直接反映,所獲得的信息數據是較為客觀全面的,比如用戶在注冊時包含的性別、年齡等信息可以直接表示出用戶的基本人口學信息和興趣信息,用戶對項目的評分可以反映出用戶的偏好。但顯示獲取的方式最大的缺陷是其實時性較差,並且具有很強的侵襲性。
隱式方式獲取用戶數據是在不幹擾用戶的前提下,採集用戶的操作行為數據,並從中挖掘出用戶的興趣偏好。用戶的很多操作行為都能反映出用戶的喜好,比如用戶瀏覽網頁的速度、用戶查詢的關鍵字等,推薦系統在不影響用戶使用系統的情況下,通過行為日誌挖掘出用戶的偏好。隱式獲取方式由於具有較好的實時性和靈活性和較弱的侵襲性,己經成為推薦系統中主要的用戶數據採集方式。
(2)用戶模型表示:用戶模型是從用戶數據中歸納出的推薦系統所理解的用戶興趣偏好的結構化形式。
a 基於內容關鍵詞表示;
b 基於評分矩陣表示;
(3)用戶模型更新:推薦系統面臨的問題之一是興趣漂移,興趣漂移的根本原因在於用戶的興趣會隨時間發生改變。為了使用戶模型夠准確的代表用戶的興趣,推薦系統需要根據最新的用戶數據對用戶模型進行更新。
目前項目模型主要通過基於內容和基於分類這兩類方式來建立。基於內容的方式是以項目本身內容為基礎,向量空間模型表示是目前御用最為廣泛的基於內容的方式。
基於分類的方式是根據項目的內容或者屬性,將項目劃分到一個或者幾個類別中,利用類別信息來表示項目,這種方法可以很方便地將項目推薦給對某一類別感興趣的用戶。常見的分類演算法有樸素貝葉斯演算法和KNN分類演算法等。
推薦系統實現的核心是其使用的推薦演算法。針對不同的使用環境及其系統的數據特徵,選取不同的推薦演算法,可以在本質上提高推薦系統的推薦效果。根據不同的分類標准,推薦演算法出現了有很多不同的分類方法,本文採用了比較普遍的分類方法。
推薦系統通常被分為基於內容的推薦演算法、協同過濾推薦演算法以及混合模型推薦演算法三大類。
基於內容的推薦演算法,其本質是對物品或用戶的內容進行分析建立屬性特徵。系統根據其屬性特徵,為用戶推薦與其感興趣的屬性特徵相似的信息。演算法的主要思想是將與用戶之前感興趣的項目的內容相似的其他項目推薦給用戶。
CBF(Content-based Filter Recommendations)演算法的主要思想是將與用戶之前感興趣的項目的內容相似的其他項目推薦給用戶,比如用戶喜歡Java開發的書籍,則基於內容過濾演算法將用戶尚未看過的其他Java開發方面的書籍推薦給用戶。因此,該推薦演算法的關鍵部分是計算用戶模型和項目模型之間的內容相似度,相似度的計算通常採用餘弦相似性度量。
基於內容的推薦過程一般分為以下三個模塊:
(1)特徵提取模塊:由於大多數物品信息是非結構化的,需要為每個物品(如產品、網頁、新聞、文檔等)抽取出一些特徵屬性,用某一恰當的格式表示,以便下一階段的處理。如將新聞信息表示成關鍵詞向量,此種表示形式將作為下一模塊(屬性特徵學習模塊)的輸入。
(2)特徵學習模塊:通過用戶的歷史行為數據特徵,機器學習出用戶的興趣特徵模型。本模塊負責收集代表用戶喜好的數據信息,並泛化這些數據,用於構建用戶特徵模型。通常使用機器學習的泛化策略,來將用戶喜好表示為興趣模型。
(3)推薦模塊:該模塊利用上一階段得到的用戶特徵模型,通過對比用戶興趣模型與帶推薦物品的特徵相似度,為用戶推薦與其興趣相似度較高的物品,從而達到個性化推薦的目的。該模塊一般採用計算用戶興趣向量與待推薦物品特徵向量的相似度來進行排序,將相似度較高的物品推薦給相應用戶。計算相似度有多種方法,如皮爾遜相關系數法、夾角餘弦法、Jaccard相關系數法等。
協同過濾演算法(Collaborative Filtering)是於內容無關的,即不需要額外獲取分析用戶或物品的內容屬性特徵。是基於用戶歷史行為數據進行推薦的演算法。其通過分析用戶與物品間的聯系來尋找新的用戶與物品間的相關性。
該演算法演算法通常有兩個過程,一個過程是預測,另一個過程是推薦。主流的協同過濾演算法包括三種:基於用戶的協同過濾(User-Based Collaborative Filtering,UBCF)、基於項目的協同過濾(Item-Based Collaborative Filtering, IBCF)和基於模型的協同過濾(Model-Based Collaborative Filtering, MBCF)
(1)基於用戶的協同過濾演算法
基於用戶的協同過濾推薦演算法,先通過用戶歷史行為數據找到和用戶u相似的用戶,將這些用戶感興趣的且u沒有點擊過的物品推薦給用戶。
演算法主要包括以下兩個步驟:
(1)找到與目標用戶喜好相似的鄰居用戶集合。
(2)在鄰居用戶集合中,為用戶推薦其感興趣的物品。
UBCF的基本思想是將與當前用戶有相同偏好的其他用戶所喜歡的項目推薦給當前用戶。一個最典型的例子就是電影推薦,當我們不知道哪一部電影是我們比較喜歡的時候,通常會詢問身邊的朋友是否有好的電影推薦,詢問的時候我們習慣於尋找和我們品味相同或相似的朋友。
(2)基於物品的協同過濾演算法
基於物品的協同過濾演算法(Item-based Collaborative Filtering)其主要思想是,為用戶推薦那些與他們之前喜歡或點擊過的物品相似的物品。不過基於物品的協同過濾演算法並不是利用物品的內容屬性特徵來計算物品之間的相似度的。該類演算法是利用用戶的歷史行為數據計算待推薦物品之間的相似度。在該類演算法中,如果喜歡物品A的用戶大都也喜歡物品B,那麼就可以認為物品A和物品B之間的相似度很高。
演算法分為以下兩個步驟:
(1)根據用戶歷史行為數據,計算物品間的相似度。
(2)利用用戶行為和物品間的相似度為用戶生成推薦列表。
IBCF演算法是亞馬遜在2003年發表的論文中首次提出,該演算法的基本思想是根據所有用戶的歷史偏好數據計算項目之間的相似性,然後把和用戶喜歡的項目相類似的並且用戶還未選擇的其他項目推薦給用戶,例如,假設用戶喜歡項目a,則用戶喜歡與項目a高度相似且還未被用戶選擇的項目b的可能性非常大,因此將項目b推薦給用戶。
UBCF和IBCF都屬於基於內存的協同過濾演算法,這類演算法由於充分發揮了用戶的評分數據,形成全局推薦,因此具有較高的推薦質量。但隨著用戶和項目的規模增長,這類演算法的計算時間大幅上升,使得系統的性能下降。針對該問題,研究人員提出將數據挖掘中的模型和CF演算法結合,提出了基於模型的協同過濾演算法(MBCF) 。
MBCF演算法利用用戶歷史評分數據建立模型,模型建立的演算法通常有奇異值分解、聚類演算法、貝葉斯網路、關聯規則挖掘等,且通常是離線完成。由於MBCF通常會對原始評分值做近似計算,通過犧牲一定的准確性來換取系統性能,因此MBCF的推薦質量略差於UBCF和IBCF。
由於基於內容的推薦演算法和協同過濾推薦演算法都有其各自的局限性,混合推薦演算法應運而生。混合推薦演算法根據不同的應用場景,有多
種不同的結合方式,如加權、分層和分區等。
目前使用的混合推薦演算法的思想主要可以分成以下幾類:
(1)多個推薦演算法獨立運行,獲取的多個推薦結果以一定的策略進行混合,例如為每一個推薦結果都賦予一個權值的加權型混合推薦演算法和將各個推薦結果取TOP-N的交叉混合推薦演算法。
(2)將前一個推薦方法產出的中間結果或者最終結果輸出給後一個推薦方法,層層遞進,推薦結果在此過程中會被逐步優選,最終得到一個精確度比較高的結果。
(3)使用多種推薦演算法,將每種推薦演算法計算過程中產生的相似度值通過權重相加,調整每個推薦演算法相似度值的權重,以該混合相似度值為基礎,選擇出鄰域集合,並結合鄰域集合中的評估信息,得出最優的推薦結果。
BP (Back Propagation)神經網路是目前應用最廣泛的神經網路模型之一,是一種按誤差逆傳播演算法訓練的多層前饋網路。
BP神經網路模型包括輸入層、隱藏層和輸出層,每一層由一個或多個神經元組成,其結構圖如圖2-3所示。BP神經網路擁有很強的非線性映射能力和自學習、自適應能力,網路本身結構的可變性,也使其十分靈活,一個三層的BP神經網路能夠實現對任意非線性函數進行逼近。
BP神經網路的訓練過程通常分為3個過程,依次分別為數據初始化過程、正向推演計算過程以及反向權重調整過程。數據初始化是BP神經網路能夠進行有效訓練的前提,該過程通常包括輸入數據進行歸一化處理和初始權重的設置;正向推演計算是數據沿著網路方向進行推演計算;反向權重調整則是將期望輸出和網路的實際輸出進行對比,從輸出層開始,向著輸入層的方向逐層計算各層中各神經元的校正差值,調整神經元的權重。正向推演計算和反向權重調整為對單個訓練樣本一次完整的網路訓練過程,經過不斷的訓練調整,網路的實際輸出越來越趨近於期望輸出,當網路輸出到達預期目標,整個訓練過程結束。
TF-IDF(Term Frequency-Inverse Document Frequency,詞頻一逆文檔)是文本處理中常用的加權技術,廣泛應用於信息檢索、搜索引擎等領域。
TF-IDF的主要思想是:如果一個關鍵詞在文檔中出現的頻率很高,而在其他文檔中出現次數較少,則該關鍵詞被認為具有較強的代表性,即該關鍵詞通過TF-IDF計算後有較高的權重。
TextRank演算法,是一種用於文本關鍵詞排序的演算法,頁排序演算法PageRank。
PageRank基本思想是將每個網頁看成一個節點,網頁中的鏈接指向看成一條有向邊,一個網頁節點的重要程度取決於鏈接指向該網頁節點的其他節點的數量和重要權值,該過程描述如下:讓每一個網頁對其所包含的鏈接指向的網頁進行迭代投票,每次迭代投票過程中票的權重取決於網頁當前擁有的票數,當投票結果收斂或者達到指定的迭代次數時,每個網頁所獲得票數即為網頁重要程度權值。
TextRank演算法相比於TF-IDF最大的優點是TextRank是一種無監督的學習,因此不會受限於文本的主題,並且無需大規模的訓練集,可以針對單一文本進行快速的關鍵詞的權重計算。
㈦ k近鄰協同過濾和協同過濾演算法的區別
協同過濾演算法
協同過濾(Collaborative filtering, CF)演算法是目前個性化推薦系統比較流行的演算法之一。
協同演算法分為兩個基本演算法:基於用戶的協同過濾(UserCF)和基於項目的協同過濾(ItemCF)。
最近這段時間,多數人都選擇使用被稱為個性化協同推薦(Personalized Collaborative Recommender)的演算法。這也是亞馬遜、Netflix、Facebook 的好友推薦,以及一家英國流行音樂網站 Last.fm 的核心演算法。說它 「個性化」,是因為這種演算法會追蹤用戶的每一個行為(如瀏覽過的頁面、訂單記錄和商品評分),以此進行推薦;它們可不是瞎貓碰上死耗子——全憑運氣。說它 「協同」,則是因為這種演算法會根據許多其他的顧客也購買了這些商品或者對其顯示出好感,而將兩樣物品視為彼此關聯,它不是通過分析商品特徵或者關鍵詞來進行判斷的。
㈧ 協同過濾演算法是大數據嗎
不是。
協同過濾演算法側重於從大數據(集體智慧)中尋找某些隱含的模式,即通過用戶對於商品的歷史交互記錄來尋找相似的用戶。是一種較為著名和常用的推薦演算法。它側重大數據但不是大數據。
大數據(bigdata),或稱巨量資料,指的是所涉及的資料量規模巨大到無法透過主流軟體工具,在合理時間內達到擷取、管理、處理、並整理成為幫助企業經營決策更積極目的的資訊。
㈨ 協同過濾演算法有哪些 slope
協同過濾演算法是這一領域的主流。作為基於內容的演算法執行方式,協同過濾在准確性上具有相當的優勢,但無法冷啟動、同質化和運算效率低使其依然存在很多不足。
協同過濾演算法的名稱來源於化學上的過濾操作。
原理
利用物質的溶解性差異,將液體和不溶於液體的固體分離開來的一種方法。如用過濾法除去粗食鹽中少量的泥沙
過濾實驗儀器
漏斗、燒杯、玻璃棒、鐵架台(含鐵圈)、濾紙。
過濾操作要領
要做到「一貼、二低、三靠」。
一貼
即使濾紙潤濕,緊貼漏斗內壁,中間不要留下氣泡。(防止氣泡減慢過濾速度。)
二低
1.濾紙邊緣略低於漏斗邊緣。
2.液面低於濾紙邊緣。(防止液體過濾不凈。)
三靠
1.傾倒時燒杯杯口要緊靠玻璃棒上。
2.玻璃棒下端抵靠在三層濾紙處。
3.漏斗下端長的那側管口緊靠燒杯內壁。
過濾注意事項
1.燒杯中的混合物在過濾前應用玻璃棒攪拌,然後進行過濾。
2.過濾後若溶液還顯渾濁,應再過濾一次,直到溶液變得透明為止。
3.過濾器中的沉澱的洗滌方法:用燒瓶或滴管向過濾器中加蒸餾水,使水面蓋沒沉澱物,待溶液全部濾出後,重復2~3次。
希望我能幫助你解疑釋惑。