生成共現矩陣。假設有m個使用者,n個物品,每個使用者會對n個物品中的乙個或者幾個進行評分,未評分的物品分值就用問號表示,則所有m個使用者對物品的評分可形成乙個m∗n
m*nm∗
n的評分矩陣,也就是協同過濾中的共現矩陣。
生成共現矩陣後,推薦問題就轉換成了**矩陣中問號的值的過程。
利用使用者相似度和相似使用者評分的加權平均偶的目標使用者的評價**。下式中,wu,
sw_
wu,s
是物品u和使用者s的相似度,us,
pu_
us,p
是使用者s對物品p的評分。
r u,
p=∑s
∈s(w
u,s⋅
rs,p
)∑s∈
swu,
sr_ = \frac(w_ \cdot r_)}w_}
ru,p=
∑s∈s
wu,
s∑s
∈s(
wu,s
⋅rs
,p)
usercf主要有量大缺點,(1) 在網際網路場景下,使用者數量遠大於商品數量,而且還會持續增加,這導致使用者相似度矩陣的儲存開銷很大;(2) 使用者的歷史資料很稀疏,找到相似使用者的準確度很低。
由於上面兩大缺點,amazon最終沒有採用該方法,而是採用了itemcf。itemcf的計算過程和usercf類似,但是在應用場景上有所不同。userct具備強社交屬性,並且更適合發現熱點以及跟蹤熱點的趨勢。itemcf更適用於興趣變化較為穩定的應用。
協同過濾有兩大缺點,(1) 熱門的物品具有很強的頭部效應,容易跟大量物品產生相似性,而尾部物品則完全相反;(2) 協同過濾僅僅利用使用者和物品的互動資訊,造成了資訊遺漏。
在矩陣分解的演算法框架下,使用者和物品的隱向量是通過分解共現矩陣得到的。對矩陣進行矩陣分解的方法主要有三種,特徵值分解、奇異值分解、梯度下降。其中,特徵值分解只能作用於方陣,故排除。奇異值分解要求原始的共現矩陣是稠密的,所以必須對確實的元素值進行填充,並且計算複雜度為o(m
n2
)o(mn^2)
o(mn2)
,所以也不合適。因此,梯度下降成了進行矩陣分解的主要方法,目標函式是讓原始評分rui
r_ru
i與使用者向量和物品向量之積qit
pu
q^t_ip_u
qitpu
的差盡量小,同時為了減少過擬合現象,加入正則化項。下式中,k是所有使用者評分樣本的集合。
m in
q∗,p
∗∑(u
,i)∈
k(ru
i−qi
tpu)
2+λ(
∣∣qi
∣∣2+
∣∣pu
∣∣2)
\underset\underset(r_-q_i^tp_u)^2+\lambda(||q_i||^2+||p_u||^2)
q∗,p
∗min(
u,i)
∈k∑
(rui
−qi
tpu
)2+
λ(∣∣
qi∣
∣2+∣
∣pu
∣∣2)
對q
iq_i
qi求偏導,得∂h∂
qi=2
(rui
−qit
pu)p
u−2λ
qi
\frac = 2(r_-q_i^tp_u)p_u-2\lambda q_i
∂qi∂h
=2(
rui
−qit
pu
)pu
−2λq
i對p
up_u
pu求偏導,得∂h∂
qi=2
(rui
−qit
pu)q
i−2λ
pu
\frac = 2(r_-q_i^tp_u)q_i-2\lambda p_u
∂qi∂h
=2(
rui
−qit
pu
)qi
−2λp
u沿梯度反方向更新引數
矩陣分解相比協同過濾有三個優點:(1) 泛化能力強,一定程度上解決了資料稀疏問題;(2) 空間複雜度低;(3)更好的擴充套件性和靈活性
關注我帶你拿大廠offer>_<
矩陣sum 推薦系統 從協同過濾到矩陣分解
協同過濾演算法 矩陣分解 協同過濾與矩陣分解的關係 早期的推薦系統以業務理解為核心,通過複雜的規則描述來向使用者推薦商品,這種做法具有透明性高 可移植性差 維護成本高 泛化能力差等特點。在這樣乙個背景下,協同過濾演算法在amazon推薦系統中的成功落地成為了當時的焦點。要理解協同過濾演算法必須理解其...
fp grows,pfp grows與協同過濾cf
fp增長演算法是一種以自底向上的探索樹fp tree產生頻繁項集的演算法。fim 頻繁項集挖掘 的定義 i 是乙個專案的集合,乙個事務資料庫db是 i的乙個子集,db 每乙個 ti屬於i 1 i n ti 屬於乙個事務。模式 a 屬於 i 的支援度為 supp a 是這個某些事務 包含模式 a 在整...
矩陣分解在協同過濾推薦演算法中的應用
在推薦系統中,我們常常遇到的問題是這樣的,我們有很多使用者和物品,也有少部分使用者對少部分物品的評分,我們希望 目標使用者對其他未評分物品的評分,進而將評分高的物品推薦給目標使用者。比如下面的使用者物品評分表 使用者 物品 物品1物品2 物品3物品4 物品5物品6 物品7使用者135 1使用者224...