基于Slope one算法的电影推荐系统
摘要:商业网站迅猛发展的时代已经到来,网上服务的交易方式正在改变
着传统的商业模式。如果说过去的十年是搜索技术高速发展的十年,那么个性化推荐技术将作为下一个十年中最为重要的革新之一。目前几乎所有大型的商业网站,如亚马逊、淘宝网等,都不同程度地使用了各种形式的推荐系统。本文就推荐系统这一话题展开讨论,首先介绍了推荐系统的提出和发展过程,然后列举出了几种推荐系统的研究方法,其中,详细的描述了Slope one算法推荐系统的实现过程以及用Slope one算法编写程序完成了电影推荐系统。最后列举了几个推荐系统的实例。
关键字:Slope one算法推荐系统数据挖掘个性化推荐
一、发展背景:
随着Internet的日益普及,商业网站的蓬勃发展,如何提高商业网站的有效性,尤其是如何运用个性化推荐技术提供个性化服务来实现已逐渐成为一个能引起广泛兴趣的热点课题。虽然商业网站从“以站点为中心”向“以用户为中心”发展成为必然趋势。但目前国内大多数商业网站的商品推荐通常是:推荐热销产品;推荐相关产品;依据用户浏览历史的信息进行推荐。由Daniel Lemire 教授在2005 年提出的一个Item-Based(基于条目)推荐算法,可应用于各类以网上商品销售为主业务的网上商店,以及提
供文章、新闻、音乐、电影等“无形”的产品的网络站点。用于帮助商店经营者,网络站点从事产品的个性化推荐,提高营销及服务质量,更好地挖掘潜在客户及客户的使用、购买潜能。同时也根据用户的喜好,网站会留下记录,当用户再次访问时,网站会推荐用户可能喜欢的东西,这样也方便了用户,用户无需浪费时间去搜索大量的信息。
二、现有推荐系统研究方法:
1、基于内容的推荐:
基于内容的推荐(content-based recommendation)是指根据用户选择的对象,推荐其他类似属性的对象作为推荐,属于Schafer 划分中的Item-to-Item Correlation 方法.这类算法源于一般的信息检索方法.不需要依据用户对对象的评价意见.对象使用通过特征提取方法得到的对象内容特征来表示,系统基于用户所评价对象的特征,学习用户的兴趣,从而考察用户资料与待预测项目相匹配
的程度.
对象内容特征(Content(s))的选取在目前的研究中以对象的文字描述为主,比如信息检索中最经典的文本特征是词频-倒排文档频率(term frequency-inverse document frequency,简称TF-IDF).另一方面,用户的资料模型ContentBasedProfile(c)取决于所用机器学习方法,常用的有决策树、贝叶斯分类算法、神经网络、基于向量的表示方法等,数据挖掘领域的众多算法都可以应用.
2、协同过滤推荐
协同过滤推荐(collaborative filtering recommendation)技术是推荐系统中最为成功的技术之一,它于 20 世纪 90 年代开始研究并促进了整个推荐系统研究的繁荣.大量论文和研究都属于这个类别.
协同过滤的基本思想是:到与当前用户ccur相似(比如兴趣和口味相似的其他用户cj,计算对象s 对于用户的效用值u(cj,s),利用效用值对所有s 进行排序或者加权等操作,到最适合ccur的对象s*.其基本思想非常易于理解,在日常生活中,我们往往会利用好朋友的推荐来进行一些选择.协同过滤正是
把这一思想运用到推荐系统中来,即基于其他用户对某一内容的评价向目标用户进行推荐.
基于协同过滤的推荐系统可以说是从用户的角度进行推荐的,并且是自动的,也就是说,用户所获得的推荐是系统从用户购买或浏览等行为中隐式获得的,不需要用户主动去查适合自己兴趣的推荐信息,如填写一些调查表格等.其另外一个优点是对推荐对象没有特殊的要求(而基于内容的推荐需要对推荐对象进行特征分析),能够处理非结构化的复杂对象,如音乐、电影等.同时,研究用户之间的关系需要大量的用户访问行为的历史数据,与社会网络研究有交叉点,有丰富的研究基础和广阔的前景.对协同过滤最早的研究有Grundy system, 后来的
研究成果包括 Tapestry system, GroupLens, Ringo, PHOAKS system, Jester system]等.总体而言, 此
类推荐算法可以分为两类:启发式(heuristic-based or memory-based)方法和基于模型(model-based)的方法。
3、基于知识的推荐:
基于知识的推荐(knowledge-based recommendation)在某种程度上可以看成是一种推理(inference)技术.它不是建立在用户需要和偏好基础上推荐的,而是利用针对特定领域制定规则(rule)来进行基于规则和实例的推理(case-based reasoning).例如,文献[34]中利用饭店的菜式方面的效用知识,推荐饭店给顾客.效用知识(functional knowledge)是一种关于一个对象如何满足某一特定用户的知识,因而能够解释需求和推荐的关系,用于推荐系统.效用知识在推荐系统中
必须以机器可读的方式存在(ontology 本体知识库),例如 quickstep and foxtrot systems使用关于学术论文主题的ontology本体知识库向读者作推荐.
4、Slope one算法推荐:
Slope One是一系列应用于协同过滤的算法的统称。由 Daniel Lemire 和Anna Maclachlan于2005年发表的论文中提出。有争议的是,该算法堪称基于项目评价的non-trivial 协同过滤算法最简洁的形式。该系列算法的简洁特性使它们的实现简单而高效,而且其精确度与其它复杂费时的算法相比也不相上下。
该系列算法也被用来改进其它算法。当可以对一些项目评分的时候,比如人们可以对一些东西给出1到5星的评价的时候,协同过滤意图基于一个个体过去对某些项目的评分和(庞大的)由其他用户的评价构成的数据库,来预测该用户对未评价项目的评分。如: 如果一个人给披头士的评分为5(总分5)的话,我们能否预测他对席琳狄翁新专辑的评分呢?
这种情形下, item-based 协同过滤系统根据其它项目的评分来预测项目的分值,一般方法为线性回归(). 于是,需要列出x^2个线性
回归方程和回归量,例如:当有1000个项目时,需要列多达1,000,000个线性回归方程,以及多达2,000,000个回归量。除非我们只选择某些用户共同评价过的项目对,否则协同过滤会遇到过适(过拟合) 问题。
三、Slope one算法描述及实现过程:
1、算法原型:
图例一(如图3-1所示):
图3-1 算法演示图一
如上图所示,UserA对ItemA的评分是4,对ItemB的评分是3,UserB对ItemA 的评分是2,那么,预测UserB对ItemB的评分是多少呢?
根据Slope One算法,2+(3-4)=1。
图例二(如图3-2所示):
图3-2 算法演示图二
如上图所示,UserB 对ItemB 的评分会是多少呢?股票上有个说法是平均
值可以掩盖一切的异常波动,所以股票上的各个技术指标是收集不同时间段的平
均值的曲线图或是柱状图等。同样的,Slope One 算法也认为:平均值也可以代
替某两个未知个体之间的打分差异,条目  A 条目B 的平均差值是:
=0.5
也就是说人们对事物  A 的打分一般比事物  B 的打分要高0.5,于是Slope one 算法就猜测UserB 对事物B 的打分是2 - 0.5 = 1.5。
2、加权算法:
由上的两个示例对Slope One算法有了认识。如果有100个用户对ItemA
和ItemB都打过分,有1000 个用户对ItemC 和ItemB 也打过分。显然这两
个rating 差的权重是不一样的。因此我们可以推测,计算方法是:Slope One 算法的加权算法数学描述如下:有N 个用户对条目A 和条目B
有个叫什么代码的电影打分了,R(A->B)表示这N 位用户对  A 和对  B 打分的平均差(A-B),有M 位
用户对条目  B 和条目  C 打分了,R(C->B)表示这M 位用户对  C 和对  B 打
分的平均差(C-B),注意都是平均差而不是平方差,现在某个用户对  A 的打分
是ra,对C 的打分是rc,那么  A 对  B 的打分可能是:
rb=
上面讨论的是用户只对条目的喜好程度打分。还有一种情况下用户也可以对
条目的厌恶程度打分。这时可以使用双极Slope One 算法(BI-Polar Slope One)。四、实验结果:
测试数据movielens均方根误差RMSE=0.947445分以上推荐正确率:0.746卢一强:北京遇上西雅图李长月:猩球崛起
燕睿涛:北京遇上西雅图李长月:听风者
龚志鑫:北京遇上西雅图燕睿涛:肖申克的救赎
刘璐:北京遇上西雅图刘思遥:肖申克的救赎
李长月:北京遇上西雅图孙召星:肖申克的救赎
龚志鑫:少年派燕睿涛:泰坦尼克号
卢一强:速度与激情5汤瑶:泰坦尼克号
刘璐:速度与激情5刘思遥:泰坦尼克号
刘璐:猩球崛起

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。