推荐系统不同算法之间的比较
来源:互联网 发布:linux 执行sql脚本 编辑:程序博客网 时间:2024/05/16 13:56
本篇的主要参考资料为项亮的《推荐系统实践》。
不同推荐算法的优缺点比较
1.基于内容的推荐
基于内容的推荐(Content-basedRecommendation)是信息过滤技术的延续与发展,它是建立在项目的内容信息上作出推荐的,而不需要依据用户对项目的评价意见,更多地需要用机器学习的方法从关于内容的特征描述的事例中得到用户的兴趣资料。在基于内容的推荐系统中,项目或对象是通过相关的特征的属性来定义,系统基于用户评价对象的特征,学习用户的兴趣,考察用户资料与待预测项目的相匹配程度。用户的资料模型取决于所用学习方法,常用的有决策树、神经网络和基于向量的表示方法等。基于内容的用户资料是需要有用户的历史数据,用户资料模型可能随着用户的偏好改变而发生变化。
基于内容推荐方法的优点是:
(1)不需要其它用户的数据,没有冷开始问题和稀疏问题。
(2)能为具有特殊兴趣爱好的用户进行推荐。
(3)能推荐新的或不是很流行的项目,没有新项目问题。
(4)通过列出推荐项目的内容特征,可以解释为什么推荐那些项目。
(5)已有比较好的技术,如关于分类学习方面的技术已相当成熟。
基于内容推荐方法的缺点是:
(1)是要求内容能容易抽取成有意义的特征,要求特征内容有良好的结构性,并且用户的口味必须能够用内容特征形式来表达,不能显式地得到其它用户的判断情况。
(2)核心要解决的问题是推荐是否具有扩张性,如果根据用户之前的爱好只不断推荐同类的产品,显然整个推荐系统的价值就十分有限。
2.协同过滤推荐算法
协同过滤算法算是推荐系统中最经典的算法了,也称为基于领域的算法。协同过滤牵涉到用户和商品的交互信息,也就是用户行为,而一般用户对于商品的行为反馈有:
显性反馈行为——用户明确表现出对某项产品和的喜好,比如用户对商品的打分、评论等信息。
隐性反馈行为——不能明确代表用户对产品喜好的行为,比如页面浏览行为等,这类数据量的比较多,常常伴有大量的噪音,需要经过处理和转化才可能有实际的用途。
CF算法分为两大类,一类为基于memory的(Memory-based),另一类为基于Model的(Model-based)。基于memory的协同过滤包括基于用户的和基于物品的协同过滤。User-based的基本思想是如果用户A喜欢物品a,用户B喜欢物品a、b、c,用户C喜欢a和c,那么认为用户A与用户B和C相似,因为他们都喜欢a,而喜欢a的用户同时也喜欢c,所以把c推荐给用户A。该算法用最近邻居(nearest-neighbor)算法找出一个用户的邻居集合,该集合的用户和该用户有相似的喜好,算法根据邻居的偏好对该用户进行预测。User-based算法存在两个重大问题: 1. 数据稀疏性。一个大型的电子商务推荐系统一般有非常多的物品,用户可能买的其中不到1%的物品,不同用户之间买的物品重叠性较低,导致算法无法找到一个用户的邻居,即偏好相似的用户。 2. 算法扩展性。最近邻居算法的计算量随着用户和物品数量的增加而增加,不适合数据量大的情况使用。Iterm-based的基本思想是预先根据所有用户的历史偏好数据计算物品之间的相似性,然后把与用户喜欢的物品相类似的物品推荐给用户。还是以之前的例子为例,可以知道物品a和c非常相似,因为喜欢a的用户同时也喜欢c,而用户A喜欢a,所以把c推荐给用户A。 因为物品直接的相似性相对比较固定,所以可以预先在线下计算好不同物品之间的相似度,把结果存在表中,当推荐时进行查表,计算用户可能的打分值,可以同时解决上面两个问题。
2.1 基于用户的协同过滤算法(UserCF)
协同过滤是基于这样的假设:为一用户找到他真正感兴趣的内容的好方法是首先找到与此用户有相似兴趣的其他用户,然后将他们感兴趣的内容推荐给此用户。其基本思想非常易于理解,在日常生活中,我们往往会利用好朋友的推荐来进行一些选择。协同过滤正是把这一思想运用到电子商务推荐系统中来,基于其他用户对某一内 容的评价来向目标用户进行推荐。
它一般采用最近邻技术,利用用户的历史喜好信息计算用户之间的距离,然后利用目标用户的最近邻居用户对商品评价的加权评价值来预测目标用户对特定商品的喜好程度,系统从而根据这一喜好程度来对目标用户进行推荐。协同过滤最大优点是对推荐对象没有特殊的要求,能处理非结构化的复杂对象,如音乐、电影。
UserCF实现的步骤包括:
(1)找到与目标用户兴趣相似的用户群;
(2)找到这个集合中用户喜欢的,而目标用户没听说过得商品推荐之;
UserCF提供的一个参数K表示要考虑目标用户兴趣最相似的人的个数,在保证精度的同时,K不宜过大,否则推荐结果会趋向于热门商品,流行度指标和覆盖度指标都会降低。
2.2基于内容的协同过滤算法(Item CF)
目前用的最广泛的推荐算法,不是通过商品本身,而是通过用户对商品的行为来计算商品之间的相似度,其假设能够引起用户兴趣的商品,必定与其之前评分高的商品相似。ItemCF的操作步骤包括:
(1)计算商品之间的相似度。
物品相似度可以表示为(其实跟前面的支持度比较像)
第二个式子比第一个式子好在可以惩罚过热产品j。
(2)根据商品的相似度和用户的历史行为,给用户生成推荐列表。
2.3 协同过滤的优缺点
协同过滤具有如下的优点:
1) 能够过滤难以进行机器自动内容分析的信息,如艺术品,音乐等。
2) 共享其他人的经验,避免了内容分析的不完全和不精确,并且能够基于一些复杂的,难以表述的概念(如信息质量、个人品味)进行过滤。
3) 有推荐新信息的能力。可以发现内容上完全不相似的信息,用户对推荐信息的内容事先是预料不到的。这也是协同过滤和基于内容的过滤一个较大的差别,基于内容的过滤推荐很多都是用户本来就熟悉的内容,而协同过滤可以发现用户潜在的但自己尚未发现的兴趣偏好。
4) 能够有效的使用其他相似用户的反馈信息,较少用户的反馈量,加快个性化学习的速度。
虽然协同过滤作为一种典型的推荐技术有其相当的应用,但协同过滤仍有许多的问题需要解决。最典型的问题有稀疏问题(Sparsity)和可扩展问题(Scalability)。
协同过滤的缺点:
1、数据稀疏问题
协同过滤的精度主要取决于用户数据的多少。如果一个系统有很多用户的历史数据,他就能更好的对用户的喜欢做出预测。所以,目前推荐系统做的最好的都是那些有着很大量用户数据的公司,比如Google,Yahoo,Netflix,Amazon等等。一个好的推荐系统首先需要类目(种类)数据(从目录或者其它形式得到),然后系统必须捕获并且分析这些用户数据(用户行为),然后,再应用神奇的算法工作。分析越多的类目(种类)和用户数据,系统越有可能生产好的推荐。但是,这又是一个蛋和鸡的问题:要形成好的推荐,首先需要有大量的用户,这样才能得到大量的推荐数据。
2、新用户问题(新产品问题)
这个问题和数据稀疏问题有一些相似性,他是指如何对新用户做出推荐。当一个新用户进入一个站点时,我们对他的兴趣爱好还一无所知,这时如何做出推荐是一个很重要的问题。一般在这个时候,我们只是向用户推荐那写普遍反映比较好的物品,也就是说,推荐完全是基于物品的。对于新的产品,同样存在如上的问题。
3. 长尾问题(长尾用户/长尾商品)
新用户问题还有一个变种就是长尾(longtail)问题,在Amazon中,不是所有的用户都对很多书给出了评分,很多用户只给少数的书给出了评分,这些用户就处在一个长尾中,如何处理那些不太表露自己兴趣的用户,也是推荐系统的一个主要问题。除此之外,图书的长尾也是一个不可忽视的问题。
4. 不断变化的用户喜好
用户的兴趣不是永远不变的,随着年龄和阅历的变化,用户的行为会发生变化。协同过滤其实还应该加入一个时间因子。今天自己浏览amazon时是会有特定意图的,明天或许会有另一个特定意图。举个典型的例子:有可能某天我会上amazon为自己买本书,但第二天我到amazon的原因可能是要为姐姐找一份生日礼物。对于用户喜好,推荐系统也可能错误的标注。
5、隐性喜好难处理
在现在的推荐系统中,用户的喜欢是通过用户对某些物品进行评分获得的。这种获得用户兴趣的方法是一种很直接的方法。但在实际的互联网中,用户有很多隐性的方法表露他们的喜欢。比如用户的文字评论,我们可以通过自然语言处理从用户的评论中获得用户的兴趣;或者是用户的浏览行为,比如用户长时间的浏览一个物品,或者用户经常浏览一个物品,或者用户购买了一个物品,这些行为都可以作为模式识别系统中的特征。
6. 偏激的用户和另类的产品
世界上有一些用户是很偏激的。他们和大多数人的观点是相反的。对于这种用户,现有的推荐系统做出的预测往往是很差的。如何处理偏激的用户,是推荐系统中的一个重要问题。和偏激用户相对应的,是颠覆性的产品。比如一些古怪(特别)的电影会有一些问题,有一些电影观众对它又爱又恨,这种类型的电影是很难去做推荐的,因为用户对它们会有各种反映而且无法预计。
7. 马太效应的影响
在互联网中,物品实在是太多了,而推荐系统只能推荐有限的物品。被推荐系统所推荐的物品将会越来越热门,这就导致了大量很好的物品可能会被推荐系统所淹没。解决这个问题的主要方法是增加推荐系统的多样性,比如一个推荐系统发现一个用户非常喜欢吃德芙巧克力,那么他给这个用户推荐10个产品,不需要都是德芙巧克力,也可以推荐别的一些巧克力,或者一些和巧克力相似的甜品。在推荐时,不仅要推荐用户喜欢的东西,而且要通过推荐让用户喜欢一些东西,有的时候,用户自己也不知道他喜欢什么,通过推荐系统,他可能会发现一些新东西他比较喜欢。
8. 推荐系统的作弊行为
只要涉及到经济利益,就有人作弊。搜索引擎作弊是一个被研究了很久的问题,因为在搜索引擎中,自己的网站排名越高,就能获得越多的经济利益。在推荐系统中也是如此,比如在淘宝中,如果一个卖家的物品经常被推荐,他就可能获得很多经济利益。很多电子商务的推荐系统都遭受到了作弊的干扰,一些人通过一些术手段,对自己卖的物品给出非常高的评分,这就是一种作弊行为。作弊行为相当于人为的向系统中注入了噪声。目前解决作弊的算法主要是基于信任度和信用的。现在很多电子商务网站都引入了信用系统,比如淘宝等等。如何设计信用系统和推荐系统更好的融合,是一个重要的研究问题。
- 推荐系统不同算法之间的比较
- 推荐系统的常见推荐算法的性能比较
- 不同系统之间的文件传输
- 不同系统之间的文件传输
- 不同系统之间的文件传输
- 不同系统之间的文件传输
- 不同系统之间的文件传输
- 不同系统之间的文件传输
- 不同系统之间的文件传输
- 不同系统之间的文件传输
- 不同系统不同语言之间的交互
- 几种不同的推荐引擎比较
- 推荐系统的算法
- Linux比较两个文件之间的不同
- 指定误差求开平方之不同算法实现之间的效率比较(java实现)
- 推荐系统:总体介绍、推荐算法、性能比较
- 推荐系统:总体介绍、推荐算法、性能比较
- 推荐系统:总体介绍、推荐算法、性能比较
- Python读写配置文件
- Reactor模式,或者叫反应器模式
- IOS开发经常用到齐全控件
- 线程基础学习第一篇(多个线程竞争一把锁)
- centos 安装git
- 推荐系统不同算法之间的比较
- C++实验3— 个人所得税计算器
- C++实验3-多分数段函数求值
- 最后一波报名!!2017全国深度学习技术应用大会参会通道即将关闭
- Android框架与Android音频框架
- python多语言翻译一
- Java 位运算(移位、位与、或、异或、非)
- DialogFragment自定义对话框
- Git使用备忘