您的当前位置:首页正文

基于用户部分特征的协同过滤算法

2024-01-02 来源:一二三四网
计算机系统应用 http:llwww.c—s—a.org。cn 2017年第26卷第3期 基于用户部分特征的协同过滤算法① 李永超,罗军 (国防科技大学计算机学院,长沙410073) 摘要:协同过滤算法作为推荐系统中应用最广泛的算法之一,在大数据环境下面临严重的数据稀疏问题,使得 近邻选择的效果不佳,直接影响了算法的推荐性能.为了解决这一问题,本文提出了一种基于用户部分特征的协 同过滤算法(UPCF),该算法首先基于评分偏差和项目流行度进行矩阵缺失值填充,随后利用初始聚类中心优化 的K.means算法对该填充矩阵进行项目聚类,并利用用户在项目分类下的局部特征进行近邻集合构建,最终采用 基于用户的协同过滤算法获得推荐.我们采用流行的MAE指标对算法在MovieLens数据集上进行评测.实验表 明,与目前流行的协同过滤算法相比,提出的UPCF算法在没有增加算法复杂性的前提下,性能有近10%的提升. 关键词:项目流行度;最近邻选择;项目聚类;协同过滤算法 Collaborative Filtering Algorithm Based on User Partial Feature LI Yong—Chao,LUO Jun (Department of Computer Science,National University of Defense Technology,Changsha 4 1 0073,China) Abstract:As one of the most widely used algorithms in recommender system,the traditional collaborative filtering algorithm faces serious data sparseness problem in the big data trend,which leads to the ineffective in nearest neighbor selection,and restricts the performance of the algorithm.To address this problem,this paper proposes a collaborative ifltering algorithm based on user partial feature(UPCF).In our method,it first rates the missing values based on rating bias and item populariy;and tthen clusters the items in the filled matrix with a K-means clustering algorithm of meliorated initial center.At last,it uses the user-based collaborative filtering algorithm with the user feature in item class to get the recommendations.The MAE measures on the MovieLens dataset shows that compared with the current popular algorithms,the performance of our UPCF algorithm improves about 1 0%without any increase of algorithm complexity. Key words:item populariy;neartest neighbor selection;item clustering;collaborative ilftering algorithm 1 引言 随着互联网的兴起,互联网上的信息呈指数化增 荐系统.推荐技术在新闻领域更是产生了“今日头条” 这样的不生产内容,仅依靠推荐引擎便拥有3.5亿注 册用户,3500万活跃用户的新兴科技媒体. 协同过滤作为推荐系统的主流技术之一,主要包 括基于用户的协同过滤推荐、基于项目的协同过滤推 荐和基于矩阵分解的协同过滤推荐【2 J.而其中基于用 户的协同过滤算法是目前在实际应用中最为成功的算 法.该算法首先通过用户间的共同评分项计算用户间 长,人类进入了信息爆炸的大数据时代.如何从浩瀚 的数据信息中获取自己感兴趣的信息,己成为人类面 临的巨大难题.于是无需用户提供明确需求,仅通过 用户历史行为主动帮助用户快速有效筛选信息的推荐 系统应运而生【1].我们在互联网网站中看到的“猜你喜 欢”,“大家都在看”,“看过的也看”,“你可能会感兴趣” 等都是推荐技术的实际应用.据报道,早在2002年, 在线购物企业Amazon总销售额的20%便源自它的推 的相似度,然后根据用户间的相似度选择目标用户的 近邻集合,最后根据用户近邻集合对目标用户进行推 ①收稿时间:2016.07 01;收到修改稿时间:2016-08-31[doi:10 15888/j.cnki.csa.005704] 204软件技术・算法Software Technique・Algorithm 2017年第26卷第3期 http:Nwww.c・S—a.org.cn 计算机系统应用 荐.最近邻选择作为该算法中最关键的步骤,直接决 其中的元素 表示U中第i个用户对 中第u,个项目 的评分.基于用户的协同过滤算法主要包括以下三个 步骤. 2.1评分矩阵预处理 定了推荐的质量.然而在实际应用中由于数据集中项 目的维度巨大,大多数用户只会对极少数的项目进行 评价,从而导致用户评分数据的极端稀疏,不同用户问 的共同评分项极少,用户间相似性计算的可靠性和准 确性难以得到保证,推荐算法的效果大打折扣. 为了解决稀疏性问题,多种措施相继被提出. 由于在实际应用中,项目集,的维数n很大,用户 只能对极少数项目进行评价,因此评分矩阵十分稀疏, 这对后面的相似性计算提出了很大的挑战.合理的矩 Ungar LH等[3】首次提出基于用户聚类的协同过滤算法 (UBCF),通过用户聚类来降低最近邻搜索的数据规模, 阵缺失值预测填充可以从一定程度上缓解稀疏性问 题. 增加最近邻可靠性.黄裕洋等[4J根据评分数据的稀疏 性情况,提出了一种动态计算相似性的方法(HCFR). Xavier Amatriaint 】等提出在提前构建的专家集合中寻 找用户近邻集合,以确保用户的近邻对待预测项目有 过评分记录.黄创光等【6】提出了一种不确定近邻的协 同过滤推荐算法(UNCF).该算法通过不确定近邻因子 及调和参数去计算基于用户和产品的预测评分并产生 推荐.Koren yt 通过将矩阵分解和最近邻算法相结合, 大大提高了算法的推荐性能. 以上方法虽然从一定程度上减弱了数据稀疏对近 邻选择带来的影响,提高了协同过滤的推荐质量和效 率,但在最近邻计算的过程中,对用户的相似性计算 仍基于全局相似性。没有充分考虑用户在不同项目类 别下的兴趣差异.正如世上没有完全相同的两片树叶 一样,在各个方面兴趣都相似的用户也难以寻找.大 多用户可能只在某个领域内兴趣相仿,在其他领域内 可能兴趣完全相悖.因此本文提出了一种基于用户部 分特征的协同过滤算法UPCF,该算法首先对填充矩 阵进行项目聚类,然后仅根据用户在该项目分类下的 所有评价进行相似度矩阵构建,降低数据维度的同时 提升了最近邻计算的可靠性,最后根据相似性矩阵进 行近邻集合构建,从而最终得到推荐结果. 2问题定义及基本方法 基于用户的协同过滤算法基于以下假设:如果用 户之间对一些项目的评分比较相似。则他们对其它项 目的评分也将会比较相似.协同过滤推荐系统首先搜 索目标用户的若干近邻。然后根据最近邻对项目的评 分去预测目标用户对项目的评分,从而产生推荐列表. 作为算法的输入,数据源D=(UAR),其中己 {“J,“2,…, U }是基本用户的集合,I = ;I={il, ,…,in)是项目集 合,I卅= .m 阶矩阵 是用户对各项目的评分矩阵, 目前常用的缺失值预测方法包括评分中值、众数、 用户评分均值、项目评分均值、采用奇异值分解填补 近邻评分缺失值 以及基于近似项目预测评分值【 】等. 2.2用户近邻集合构建 接下来,我们在预处理过的用户评分矩阵上采用 相似度计算方法,计算用户之间的相似度,形成用户 的相似度矩阵.协同过滤算法研究中最常用的相似度 计算方法是相关相似度、余弦相似度和修正的余弦相 似度,它们的计算公式分别如下: 相关相似度: ∑f,hr一 吖 一 sim(u, = 竺=√ 一_===二=u/) _√_ ==  f, 一 (1) 余弦相似度: L●rlui ̄lvu rvil sim cos 意 修正的余弦相似度: ∑rh —R } —R , sim(u, =—==i ̄二luv====_=======- (3) √ rrui- √ rrvi- 各公式中u,v表示用户“、v.r 表示用户“对项目 i的评分, 表示用户U的平均评分,厶、,v表示用户 U、v已经评价过的项目集合, 表示用户U和用户v 的共同评分项目集合. 相似矩阵构建结束后,便可根据用户指定的最近 邻筛选规则构建近邻集合,常用的筛选规则包括指定 近邻数量和设置相似度阈值. 2.3物品推荐 利用上一步计算得到的近邻集合,找到这个集合 中的用户喜欢且目标用户没有听说过的物品推荐给用 户.具体而言,我们利用公式(4)计算用户对指定项目 Software Technique・Algorithm软件技术・算法205 计算机系统应用 http://www.c-S—a.org.cn 2017年第26卷第3期 的预测评分. 3.2项目聚类 ∑sim(u,V)・(rv/ ̄K'v) 生 缺失数据处理过后,我们便可对项目进行聚类, 本次我们采用聚类算法中最经典的K—means算法进行 项目聚类.而传统的K.means算法对初始聚类中心非 其中 为用户U的最近邻集合,sim(u, 为用户U、v 常敏感,聚类结果随不同的初始输入而有较大波动. 为消除这种敏感性,本文采用袁方等提出的优化初始 的相似度,其余符号与前面定义一致.最终便得到了 用户U关于项目i的预测评分 . 聚类中心的改进K.means算法【 】进行聚类计算.与传 统聚类算法不同的是,该算法在选取初始聚类中心时 3 基于用户部分特征的协同过滤算法ruPCF) 计算每个数据对象所在区域的密度,选择相互距离最 传统的基于用户的协同过滤算法在计算最近邻的 过程中使用了用户的所有评分记录.考察了用户的全 局相似性.然而在全部项目集上兴趣都相似的用户并 不常见,大多用户可能只在某一主题下兴趣相似,而 在其余项目分类中喜好完全不同.因此传统的近邻集 合构建往往选择了全局相对相似而舍弃了在某些领域 内兴趣高度契合的用户.为了解决这个问题,本文提 出了一种基于用户部分特征的协同过滤算法,使得在 最近邻选择时所需的相似度仅根据用户在该项目所在 类内的评价信息计算获得.算法详细流程如下所示. 3.1未评分项目预测填充 为了缓解在项目聚类时矩阵的稀疏问题,我们首 先对评分矩阵进行缺失值预测填充.考虑到热门项目 对用户特征贡献度不大,以及相对冷门项目而言,用 户接触到热门项目的概率大得多,而如果用户未对热 门项目进行反馈评价,很可能是因为用户对该项目并 不感兴趣.而在推荐系统中,项目流行度是衡量项目 热门程度的主要指标,它是指项目被用户反馈的总次 数,被反馈的次数越多代表项目流行度越高.因此为 了能够从一定程度上合理惩罚未评分热门项目,我们 引入了项目流行度权重系数W,在此次试验中,我们 采用以下公式计算项目流行度,其中 f)表示项目f已 被评分的总次数. W=1/(1og(1+ (f))) (5) 项目被评分总次数 f)越大则对应权重W越小, 预测评分则会相应降低.最终我们采用如下方法进行 缺失值预测填充. ~rui=R+bu+bi W (6) 其中 表示对rui的预测填充值, 表示数据集中所 有用户的评分均值, 表示用户U与用户评分均值的评 分偏差,bi表示项目f与用户评分均值的评分偏差,W表 示项目流行度权重系数. 206软件技术・算法Software Technique・Algorithm 远的k个处于高密度区域的点作为初始聚类中心.实 验表明改进后的K.means算法能产生质量较高的聚类 结果,并且消除了对初始输入的敏感性. 过程1.基于项目的kmeans聚类 输入:聚类数目k,最大迭代次数iter num和用户评 分数据填充矩阵 输出:k个聚类 11计算以项目集 中每个项目f 为中心,包含常 数Minpts个数据对象的半径,记为f,的密度参数 . 越大,说明数据对象所处区域的数据密度越低.反 之则说明数据对象所处区域的数据密度越高.选取 满足 c max的点f 为高密度区域D.取D中处于最 高密度区域的点作为第1个聚类中心rf;取J[)中距离 rI最远的点作第2个聚类中心 ;计算D中各数据对 象 到r/,re的距离 f『,,,)J f『 ,),r3为满足 max(min(d(ij,r1), ij )) =J,2…n的数据对象ij;rm为 满足max(min(d(ij,r1),d(ij,r2)…a(ij,t"m. √=J,2…,z的 数据对象ij,6 ̄D.依此得到k个初始聚类中心.记为 集合centerotd={r,,…, }; 2)k个聚类簇cluster ,…clusterk均初始化为空, 记为集合Cluster=(cluster 一clusterk) 31REPEAT FOR eachitemfin,: FOR each center nin centerotd: 计算项目f和聚类中心 的相似性sim0, ; sim(i,rm)=max(sim(i,r1),sim(i,r2),…,sim(i, )) cluster =cluster u i Endfor Foreach clus in Cluster: 计算cluster,.的均值,生成新的聚类中心Cn . Centernew={cnewI.c ew2.….Cnewk} Endfor 2017年第26卷第3期 http:/1www.c-S-a.org.cn 计算机系统应用 UTILCenterota=(c,,…cD和Centern。 =(cJ,…ck)相同或 达到最大迭代次数iter num. 41返回Cluster. 该实验数据集共包含930个用户对1682部电影的 100000条评价信息,其中每个用户至少对20部电影进 行了评分,每个电影也都收到了用户评论.该数据集 的稀疏性为1.100000/(943*1682)=0.937.数据集中用 算法的复杂性为O(iter num k m¥,z).最终 我们便得到了聚类后的项目. 3-3推荐生成 为了保证预测的精确性,避免提前引入误差,我 户评分范围是1-5,数值越大代表用户对该电影的兴 趣越大.本次实验按照80%和20%的比例随机的将数 据集划分成为训练集和测试集,随后进行5.折交叉实 验,取五次试验的平均值作为最终结果. 4.2评价标准 平均绝对误差MAE(mean absolute error)是目前学 们在评分预测阶段采用原始用户评价矩阵而非填充矩 阵.并使用公式(1)计算待推荐用户在待推荐项目所在 类内与其余用户的相似度,构建用户相似性矩阵.查 找与用户相似度最大的n个最近邻.使用公式(4)计算 用户预测评分,得到最终评分预测值,算法过程如下. 过程2.评分预测 输入:原始用户评价矩阵 ,最近邻个数n,待预测 评分用户u,项目i,项目i所在聚类簇 clusterF[i#, ‘,纠. 输出:评分预测值 1)simDict={} 21Foruservin IF v!---u: simDict[v]=sim(u, Endif Endfor 3) sort(simDict)[:n] ∑sim(u,1,)・ ) 4 业俪 其中,此处U,V的特征向量为“=(rui,, 。,…, ), (m, ,…,rv@).sim(u, 我们采用公式(1)所提供的 相关相似性计算.算法的复杂度为O(m n/k).至此, 我们便可获得指定用户对指定项目的评分预测值,为 随后的推荐提供支持. 4实验结果及分析 本次实验的硬件平台是配置Intel pentium E58003.2 GHz CPU,4G RAM,操作系统为ubuntu l4.O4的个人计算机,所有程序均由python实现. 4.1数据集 本文采用的实验数据集是目前衡量推荐算法质量 常用的著名电影评分数据集MovieLens中的100k数据 集(http://grouplens.org/datasets/movielens),该数据集由 美国明尼苏达大学GroupLens研究小组创建并维护. 术研究中应用广泛的推荐系统推荐质量评价标准.其 主要通过公式(7)计算测试集中用户实际评分和推荐算 法根据训练集的训练预测值的差的绝对值均值,平均 绝对误差MAE越小,推荐算法的质量越高.其中Ⅳ表 示测试集的数据个数,P 为预测评分值, 为测试集中 的实际评分值. N Zip—nl MA层 (7) 4I3实验结果分析 我们首先研究聚类个数对本文算法性能的影响. 实验结果如图1所示,其中横坐标表示聚类个数,纵 坐标表示MAE值,最近邻个数统一取n=30. 0 66 ● 0,65 ; 爱 0.64 l 0.63 \... . . 0 62 1O 2O 3O 40 5O 60 聚类个数 图1聚类个数对MAE值的影响 通过图1我们可以清晰看到刚开始,随着聚类族 数的增多,算法性能不断提升,当项目聚类个数为50 时,算法取得了最好的性能,此后聚类族数的增多反 而引起算法性能的下降.接下来。我们通过将本文所 提出算法UPCF与传统的基于用户聚类的协同过滤算 法(UBCF)t引、综合用户和项目因素的协同过滤推荐算 法fHCFR)t训、基与不确定近邻的协同过滤算法 (UNCF)t6J的平均绝对误差MAE进行对比观测试验性 Software Technique・Algorithm软件技术・算法207 计算机系统应用 http:llww ̄.e—s-a.org.ca 2017年第26卷第3期 能.为了缩短算法的运行时间,聚类个数均设置为20 法K.means的聚类效果仍不是十分理想.此外,在此 由图2可以看出,本文算法与其他算法在MAE值 上有了10%左右的提高,特别是当近邻个数比较少的 时候,本文算法体现了非常好的推荐效果,性能优势 明显更好,这充分说明本文提出算法最近邻选择的高 效合理性.我们也可以观察到,当最近邻个数达到一 定数量后,所有算法的MAE性能趋于平稳,这也反映 出当近邻相似度不断减小时,该近邻对算法的性能提 升没有显著的影响. 此外,本文算法在提高推荐质量的同时并没有带 来算法复杂性的提升.数据的预填充和项目聚类均可 提前离线完成,仅需根据需求隔一段时问更新.而评 分预测由于不再依赖用户全局特征,单个评分预测的 复杂性由o(m )变为o(m n/尼1,其中m表示用户 总个数,以表示项目总个数,k表示项目聚类个数.用户 还可根据实际需求,并行的在各个项目类内进行用户 评分预测. 5 总结 针对传统协同过滤算法中最近邻计算时所面临的 稀疏性和准确性挑战,本文提出了一种基于用户部分 特征的协同过滤算法.该算法采用基于评分偏差与项 目流行度的思想进行缺失值填充,并在最近邻构建时 仅考虑用户在该项目分类下的特征,动态的根据待预 测项目筛选用户最近邻,从而提高了推荐的质量.此 外,由于仅需考虑用户类内特征,该算法实现了一定 程度的降维,降低了算法的复杂性.并可根据需要, 分布并发的计算各个类内用户的预测评分值,一定程 度上提高了算法的实时性. 但算法中项目分类以及用户最近邻选择时特征选 择的准确性仍需要进一步研究改良,所使用的聚类算 208软件技术・算法Software Technique・Algorithm 次研究前期对推荐算法的了解中,我们发现目前针对 各种推荐算法模型的融合以及算法并行化的研究也成 为业界的新热点.而能够更好地反应用户兴趣的用户 社交关系的引入[10,11]大大提高了协同过滤算法的近邻 可靠性和准确性,为算法的改良提供了新的方向.如 何将用户社交关系引入本文提出的算法,进一步改善 本文算法的性能,将是下一阶段研究的重点. 参考文献 1 Park DH,Kim HK,Choi IV,Kim JK.A literature review and classification of recommender systems research.Expe ̄ Systems withApplications,2012,39(11):10059—10072. 2 Bobadilla J,O ̄ega Hemando A,Gutirrrez A. Recommender system survey.Knowledge—Based Systems. 2013,46:109-132. 3 Ungar LH,Foster DE Clustering methods for collaborative ifltering.AAAI Workshop on Recommendation Systems. 1998,1:114-129. 4黄裕洋,金远平.一种综合用户和项目因素的协同过滤推荐 算法.东南大学学报(自然科学版),2010,40(5):917-921. 5 Amatriain X,Lathia N,pujol JM,Kwak H,Oliver N.The wisdom of the few:A collaborative filtering approach based on expe ̄opinions from the web.Proc.of the 32nd International ACM SIGIR Conference on Research and Development in Information Retireva1.ACM.2009. 532-539. 6黄创光,印鉴,汪静,刘玉葆,王甲海.小确定近邻的协同过滤 推荐算法.计算机学报,2010,33(8):1369—1377. 7 Koren Y Factorization meets the neighborhood:A multifaceted collaborative filtering mode1.Proc.of the 14th ACM SIGKDD Intemational Conference on Knowledge Discovery and Data Mining.2008.42 434. 8邓爱林,朱扬勇,施伯乐.基于项目评分预测的协同过滤推荐 算法.软件学报,2003,l4(9):1621—1628. 9袁方,周志勇,宋鑫.初始聚类中心优化的K.means算法.计算 机工程,2007,33(3):65-66. 1 0 Daly EM.Geyer W Effective event discovery:Using cation and social information for scoping event recommendmions. Proc.of the 5th ACM Conference on Recommender Systems.ACM.20 1 1.277-280. 1 1 Guy I.Social recommender systems.Recommender Systems Handbook.Springer US.2015:51 1-543. 

因篇幅问题不能全部显示,请点此查看更多更全内容