APP下载

基于项目属性分类的协同过滤算法研究

2018-08-24吴佳婧贺嘉楠王越群董立岩

吉林大学学报(信息科学版) 2018年4期
关键词:指数函数相似性协同

吴佳婧, 贺嘉楠, 王越群, 董立岩

(1. 哈尔滨工程大学 计算机科学与技术学院, 哈尔滨 150001; 2. 吉林大学 计算机科学与技术学院, 长春 130012)

0 引 言

随着计算机技术的飞速发展, 人类社会已经逐步进入到电子信息时代。电子信息技术虽然改变了人们的生活方式, 提高了人们的工作效率, 但同时也给人们带来了新的问题。随着信息量的飞速增长, 使人们在信息检索过程中很难找到正在需要的信息。推荐系统可以在一定程度上解决信息过载的问题, 因为其实用性, 推荐系统被国内外大多数的电子商务平台所青睐。因此对推荐系统的研究和改进得到了越来越多研究者的关注, 而推荐算法则是推荐系统的核心。根据推荐的生成方式, 推荐算法大致可以分为基于内容的推荐系统以及基于协同过滤的推荐系统。

协同过滤[1]推荐算法主要根据用户或项目的相似度进行推荐, 其首要条件是需要找到目标用户[2]的相似用户或目标用户喜好项目的近邻项目, 进而可以为目标用户推荐其兴趣值较高的未产生评分行为的项目[3,4]。由此可见用户间相似性的计算以及项目间相似性的计算对推荐系统的推荐准确率起到了重要的作用。对于传统的相似性计算[5,6]并没有考虑用户以及项目自身的属性, 仅仅将用户项目评分矩阵[7-9]作为唯一的参考因素。

传统的相似性计算过程中只关注于用户项目评分矩阵, 而忽略了用户或项目本身的属性特征, 笔者将项目自身的属性标签[10]结合到相似性计算公式中, 给出了基于权重调节的矩阵补全协同过滤推荐算法。

1 基于权重调节的矩阵补全协同过滤

1.1 算法思想

项目的标签不只有一种, 可以有很多种类, 对于一部电影而言, 既可以属于喜剧, 也可以属于情感类型, 所以在进行相似度计算时, 需要考虑每个项目的所有标签类别[11,12], 项目的标签重合度与项目的相似性成正比。

如表1所示, 《女儿国》和《前任3》都属于喜剧、 爱情类型, 与《红海行动》类型相比, 这两部电影的类型更为相似, 因此可以断定这两部电影的相似度更高。

表1 基于项目属性的协同过滤推荐算法基本原理

定义1 项目属性值Ii,x表示项目i是否具有属性x。如果项目i具有属性x, 则项目属性值Ii,x的值为1, 如果项目i不具有属性x, 则Ii,x置为0。

定义2Ci,j表示项目i与项目j之间的属性差异度, 即项目i和项目j所具有的不同属性个数。可通过项目i中的每个属性值减去项目j中与之对应的每个属性值获得。计算方法如下

其中n值由项目属性种类个数决定。项目差异度Ci,j的值与项目之间的相同属性标签个数成反比。项目差异度的值越小, 代表两个项目之间相同的属性标签

表2 项目属性统计表

越多, 进而可以推测出两个项目越相似。因此可以得出项目差异度与项目之间的相似性成反比。

项目属性如表2所示, 假设具有A、B、C 3个项目, 并给出S1到S5等5个属性。每个项目都具有其相应的属性值。可以通过项目属性统计表获得项目A、B、C之间的属性差异度。

3个项目之间的项目属性差异度CA,B、CA,C、CB,C可由式(1)计算

CA,B=|1-1|+|0-1|+|1-0|+|1-1|+|0-1|=3

CA,C=|1-1|+|0-1|+|1-1|+|1-1|+|0-0|=1

CB,C=|1-1|+|1-1|+|0-1|+|1-1|+|1-0|=2

由计算可知CA,C

图1 指数函数y=e-x的图像Fig.1 The image of the exponential function

由于项目属性差异度与项目之间的相似性有相关性, 所以将项目属性差异度应用到计算相似度的person相关系数[8]中。由于项目属性差异度的取值均为大于等于0的整数, 所以需要对权值进行修正, 故引入指数函数y=e-x, 由指数函数图像(见图1)可知, 当自变量取值为非负时, 函数的值域区间为0~1。

将项目属性差异度与指数函数相结合, 作为属性差异度的指数函数, 并在计算两个项目的相似度时, 引入属性差异度的指数函数y=e-Ci,j, 并将差异度指数函数融入到person相关系数中, 进行相似度计算的优化。改进后的person相关系数公式如下

1.2 算法流程

步骤1 获得目标用户u的已评分项目集合IRated, 通过与所有项目集进行差运算, 获得目标用户u的未评分但将要进行评分的项目集合IunRated。为目标

表3 项目用户统计表

用户u所推荐的项目将在IunRated中产生, 所以IunRated也是目标项目集合。

步骤2 在评分矩阵中查询对IunRated项目集合中的项目进行评分过的用户集合与对IRated项目集合中的项目进行评分过的用户集合, 二者求并集, 形成用户集合U, 如表3所示。

步骤3 利用

即改进的person相关系数进行相似度计算, 主要计算目标用户的目标项目j(j∈IunRated)与目标用户已评分项目i(i∈IRated)之间的相似度。

步骤4 获得未评分项目j与已评分项目i的相似度后, 进行为评分项目j的评分预测, 评分预测公式如下

Ru,j=Ru,iSsim(i,j)

(4)

所示。通过式(4)可以为目标用户进行未评分项目的评分矩阵补全。

步骤5 通过步骤4获取目标用户的目标项目集中所有项目的预测评分, 将评分按照由大致小的顺序进行排列。

步骤6 从步骤5中的项目集合序列中, 选取TopK个项目作为推荐结果, 推送给目标用户。

2 算法实现

基于权重调节的矩阵补全协同过滤算法。

输入: 用户评分矩阵Rmn, 分类差距矩阵Cnn, 目标用户u, 目标用户未评分项目k。

输出:u对k的预测评分score。

1 ratsimTotal←0

2 simTotal←0

3 fori←1∶n4 if (Rui!=0)//用户u对项目i有评分

5Vi←Ø,Vk←Ø

>6 forj←1∶m

7 if (Rji!=0&&Rjk!=0)//用户j对项目i、 项目k均有评分

8Vi←Vi∪{Rji}

9Vk←Vk∪{Rjk}

10 end if

11 end for

12 similarity←sim(Vi,Vk)·eCki

13 simTotal←simTotal+similarity

14 ratSimTotal←ratSimTotal+similarity*Rui15 end if

16 end for

17 score←ratSimTotal/simTotal

18 return score

3 实验结果与分析

3.1 前期准备

该实验采用的数据集来自MovieLens ml-1M数据集, 由6 040个用户以及3 900个电影组成, 并包含用户对这些电影的评分记录, 每个评分包括用户评分的时间并以Timestamp形式表示, 其中评分是由5个等级构成, 分数越高代表用户对电影的喜爱程度越高。

以上数据记录在3张信息表中, user表记录了用户的信息, movies表记录了电影信息, ratings表记录了评分信息。

3.2 实验结果与分析

实验1 在同一个数据集下, 比较添加了项目属性因素的协同过滤算法与传统协同过滤算法之间平均绝对值偏差MAE[13,14]的值, 测试改进的算法是否在推荐精度上有所提高。结果如图2所示。

实验结果表明, 在传统协同过滤算法中, 考虑项目属性分类因素, 将项目属性差异度指数函数融入到person相关系数中后获得的基于项目的(Item-based)协同过滤算法, 其平均值绝对误差值更小, 由此可以推断, 改进的算法在推荐精度上有较大的提高。

实验2 在同一个数据集下, 比较添加了项目属性因素的协同过滤算法与传统协同过滤算法之间准确率Precision, 测试改进的算法是否在推荐准确率上有所提高, 得到如图3所示的实验结果。

图2 项目属性分类对Item-based 图3 项目属性分类对Item-based 协同过滤MAE的影响 协同过滤命中率的影响 Fig.2 The item properties classified influence Fig.3 The item properties classified influence of Item-based CF on the MAE of Item-based CF on the hit rate

由图3可知, 改进的基于项目推荐的协同过滤算法, 在命中率上有很大的提高, 由原60%的命中率提升到80%。实验结果表明, 结合了项目属性分类的基于项目的(Item-based)协同过滤算法, 可以提高推荐的准确率, 证明改进的算法具有一定的优势。

4 结 语

笔者针对传统的协同过滤算法进行了改进, 在传统的协同过滤算法上, 考虑了项目属性分类的因素。算法改进主要体现在算法的相似度计算上。通过构建项目属性统计表, 对项目评分矩阵进行权重调节, 并将项目属性差异度以指数函数的形式作为改进的person相关系数的计算参数。通过实验证明了改进算法的有效性, 在提升推荐准确度上有很大的突破。

猜你喜欢

指数函数相似性协同
一类上三角算子矩阵的相似性与酉相似性
家校社协同育人 共赢美好未来
幂函数、指数函数、对数函数(2)
幂函数、指数函数、对数函数(1)
蜀道难:车与路的协同进化
幂函数、指数函数、对数函数(1)
幂函数、指数函数、对数函数(2)
浅析当代中西方绘画的相似性
“四化”协同才有出路
三医联动 协同创新