[0030] 步骤5,通过式(6)得到预测第u个用户对第i个项目的评分;
[0031]
[0032] 其中,Wj为第j个用户的权重,sim(u,j,i)为第u个用户与第j个用户基于第i个项目的相似度,Xji为第j个用户对第i个项目的评分。
[0033] 进一步地,所述步骤1中的评分记录包括实际的项目的评分、浏览项目的次数、在包含项目的网页上停留的时间。
[0034] 进一步地,所述步骤24中的
[0035] 与现有技术相比,本发明具有以下技术效果:
[0036] 本发明在不改变现实数据的基础上,充分利用稀疏的现有数据,把用户的活跃程度作为衡量该用户对目标用户预测评分影响力的一个因素,同时考虑用户评分行为的稳定性,越活越、越不稳定的用户影响力越高,反之影响力越低。通过实验证明,本发明的方法可以提高推荐结果的准确性。
附图说明
[0037] 图1为实施例所采用数据集的原始数据示例;
[0038] 图2为实施例所采用数据集的原始数据转换为的用户-项目评分矩阵;
[0039] 图3为实施例运行结果示例;
[0040] 图4为实施例本方法与传统方法的误差对比。
具体实施方式
[0041] 下面通过附图和实施例对本发明作进一步说明。
[0042] 实施例1
[0043] 本实施例提供了基于熵值法的改进协同过滤推荐方法,包括以下步骤:
[0044] 步骤1,将用户对电影的评分记录的原始数据转换为用户-项目评分矩阵。
[0045] 设原始数据中有n个用户,m个电影,则所述的用户-项目评分矩阵为:其中Xij为第i个用户对第j个电影的评分;
[0046] 本实施例选取MovieLens数据集中的数据作为原始数据,如图1所示;本实施例中m为1682,n为943;图1中的原始数据转换为用户-项目评分矩阵后如图2所示。
[0047] 步骤2,在用户-项目评分矩阵中,利用熵值法计算每个用户的权重,包括以下步骤:
[0048] 步骤21,将用户-项目评分矩阵转置得到项目-用户评分矩阵;
[0049] 所述项目-用户评分矩阵为: 其中Aij为第j个用户对第i个电影的评分;
[0050] 步骤22,通过式(1)将A中的评分转换到[0,1]区间;
[0051]
[0052] 其中,i=1,2,…,1682;j=1,2,…,943;
[0053] 步骤23,通过式(2)得到第j个用户对第i个电影评分占该用户总评分的权重Pij;
[0054]
[0055] 步骤24,通过式(3)得到第j个用户的权重;
[0056]
[0057] 其中,j=1,2,…,943;
[0058] gj为第j个用户的熵值冗余度:gj=1-ej;
[0059] ej为第j个用户的熵值: 其中k>0,ln为自然对数,ej≥0;本实施例中, 则0≤ej≤1;
[0060] 步骤3,设第i个电影为目标电影,通过式(4)得到第j个电影与目标电影i的相似度,j=1,2…,1682;
[0061]
[0062] 其中,sim(i,j)为目标电影i与第j个电影的相似度,Uij为同时评论过目标电影i与第j个电影的所有用户集合,Xpi为第p个用户对目标电影i的评分, 为第p个用户评价的所有电影的评分平均值,p∈Uij;
[0063] 选择与目标电影i相似度最高的k1个电影作为目标电影i的最近邻居集Ci,1≤k1<1682;
[0064] 步骤4,通过式(5)得到第v个用户与第u个用户的相似度;
[0065]
[0066] 其中,u=1,2,…,n;v=1,2,…,n;u≠v;sim(u,v,i)为第v个用户与第u个用户基于目标电影i的相似度;Ui为第v个用户与第u个用户同时有过评分的电影集与目标电影i的最近邻居集Ci的交集;
[0067] 选择与第u个用户相似度最高的k2个用户作为第u个用户的最近邻居集Uu,1≤k2<943;
[0068] 步骤5,通过式(6)预测第u个用户对目标电影i的评分;
[0069]
[0070] 其中,Wj为第j个用户的权重,sim(u,j,i)为第u个用户与第j个用户基于目标电影i的相似度,Xji为第j个用户对目标电影i的评分。
[0071] 本实施例中预测的目标用户对目标电影的评分如图3所示。
[0072] 实验结果:
[0073] 为了证明本发明方法的性能,本实施例中选取MovieLens中的ua.test文件作为测试集,其中该文件包含943个用户对1682部电影的评分记录,每个用户有10条评分记录,数据格式与图1相同,选用Matlab R2014a作为实验平台进行了实验。部分运行结果如图3所示,该图显示了某给定目标用户对目标电影的预测评分与实际评分,由图可见本方法预测的评分与真实评分十分接近。
[0074] 同时,为了证明本发明方法的优越性,利用平均绝对误差(MAE)指标分别对本方法与传统的基于用户的协同过滤方法进行了评测,其中MAE是常用的衡量算法性能的评测指标,计算公式如下:
[0075]
[0076] 其中,T为测试集合,pui为用户u对电影i的预测评分,在该实施例中即为score(u,i),qui为用户u对电影i的实际评分,|T|为测试集中的评分记录数,本实施例中为9430。两种方法的MAE值如图4所示,该图显示了不同数目用户近邻情况下本方法与传统的基于用户的协同过滤方法的测试误差,由此可见:本方法相较于传统的基于用户的协同过滤方法,预测误差有了很大的降低。