基于非负矩阵分解的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
表 4
Tab.4
输入:较稀疏的用户-项目矩阵 Rm×n);目标用户 u,目标项目 iks 为特征属性个数,steps 为迭代次数,a=0.000 2 为梯度下降常数,b=0.02 用来控制用户特征向量和条目特征向量的比例,用来进行规范化,防止过拟合.
输出:u对itemi的预测评分pu,i
1 for step<steps//迭代次数
2  for i<len(R
3   for j<len(R[i])
4    if R[ij]>0//用户给定评分
5      eij=R[ij]−P[ijQ[ij]
6     for k<ks
7       P[i][k]=P[i][k]+a(2eijQ[k][j]−bP[i][k])
8       Q[k][j]=Q[k][j]+a(2eijP[i][k]−bQ[k][j])
9     end for
10    end if
11   end for
12  end for
13  式(7)
14 end for
15 根据式(8)构建不同用户的相似度矩阵
16  Nu ← TopK(u
17  N=|Nu|
18  ${\rm{de{v}}}_{i,j} = \frac{{\mathop \sum \limits_{{\rm{user}} \in {N_u}} \left( {{R_{ui}} - {R_{uj}}} \right)}}{N}$
19  ${p_{u,i}} = \frac{{\mathop \sum \limits_{j \in {I_u}} {N_{ij}}\left( {{\rm{de{v}}}_{i,j} + {R_{uj}}} \right)}}{{\mathop \sum \nolimits_{j \in {I_u}} {N_{ij}}}}$