基于非负矩阵分解的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}}}}$ |
|
|
|