基于非负矩阵分解的Slope One算法
董立岩,金佳欢,方塬程,王越群,李永丽,孙铭会
Slope One algorithm based on nonnegative matrix factorization
Li-yan DONG,Jia-huan JIN,Yuan-cheng FANG,Yue-qun WANG,Yong-li LI,Ming-hui SUN
表 3
Tab.3
输入:原有的用户-项目评分矩阵
R
(
m
×
n
),
k
s
为特征属性个数,steps为迭代次数,
a
=0.000 2为梯度下降常数,
b
=0.02用来控制用户特征向量和条目特征向量的比例,用来进行规范化,防止过拟合.
输出:较稠密的用户-项目评分矩阵
R
new
(
m
×
n
)
1 for step<steps//迭代次数
2 for
i
<len(
R
)
3 for
j
<len(
R
[
i
])
4 if
R
[
i
,
j
]>0//用户给出了评分
5
e
ij
=
R
[
i
,
j
]−
P
[
i
,
j
]·
Q
[
i
,
j
]
6 for
k
<
k
s
7
P
[
i
][
k
]=
P
[
i
][
k
]+
a
(2
e
ij
·
Q
[
k
][
j
]−
b
·
P
[
i
][
k
])
8
Q
[
k
][
j
]=
Q
[
k
][
j
]+
a
(2
e
ij
·
P
[
i
][
k
]−
b
·
Q
[
k
][
j
])
9 end for
10 end if
11 end for
12 end for
13 式(7)
14 end for
15 sreturn
R
new
(
m
×
n
)