1、 基于项目属性和云填充的协同过滤推荐算法摘要:传统协同过滤推荐算法中经常因用户评分矩阵极端稀疏而导致相似性度量方法不准,推荐质量不高,针对这一问题,提出一种基于项目属性和云填充的协同过滤推荐算法。利用云模型对用户评分矩阵进行填充,在填充矩阵基础上,利用传统的相似性计算方法得到项目之间的评分相似性,同时结合项目属性,计算项目的属性相似性,通过加权因子得到项目的最终相似性,从而形成一种新的相似性度量方法。实验结果表明, 提出的算法可有效解决传统方法中由于数据稀疏所导致的相似性度量不准确的问题, 并显著地提高了算法的推荐精度。关键词:协同过滤;稀疏数据;云填充;评分相似性;属性相似性;相似性度量co
2、llaborative filtering recommendation algorithmbased on item attribute and cloud model filling英文作者名 sun jin-gang*, ai li-rong英文地址(school of computer science and technology, northwestern polytechnical university, xi an shaanxi 710129, china)abstract: the user rating data in traditional collaborative f
3、iltering recommendation algorithm are extremely sparse, which results in bad similarity measurement and poor recommendation quality. in view of this problem, this paper presented an improved collaborative filtering algorithm, which was based on item attribute and cloud model filling. the algorithm p
4、roposed a new similarity measurement method, using the data filling based on cloud model and the similarity of the item s attributes. the new method computed the rating similarity by using the traditional similarity measurement on the basis of the filling matrix and computed the attributing similari
5、ty by using item s attributes, then got the last similarity by using weighting factor. the experimental results show that this method can efficiently solve the problem of similarity measurement inaccuracy caused by the extreme sparsity of user rating data, and provide better recommendation results t
6、han traditional collaborative filtering algorithms.key words: collaborative filtering; sparse data; cloud model filling; rating similarity; attributing similarity; similarity measure0 引言internet 技术的应用普及和现代电子商务的迅猛发展使得互联网中的资源数量呈指数增长态势,从而出现了所谓的“信息爆炸”和“信息过载”现象,推荐系统1作为一种信息过滤的重要手段, 是当前解决上述问题的有效方法之一。目前,几乎所
7、有大型的电子商务系统,如淘宝、当当、amazon、ebay 等都不同程度地使用了各种形式的推荐系统。随着推荐系统规模的扩大,用户评分数据出现极端稀疏性2,导致算法的推荐质量降低。为了解决稀疏性问题,一些学者提出了算法改进措施:文献3提出基于云模型的相似度计算方法,利用云模型在定性知识表示以及定性、定量知识转换时的桥梁作用,提出一种在知识层面比较用户相似度的方法。文献4提出一种基于项目评分预测的协同过滤推荐技术,通过估计用户评分的办法补充用户项目评分矩阵,减小数据稀疏性对计算结果的负面影响。文献5通过奇异值分解(singular value decomposition, svd)算法估计未评分项
8、目的评分,并在稠密矩阵上计算用户间的相关相似度。文献6提出了一种基于云模型数据填充的推荐方法,通过云模型预测未评价的项目,进而根据填充了的用户项目评分矩阵计算用户相似性。然而,以上算法均没有考虑项目中属性之间的关联,忽略了项目本身的属性相似性,在一定程度上影响了算法的效能。本文提出一种基于项目属性和云模型数据填充方法, 利用项目本身属性计算属性相似性,利用云模型数据填充技术对稀疏矩阵进行填充,在稠密矩阵上计算项目评分相似性,通过动态加权得到新的项目相似性,最后在推荐过程中结合基于项目推荐算法生成推荐。1 传统的基于项目的协同过滤算法及分析传统的基于项目的协同过滤推荐系统7利用传统的相似性计算方
9、法计算所有项目与目标项目的相似性,取前 k 个相似性最大的作为目标项目的最近邻居集,由于当前用户对最近邻居的评分与对目标项的评分比较类似,所以可以根据当前用户对最近邻居的评分预测当前用户对目标项的评分,然后选择预测评分最高的前若干项作为推荐结果反馈给用户。1.1 数据表示推荐系统中存储的用户评分数据中一般包含用户 id,项目 id 和用户对项目的评分等信息。假定有 m 个用户和 n 个项目,分别表示为用户集合 u = u1,u2,um, 项目集合 i = i1,i2,in。用户评分数据可以采用一个 mn 阶的用户项目评分矩阵 rm,n 来表示,矩阵的每个元素就是用户对项目的评分,反映了用户对项
10、目感兴趣的程度。评分可以用 1/0 表示喜欢/不喜欢;也可以用不同的数字表示评分的级别,数字越大表明级别越高,说明用户越喜欢(本文即用这种评分) 。1.2 相似性计算传统的相似性度量1,8方法主要有余弦相似性、相关相似性和修正的余弦相似性 3 种。1)余弦相似性。两个项目被看作 m 维项目空间上的向量,项目间的相似性通过向量间的余弦夹角来度量。sim(i, j)=cos(,)=(1)其中“”表示两个向量之间的点积。式中分子为两个项目评分向量的内积,分母为两个项目向量模的乘积,夹角越小,相似度越高。2)相关相似性。对于基于项目的协同过滤算法,相关相似性是通过计算两个项目之间共同评分项的距离来实现
11、的。sim(i, j)=uu(i, j)(ru,i-ri)(ru, j-rj)uu(i, j)(ru,i-ri)2uu(i, j)(ru, j-rj)2(2)其中:u(i, j)表示对项目 i 和项目 j 都评过分的用户集合,ru,i、ru, j 表示用户 u 对项目 i 和项目 j 的评分,ri 和 rj 分别表示对项目 i 和项目 j 的平均评分。3)修正的余弦相似性。由于在余弦相似性度量方法中没有考虑不同用户的评分尺度问题,修正的余弦相似性度量方法通过减去用户对所有项目的平均评分来改善上述缺陷。sim(i, j)=uu(i, j)(ru,i-ri)(ru, j-rj)uu(i)(ru,i
12、-ri)2uu(j)(ru, j-rj)2(3)其中:u(i, j)表示对项目 i 和项目 j 都有评分的用户集合,u(i) 和 u(j)分别表示对项目 i 和项目 j 评分过的用户集合。第 3 期 孙金刚等:基于项目属性和云填充的协同过滤推荐算法计算机应用 第 32 卷 1.3 生成推荐在利用 1.2 节中任一公式计算目标项目与其他项目相似性,得到目标项目最近邻居集的基础上,可按式(4)预测出目标用户对未评分项目的评分。pu,i=ri+js(i)sim(i, j)(ru, j-rj)js(i)(|sim(i, j)|)(4)其中:pu,i 表示目标用户 u 对未评分项目 i 的预测评分;ri
13、 表示目标项目 i 获得的平均评分;rj 表示邻近项目 j 的平均评分;s(i)表示目标项目 i 的邻近项目集合,|s(i)|=k。通过上述方法预测用户对所有未评分项的评分,然后选择预测评分最高的前若干项作为推荐结果反馈给当前用户。1.4 算法分析1)用户评分矩阵的极端稀疏性导致相似度量不够准确,严重影响了推荐精度。2)没有考虑到项目本身的属性相似性,利用用户评分数据计算的相似性可能不准确。如表 1 所示,i1 到 i6 代表 6 部电影,其中i1、i3、i6 为生活片,i2、i4、i5 为动作片,现要预测用户 u7 对i6 的评分。根据式(2)、(4)可得 i6 的邻居项为 i2、i4、i5
14、,u7对 i6 的预测评分为 1,即不喜欢 i6,但分析 u7 对其他电影的评分可以看到,u7 对生活片的评分均为 5,对动作片的评分均为 1,由此可判断 u7 喜欢生活片,不喜欢动作片,故对 i6 应该打高分,但通过公式得到的计算结果却与实际不符。【:表 1 中的问号对吗?表格(有表名)表 1 用户评分实例预测用户i1i2i3i4i5i6u1333323u2122333u3454455u4553355u5211121u6141111u751511?2 改进的算法及其分析2.1 云模型云模型9-10表达的概念的整体特征用期望 ex、熵 en、超熵 he这 3 个数字特征来表示,记作 c(ex,
15、en,he), 称为云的特征向量。在云模型中,云由多个云滴组成,每个用户的所有评分集合被视为一朵“云”,每个评分被视为一个“云滴”,可以通过逆向云算法实现每朵云从定量值到云的特征向量的转换,计算如下:2.2 基于云模型填充的协同过滤推荐算法基于云模型填充的协同过滤推荐算法6-11的基本思想是利用逆向云算法计算项目之间的相似性,根据式(4)对用户评分矩阵进行填充,在填充矩阵的基础上,根据式(2)、(4)生成推荐。该算法通过填充的方法降低了用户评分矩阵的稀疏性,提高了推荐精度,但是并未考虑到项目本身的属性相似性。2.3 项目的属性相似性一般来说,推荐系统至少存在 3 个基本数据表,一个用来记录用户
16、信息,一个用来记录项目信息,还有一个记录用户评分信息。传统的协同过滤算法是通过评分信息表计算项目相似性,而项目的属性相似性则是利用项目信息表(见表 2)进行计算的。表格(有表名)表 2 项目信息表项目attr1attr2attrtitem1101item2011itemn110 设项目 i 和项目 j 所拥有的属性分别表示为集合 ui 和集合 uj,则 i和 j 的属性相似性计算如下:simattr(i, j)=|uiuj|uiuj|(9)其中:|uiuj|表示项目 i 和 j 所拥有属性集合的交集的元素个数,|uiuj|表示项目 i 和 j 所拥有属性集合的并集的元素个数12。2.4 改进的
17、基于项目属性和云填充的协同过滤算法改进的基于项目属性和云填充的协同过滤算法的基本思想是:利用用户评分矩阵和逆向云算法计算项目 i 和项目 j 的相似性,此时将每个项目所获得的所有评分集合视为一朵“云”,每个评分被视为一个“云滴” 。得到项目 i 和 j 的相似性后,利用式(4)对稀疏的用户评分矩阵进行填充,采用对项目评分项并集填充的方式4,即对于项目 i 和 j,对项目 i 评过分的用户集合为 ui,对项目 j 评过分的用户集合为 uj,只填充 ui j= uiuj 中没有对项目 i 或 j 评分的用户的评分,而不考虑均未对项目 i 和 j 评分的用户。在填充矩阵的基础上利用式(2)计算项目
18、i 和 j 的评分相似性 simrate(i, j),同时根据式(9)计算项目 i 和 j 的属性相似性 simattr(i, j),采用式(10)计算项目 i 和 j 的最终相似性 sim(i, j)13,最后再次利用式(4)产生推荐。sim(i, j)=simattr(i, j)+(1-)simrate(i, j)(10)其中: 为加权因子,可动态调整。具体步骤如下:输入用户评分矩阵 rm,n,最近邻项目数 k,加权因子 。输出用户的 top-n 推荐集。步骤如下:1)利用逆向云算法即式(5)(7)计算每个项目的特征向量,并利用式(8)计算项目之间的相似性;2)利用式(4),采用对项目评分
19、项并集的方式对用户评分矩阵进行填充;3)对于填充矩阵,利用式(2)计算项目 i 和 j 的评分相似性simrate(i, j);4)利用式(9)计算项目 i 和 j 的属性相似性 simattr(i, j);5)利用式(10)计算项目 i 和 j 的最终相似性 sim(i, j);6)选取 k 个与目标项目相似性最大的项目作为目标项目的最近邻居集;7)利用式(4)得到目标用户对初始矩阵中未评分项目的预测评分,产生 top-n 推荐。算法优势分析:首先,采用填充技术对稀疏矩阵进行填充,在填充矩阵基础上计算项目的评分相似性,大大降低了原有稀疏矩阵的稀疏性,提高了评分相似性的计算精度;其次,采用云模
20、型而非其他填充模型,可以在用户评分整体层面上粗粒度地考虑项目的相似性以及对象类的整体信息, 克服了传统的基于向量的相似度计算方式严格匹配对象属性的不足。再次,考虑了项目本身所具有的属性相似性,通过引入加权因子 ,将其与项目的评分相似性结合,进一步提高了相似性精度。同时,对于用户从未评过分的新项目,在无法计算其与其他项目的评分相似性的情况下,将加权因子 调整为 1,即通过属性相似性来计算相似性,在一定程度上解决了冷启动问题。3 实验结果及其分析实验平台使用 intel core2 duo cpu e8400 3.00ghz,1.96gb内存,【:这里的内存不是 2gb?作者上网不方便。上次作者回
21、复。待三校后再联系。20 日后上网比较方便操作系统为 windows xp,算法使用 c+编写。3.1 数据集本文实验采用 grouplens(http:/movielens.umn.edu)工作组提供的公开数据集,它由 943 个用户对 1682 个电影项目的 1105 条值为 15 的评价数据组成,用户评分数据集的稀疏性为 1-100000/(943*1682)=0.936953。把记录按照 80%和 20%的比例划分为训练集和测试集。3.2 度量标准实验采用平均绝对偏差(mean absolute error, mae)来衡量各相似度方法的度量效果,即通过计算预测的用户评分与实际用户评分
22、之间的偏差来衡量预测的准确性14-15。mae 越小,相似度方法的度量效果越好。假设预测的用户评分集合为p1,p2,pn,对应的实际评分集合为q1,q2,qn,则mae=ni=1|pi-qi|n(11)3.3 实验结果实验中,将最近邻近集取为 50,通过改变 取值来影响 mae 的值,具体过程为:将 值代入式(10),得到相应的最终相似性 sim(i, j),选取 50 个与目标项目相似性最大的项目作为目标项目的最近邻居集,将 sim(i, j)值代入式(4),得到对目标用户的预测评分值,再将预测值代入式(11),得到 mae 值。实验结果如表 3 所示,当最近邻近集 k 取 50 时,=0.
23、15 时对 mae 的贡献最大,故实验中将 取为0.15。表格(有表名)表 3 取值对 mae 的影响maemae0.050.8240.200.8560.100.8170.250.9320.150.8110.301.125当 取值确定后,将改进的算法与传统的基于项目的协同过滤推荐算法、基于云模型的协同过滤推荐算法和利用云模型填充的协同过滤算法进行比较,如图 1 所示。图中 item 表示传统的基于项目的协同过滤推荐算法,cloud 表示基于云模型的协同过滤推荐算法,cloud filling 表示利用云模型填充的协同过滤推荐算法,attribute and cloud filling 表示改进的基于项目属性和云填充的协同过滤推荐算法,最近邻居从 5 个递增到 50 个。通过比较可以看出,改进的基于项目属性和云填充的协同过滤算法比上述 3 种算法具有更好的性能。图片图 1 不同算法 mae 值随最近邻居数变化对比4 结语本文分析了传统的基于项目协同过滤算法及其存在的问题,提出了一种改进的基于项目属性和云填充的协同过滤推