本文主要參考自yehuda koren的**factorization meets the neighborhood: a multifaceted collaborative filtering model
對於任意乙個m行n列的矩陣a,它必然能被分解為三個矩陣: a=
uσv
其中,σ
是乙個對角矩陣,對角線為該矩陣的所有奇異值,如下: σ=
⎡⎣⎢⎢
⎢⎢⎢σ
1σ2⋱
σr⎤⎦
⎥⎥⎥⎥
⎥ 其中r為矩陣a的秩,σ1
,σ2,
⋯,σr
按從大到小的順序排列。在實際使用中一般從
σ 中取前k個組成σ′
,從u中取出前k列組成u』,從v中取出前k行組成v』,然後將σ′
,u′,
v′這三個矩陣相乘,這樣得到的矩陣a』和原矩陣a十分相似,k越大,相似度越高。
若只將σ
′ 和u』相乘,得到: a=
bv′,
wher
eb=u
′σ′
其中b是m行k列的,v』是k行m列的。
使用者\物品
物品1物品2
使用者15
4使用者267
用rui 表示使用者u對物品i的評分。
在實際情況中,有一些物品的評分要比平均分高,有一些使用者的打分則可能比平均分低。
使用 μ
來表示總體的平均分,bu
表示使用者u的打分的平均值相對於
μ 的偏移量,bi
表示物品i的得分相對於
μ 的偏移量,使用bu
i 來表示**得到的u對i的評分,則**公式為: bu
i=μ+
bu+b
i 通過最小化下式即可訓練得到bu
和bi
σ(u,
i)∈k
((ru
i−μ−
bu−b
i)2+
λ1(b
2u+b
2i))
其中k=
根據上文提到的svd,使用者對物品的評分矩陣可以分解為兩個矩陣的乘積,將第乙個矩陣的每一行作為向量pu
分配給每個使用者,將第二個矩陣的每一列作為向量qi
分配給每個物品。那麼就有: r^
ui=p
tuqi
pu 可以理解為使用者u對物品的每個品質的喜好程度,qi
可以理解為物品i的每個品質的好壞程度。但是我們並不顯示地規定物品有哪些品質,只規定物品的品質的數量,規定的品質的數量越多,模型的精度越高。
再將上面的式子與上面的baseline estimates結合: r^
ui=μ
+bu+
bi+p
tuqi
使用梯度下降最小化下式即可得到bu
,bi,
pu,q
i σ(
u,i∈
k)((
rui−
μ−bu
−bi−
ptuq
i)2+
λ(b2
u+b2
i+||
pu||
2+||
qi||
2))
在basic svd的基礎上,使用物品的資訊來代替使用者的向量pu
得到如下公式: r^
ui=b
ui+q
ti(|
r(u)
|−12
σj∈r
(u)(
ruj−
buj)
xj+|
n(u)
|−12
σj∈n
(u)y
j)其中r(u)為使用者u評價過的物品的集合,相當於使用者對推薦系統的顯示的反饋。n(u)為使用者u瀏覽過但是沒有評分的物品的集合,相當於使用者對推薦系統的隱式的反饋。
這個模型與basic svd相比的乙個好處是當需要**乙個新的使用者對物品的評分時,不需要再重新訓練模型,只要使用者對系統給出了反饋即可進行**。
但是如果有新的物品被加進推薦系統的話則需要重新訓練模型。
svd++在基礎svd的基礎上加上了使用者的隱式反饋。 r^
ui=b
ui+q
ti(p
u+|n
(u)|
−12σ
j∈n(
u)yj
) 根據原作者的實驗,svd++與前兩種演算法相比**的準確率更高,但是並不具備asvd的優勢。用s
k(i)
表示與物品i最為相似的k個物品。 令r
k(i;
u)=r
(u)∩
sk(i
),nk
(i;u
)=n(
u)∩s
k(i)
**公式為: r^
ui=μ
+bu+
bi+|
rk(i
;u)|
−0.5σj
∈rk(
i;u)
(ruj
−buj
)wij
+|nk
(i;u
)|−0.5σj
∈nk(
i;u)
cij
我們把svd++和鄰居模型的**公式結合起來: r^
ui=μ
+bu+
bi+q
ti(p
u+|n
(u)|
−12σ
j∈n(
u)yj
)+|r
k(i;
u)|−
0.5σj∈
rk(i
;u)(
ruj−
buj)
wij+
|nk(
i;u)
|−0.5σj∈
nk(i
;u)c
ij根據原作者使用netflix提供的資料集進行的實驗,使用這種方式**出來的準確率最高。
引數訓練,使用梯度下降最小化下式: σ(
u,i)
∈k((
rui−
r^ui
)2+λ
1(b2
u+b2
i)+λ
2(||
qi||
2+||
pu||
2+||
yj||
2)+λ
3(σj
∈rk(
i;u)
w2ij
+σj∈
nk(i
;u)c
2ij)
)
SVD在推薦系統中的應用
其實說參考也不準確,準確地說應該是半翻譯半學習筆記。仔細整理一遍,感覺還是收穫很大的。任意乙個m n的矩陣a m行 n列,m n 可以被寫成三個矩陣的乘機 1.u m行m列的列正交矩陣 2.s m n的對角線矩陣,矩陣元素非負 3.v n n的正交矩陣的倒置 即a u s v 注意矩陣v需要倒置 直...
SVD在推薦系統中的應用
其實說參考也不準確,準確地說應該是半翻譯半學習筆記。仔細整理一遍,感覺還是收穫很大的。任意乙個m n的矩陣a m行 n列,m n 可以被寫成三個矩陣的乘積 1.u m行m列的列正交矩陣 2.s m n的對角線矩陣,矩陣元素非負 3.v n n的正交矩陣的倒置 即a u s v 注意矩陣v需要倒置 直...
SVD在推薦系統中的應用
mahout中有svd的推薦策略,今天查了一下資料了解了一下演算法原理,本質上是使用svd方法做特徵降維,然後再計算相似度。下面這篇文章寫的不錯,和大家分享一下。任意乙個m n的矩陣a m行 n列,m n 可以被寫成三個矩陣的乘積 1.u m行m列的列正交矩陣 2.s m n的對角線矩陣,矩陣元素非...