一种基于负反馈的协同过滤推荐系统
2015-12-10蔡宇辰
蔡宇辰
摘要:近年来,越来越多的用户形成了使用博客的习惯,然而由于网络上充斥着浩如烟海的信息,用户很难用传统的信息检索方式快速地找到自己想要的博文,因此博客推荐系统应运而生,它可以为用户提供个性化的推荐服务,因此有效地解决了“信息过载”与“信息迷航”问题。协同过滤是当今博客推荐系统中应用最成功的推荐方法之一,它利用一组用户已知的偏好信息预测另一组用户未知的偏好。在本篇论文中,首先指出了推荐系统所面临的问题,即只利用用户对物品的显式评分或隐式评分为每个用户产生推荐集,但没有在推荐过程中利用负反馈信息。此外,介绍了推荐系统的概念与应用和两种主要的推荐方法:基于内容的方法和协同过滤方法,并且介绍了每个方法的原理以及与他们相关的算法。随后提出了一种基于负反馈的协同过滤推荐算法,并解释了新提出的推荐系统的逻辑结构。用新浪博客的数据集对新方法进行了评估,实验结果表明,新提出的方法比传统的基于用户的协同过滤方法有更好的表现。
关键词:推荐系统;协同过滤;负反馈
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2015)26-0181-02
1绪论
1.1研究意义
推荐系统(Recommendation Systems)就是一项个性化信息过滤技术,它利用用户的偏好信息自动的向用户推荐符合其兴趣特点的信息对象,能够有效地解决“信息超载”带来的一些问题,目前它已经成为各主流互联网站点不可或缺的新一代信息服务形式。
选择合适的推荐算法是个性化推荐系统成功应用的核心和关键,目前流行的推荐方法主要有:基于内容(Content-based)的推荐,协同过滤(Collaborative Filtering)推荐和混合推荐技术(Hybrid Recommendation)等。其中协同过滤是目前推荐领域应用最广泛和最成功的技术,也是当今推荐算法中研究热点。
本文针对协同过滤算法的推荐精度问题,结合机器学习相关领域的知识,提出一种将用户行为的负反馈信息引入推荐系统的新方法,以便提升推荐结果的准确率。
1.2研究内容
在目前新浪博客推荐系统中,用户未点击的推荐列表中的博文信息没有加入到推荐系统中,而只使用用户点击的推荐博文列表中的博文信息做推荐。这样的做法存在两个问题:1)认为用户未点击的博文与用户的兴趣偏好没有联系,然而事实并非如此,在用户未点击的博文中亦会存在用户感兴趣的博文。假设用户A对“美食”题材的博文感兴趣,而博文推荐列表中有10篇关于美食题材的博文,在大多数情况下,用户是不会浏览者全部的十篇博文的,而只会浏览其中的一篇或几篇,因此未浏览的博文仍然存在着用户感兴趣的信息。2)忽略用户间的偏好差异。假设用户A的推荐列表上有两篇推荐博文a和b,用户B的推荐列表上有推荐博文a和c,当果用户A和用户B都只点击了博文a时(两位用户推荐列表上的交集部分),推荐系统会视用户A和用户B具有相同的偏好兴趣,此时若只利用用户点击的博文势必不能做出符合个体的推荐,因为用户的差异性体现在用户未点击的博文上边。为了解决上述问题,本文将用户未点击的博文信息加入到推荐系统中来,从而为用户提供更精准的个性化博文推荐服务。
2算法相关理论和技术基础
基于近邻用户的协同过滤算法是最流行的协同过滤算法之一,它包含三个主要的步骤:用户相似度计算、最近邻居的选取和评分预测。
Cosine相似度是计算用户相关性的常用方法,假设[Sxy]为用户x和y共同评分的物品集,Cosine相似度计算公式如下:
对于每一个用户来说,只选取相似度最高的K个用户作为此用户的近邻用户。
目标用户u对物品i的评分通常是通过选出的近邻用户对物品i的打分集合来进行计算的。最简单的计算方法是取近邻用户对物品i打分的平均值,但这种方法无法反应目标用户与用户的相似度。让[U]作为目标用户u的近邻用户集,用户u对新物品s的评分[ru,s]还可以通过以下方式计算:
最终选取评分[ru,s]最高的前N项物品作为目标用户u最终的推荐结果。
3系统框架
3.1机选近邻用户
清洗出一天内点击博首猜你喜欢栏目的所有用户[C],作为推荐博文的目标用户集。获得每个用户点击博文的“栏目:次数”向量,例如用户A在这一天点击了博文a、博文b、博文c,博文a和博文b都属于体育这个栏目,博文c属于美食这个栏目,那么用户A的“栏目:次数”信息为:“体育:2、美食:1”。用Cosine相似度方法计算目标用户与其他用户“栏目:次数”向量的相似度[simx,y],为目标用户选取与其相似度最高的50名用户作为此用户的近邻用户。
3.2计算备选博文推荐列表
得到过去6天内用户[c∈C]所点击的全部全站点击博文,以及这些博文的“关键词:评分”信息,记为向量[b]。然后获得目标用户的“关键词:评分”向量,记为向量[u],用Cosine相似度方法计算[u]与[b]的相似度[simx,b]。[simx,y']为点击博文b的近邻用户与目标用户相似度[simx,y]的算数平均值。 如果博文[b]的关键词和目标用户[x]的关键词没有交集,则评分的计算公式为:
如果博文[b]的关键词和目标用户[x]的关键词有交集,则评分的计算公式为:
选取博文评分[rx,b]最高的前200篇作为目标用户[x]的备选博文推荐列表[B]。
3.3计算负User-Profile日志
清洗出同一天内用户[x]未点击的博客首页猜你喜欢栏目下的博文集合[O],每个博文[b∈O]的关键词集合记为项量[b],每个用户[x]的关键词集合记为向量[x],向量[b]与向量[x]的交集中关键词的数量即为此博文的评分。然后计算此用户点击的博客首页猜你喜欢栏目下的博文数量[n],取得分最高前[n]个博文[b∈O]作为用于计算此用户负User-Profile的博文,把每条博文中相同关键词的评分相加,即得到此用户的负User-Profile日志,向量记为[v]。
3.4得到最终博文推荐列表
让博文[b'∈B]的“关键词:得分”向量是[b'],用Cosine相似度方法计算[v]与[b']的相似度记为[simx,b'']。如果博文[b']的关键词和目标用户[x]的负User-Profile中的关键词没有交集,则评分的计算公式为:
如果博文[b]的关键词和目标用户[x]的负User-Profile中的关键词有交集,则评分的计算公式为:
取博文评分[rx,b']最高的100篇博文,即为最终的推荐博文列表。
4实验评价
4.1数指标评测
使用Discounted Cumulative Gain(DCG)评价本文提出推荐算法的推荐效果。DCG是信息检索(Information Retrieval)中用来评价搜索引擎算法有效性的一种方法,它有一个假设,即在结果列表中位置靠后的相关文件得分应该依据其所在位置按照对数成比例地减少。
在评价博客推荐效果时,先计算每个用户[u]推荐博文列表的[DCGu],再对所有用户的[DCG]求和,然后除以总用户数[totalUserNum],得到平均的[DCG]值,公式如下:
其中[p]为推荐列表中所含博文条数,[reli]为第[i]条博文的得分,用户[u]点击的博文得分为1,未点击的博文得分为0。
4.2实验结果
为了评估实验效果,实验进行四次,分别针对5月6号、5月7号、5月8号、5月9号的用户进行博文推荐,且同时应用负反馈的协同过滤推荐算法(negative-CF)和传统的协同过滤算法(CF),然后计算DCG的数值。
由图1可知,negative-CF的DCG值比CF的DCG值大,因此negative-CF比传统的CF拥有更好的推荐效果。
5结论
在本篇论文中,提出了一种基于负反馈的协同过滤推荐算法,并利用这种方法产生推荐博文列表。通过Cosine相似度计算找到用户的近邻用户,然后应用基于用户的协同过滤算法产生候选博文列表,接下来用负反馈信息对候选博文列表中的博文做筛选,并产生最终的博文推荐结构。新方法在新浪博客的数据集上进行了实验,同样的数据也被应用在传统的协同过滤推荐算法上。实验结果表明,新提出的算法提升了博文推荐的准确度。
参考文献:
[1] Gediminas Adomavicius, Alexander Tuzhilin. Toward the Next Generation of Recommender Systems: A Survey of the State-of-the-Art and Possible Extensions[J]. IEEE Transactions on Knowledge and Data Engineering,2005,17(6):734-749.
[2] Alejandro Bellogin, Pablo Castells, Iván Cantador. Neighbor Selection and Weighting in User-Based Collaborative Filtering: A Performance Prediction Approach[J].Transaction on the Web(TWEB), 2014,8(2):1-30.
[3] Alexander Hars. Does a One-Size Recommendation System Fit All? The Effectiveness of Collaborative Filtering Based Recommendation Systems Across Different Domains and Search Modes[J], Transaction on Information Systems(TOIS), 2007,26(1):4.[4] Ting-Chun Peng, Seng-Cho T.Chou. iTrustU: A Blog Recommender System Based on Multi-faceted Trust and Collaborative Filtering, Proceedings of the 2009 ACM symposium on Applied Computing(SAC)[J], 2009.
[5] 周军锋,汤显,郭景峰. 一种优化的协同过滤推荐算法[J].计算机研究与发展,2004,41(10):1842-1847.
[6] 郭艳红. 推荐系统的协同过滤算法与应用研究[D].大连:大连理工大学, 2008.