基于非负矩阵分解的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 |
|
输入:较稀疏的用户-项目矩阵 R(m×n);目标用户 u,目标项目 i,ks 为特征属性个数,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[i,j]>0//用户给定评分 | 5 eij=R[i,j]−P[i,j]·Q[i,j] | 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}}}}$ |
|
|
|