推薦系統構建三大方法:基於內容的推薦content-based,協同過濾collaborative filtering,隱語義模型(lfm, latent factor model)推薦。這篇部落格主要講協同過濾。協同過濾(collaborative filtering, cf)是一種非常經典的推薦系統演算法,其完全由統計學出發,挖掘使用者與物品之間的相關性。協同過濾顧名思義,先協同,即尋找相似的使用者或物品,再過濾,即篩選出符合條件的內容。——《推薦系統:協同過濾collaborative filtering》
在推薦系統中,主要有兩個主體,包括使用者(user)和物品(item),協同過濾也因此分為使用者協同過濾(usercf)和物品協同過濾(itemcf)。簡單的羅列描述如下:
給定一組使用者 u
=u=\
u=和一組物品 p
=p=\
p=,其中 m,n
m, n
m,n 分別表示使用者和物品的數量。推薦系統的前提是獲取使用者與物品的互動資料,因此即需要獲得使用者集合 u
uu 中每個使用者 u∈u
u\in u
u∈u 與物品集合中 p
pp 中,每個物品之間的互動關係,因此這屬於乙個典型的二分圖結構。圖中,包含兩類不同的結點,分別表示使用者和物品,圖中邊的兩端結點型別不同,邊表示使用者與物品之間存在互動歷史,邊上的權值則可以表示評價(正反饋,或打分等)。因此可以選擇共現矩陣進行儲存。
共現矩陣是描述使用者與物品之間互動的矩陣,一般地,行表示某個使用者與所有物品的互動資料,列表示某個物品與所有使用者的互動資料。相比鄰接矩陣而言,其可用於儲存二分圖。
例1:給定三個使用者本文中,共現矩陣記做 r=[\和三個物品
\,假設存在一定的互動資料(左側為二分圖,1表示存在互動,0表示不存在互動),則可以轉化為共現矩陣表示(右側圖)。
當新來乙個使用者 d
dd, 其只與2號物品有過互動,推薦系統的目標則是為這個使用者推薦其他沒有互動過的物品,例如**圖中的綠色邊是否存在。
rup]
r=[r_]
r=[rup
]表示第 u
uu 個使用者對物品 p
pp 的得分。其可以表示為 r=[
r1u,
r2u,
...,
rmu]
tr = [r_1^u, r_2^u, ..., r_m^u]^t
r=[r1u
,r2
u,.
..,r
mu]
t,其中 riu
r_i^u
riu
表示第 i
ii 個使用者向量;也可以表示為 r=[
r1p,
r2p,
...,
rnp]
r = [r_1^p, r_2^p, ..., r_n^p]
r=[r1p
,r2
p,.
..,r
np]
, 其中 rjp
r_j^p
rjp
表示第 j
jj 個物品的向量。
根據上面的描述,可知協同過濾中非常重要的部分是計算相似度。一般地,常見的相似度量函式有:
有了相似度函式,則可以進行協同過濾。
給定乙個共現矩陣 r=[
rup]
r=[r_]
r=[rup
]表示第 u
uu 個使用者對物品 ppp
例2:假設例1中的共現矩陣中的元素表示使用者為物品的打分,試**使用者 d使用者協同過濾存在兩個不足之處:dd 與物品 3
33 的打分。
(1)通常使用者數遠遠大於物品數,因此尋找相似使用者的計算量會非常大;
(2)使用者的歷史資料向量往往非常稀疏。
(1)使用者協同過濾(usercf)是基於使用者相似度進行推薦的,使用者可以快速地了解與自己相似的其他使用者的偏好。usercf更適用於發現熱點,跟蹤熱點的趨勢;(2)基於物品協同過濾(itemcf)是基於物品相似度進行推薦的,使用者在某一段內更傾向於尋找一類商品,根據使用者偏好的物品來尋找與之相似的物品進行推薦,更加契合使用者動機。
(3)協同過濾演算法具有可解釋性,但不具有泛化能力。
(4)協同過濾不能處理長尾效應以及稀疏性的資料;
(5)協同過濾只對使用者-物品的互動資料進行分析,無法有效引入其他資訊,例如使用者資訊、物品資訊等
協同過濾推薦演算法 協同過濾推薦演算法總結
推薦演算法具有非常多的應用場景和商業價值,因此對推薦演算法值得好好研究。推薦演算法種類很多,但是目前應用最廣泛的應該是協同過濾類別的推薦演算法,本文就對協同過濾類別的推薦演算法做乙個概括總結,後續也會對一些典型的協同過濾推薦演算法做原理總結。推薦演算法概述 1 基於內容的推薦 這一類一般依賴於自然語...
推薦系統 協同過濾演算法
協同過濾,collaborative filtering,簡稱cf,廣泛應用於如今的推薦系統中。通過協同過濾演算法,可以算出兩個相似度 user user相似度矩陣 item item相似度矩陣。為什麼叫做協同過濾?是因為這兩個相似度矩陣是通過對方來計算出來的。舉個栗子 100個使用者同時購買了兩種...
協同過濾推薦演算法 推薦演算法 基於協同過濾CF
前邊我們已經介紹了推薦演算法裡的基於內容的推薦演算法cb,今天我們來介紹一下基於協同的推薦演算法collaboration filtering cf 協同過濾是乙個利用群體智慧型的乙個演算法,舉乙個簡單的例子,如果放假了你想去北京玩幾天,但是不知道北京都有哪些好玩的,你會怎麼做?你可能會上網查一下的...