推荐系统中常用算法 以及优点缺点对比
  • 2014/09/20

【Martin导读】随着互联网特别是社会化网络的快速发展,我们正处于信息过载的时代。用户面对过量的信息很难找到自己真正感兴趣的内容,而内容提供商也很难把优质的内容准确推送给感兴趣的用户。推荐系统被认为是解决这些问题的有效方法,它对用户的历史行为进行挖掘,对用户兴趣进行建模,并对用户未来的行为进行预测,从而建立了用户和内容的关系。

本文详细介绍了推荐系统中的常用算法及优缺点对比,以便我们能在不同的情况下,选择合适的推荐技术和方案。

推荐方法是整个推荐系统中最核心、最关键的部分,很大程度上决定了推荐系统性能的优劣。目前,主要的推荐方法包括:基于内容推荐、协同过滤推荐、基于关联规则推荐、基于效用推荐、基于知识推荐和组合推荐。

一、基于内容推荐

基于内容的推荐(Content-based Recommendation)是信息过滤技术的延续与发展,它是建立在项目的内容信息上作出推荐的,而不需要依据用户对项目的评价意见,更多地需要用机 器学习的方法从关于内容的特征描述的事例中得到用户的兴趣资料。在基于内容的推荐系统中,项目或对象是通过相关的特征的属性来定义,系统基于用户评价对象 的特征,学习用户的兴趣,考察用户资料与待预测项目的相匹配程度。用户的资料模型取决于所用学习方法,常用的有决策树、神经网络和基于向量的表示方法等。 基于内容的用户资料是需要有用户的历史数据,用户资料模型可能随着用户的偏好改变而发生变化。

基于内容推荐方法的优点是:

1)不需要其它用户的数据,没有冷开始问题和稀疏问题。

2)能为具有特殊兴趣爱好的用户进行推荐。

3)能推荐新的或不是很流行的项目,没有新项目问题。

4)通过列出推荐项目的内容特征,可以解释为什么推荐那些项目。

5)已有比较好的技术,如关于分类学习方面的技术已相当成熟。

缺点是要求内容能容易抽取成有意义的特征,要求特征内容有良好的结构性,并且用户的口味必须能够用内容特征形式来表达,不能显式地得到其它用户的判断情况。

二、协同过滤推荐

协同过滤推荐(Collaborative Filtering Recommendation)技术是推荐系统中应用最早和最为成功的技术之一。它一般采用最近邻技术,利用用户的历史喜好信息计算用户之间的距离,然后 利用目标用户的最近邻居用户对商品评价的加权评价值来预测目标用户对特定商品的喜好程度,系统从而根据这一喜好程度来对目标用户进行推荐。协同过滤最大优 点是对推荐对象没有特殊的要求,能处理非结构化的复杂对象,如音乐、电影。

协同过滤是基于这样的假设:为一用户找到他真正感兴趣的内容的好方法是首先找到与此用户有相似兴趣的其他用户,然后将他们感兴趣的内容推荐给此用户。其基本 思想非常易于理解,在日常生活中,我们往往会利用好朋友的推荐来进行一些选择。协同过滤正是把这一思想运用到电子商务推荐系统中来,基于其他用户对某一内 容的评价来向目标用户进行推荐。

基于协同过滤的推荐系统可以说是从用户的角度来进行相应推荐的,而且是自动的,即用户获得的推荐是系统从购买模式或浏览行为等隐式获得的,不需要用户努力地找到适合自己兴趣的推荐信息,如填写一些调查表格等。

和基于内容的过滤方法相比,协同过滤具有如下的优点:

1) 能够过滤难以进行机器自动内容分析的信息,如艺术品,音乐等。

2) 共享其他人的经验,避免了内容分析的不完全和不精确,并且能够基于一些复杂的,难以表述的概念(如信息质量、个人品味)进行过滤。

3) 有推荐新信息的能力。可以发现内容上完全不相似的信息,用户对推荐信息的内容事先是预料不到的。这也是协同过滤和基于内容的过滤一个较大的差别,基于内容的过滤推荐很多都是用户本来就熟悉的内容,而协同过滤可以发现用户潜在的但自己尚未发现的兴趣偏好。

4) 能够有效的使用其他相似用户的反馈信息,较少用户的反馈量,加快个性化学习的速度。
虽然协同过滤作为一种典型的推荐技术有其相当的应用,但协同过滤仍有许多的问题需要解决。最典型的问题有稀疏问题(Sparsity)和可扩展问题(Scalability)。

三、基于关联规则推荐

基于关联规则的推荐(Association Rule-based Recommendation)是以关联规则为基础,把已购商品作为规则头,规则体为推荐对象。关联规则挖掘可以发现不同商品在销售过程中的相关性,在零 售业中已经得到了成功的应用。管理规则就是在一个交易数据库中统计购买了商品集X的交易中有多大比例的交易同时购买了商品集Y,其直观的意义就是用户在购 买某些商品的时候有多大倾向去购买另外一些商品。比如购买牛奶的同时很多人会同时购买面包。

算法的第一步关联规则的发现最为关键且最耗时,是算法的瓶颈,但可以离线进行。其次,商品名称的同义性问题也是关联规则的一个难点。

四、基于效用推荐

基于效用的推荐(Utility-based Recommendation)是建立在对用户使用项目的效用情况上计算的,其核心问题是怎么样为每一个用户去创建一个效用函数,因此,用户资料模型很大 程度上是由系统所采用的效用函数决定的。基于效用推荐的好处是它能把非产品的属性,如提供商的可靠性(Vendor Reliability)和产品的可得性(Product Availability)等考虑到效用计算中。

五、基于知识推荐

基于知识的推荐(Knowledge-based Recommendation)在某种程度是可以看成是一种推理(Inference)技术,它不是建立在用户需要和偏好基础上推荐的。基于知识的方法因 它们所用的功能知识不同而有明显区别。效用知识(Functional Knowledge)是一种关于一个项目如何满足某一特定用户的知识,因此能解释需要和推荐的关系,所以用户资料可以是任何能支持推理的知识结构,它可以 是用户已经规范化的查询,也可以是一个更详细的用户需要的表示。

六、组合推荐

由于各种推荐方法都有优缺点,所以在实际中,组合推荐(Hybrid Recommendation)经常被采用。研究和应用最多的是内容推荐和协同过滤推荐的组合。最简单的做法就是分别用基于内容的方法和协同过滤推荐方法 去产生一个推荐预测结果,然后用某方法组合其结果。尽管从理论上有很多种推荐组合方法,但在某一具体问题中并不见得都有效,组合推荐一个最重要原则就是通 过组合后要能避免或弥补各自推荐技术的弱点。

在组合方式上,有研究人员提出了七种组合思路:

1)加权(Weight):加权多种推荐技术结果。

2)变换(Switch):根据问题背景和实际情况或要求决定变换采用不同的推荐技术。

3)混合(Mixed):同时采用多种推荐技术给出多种推荐结果为用户提供参考。

4)特征组合(Feature combination):组合来自不同推荐数据源的特征被另一种推荐算法所采用。

5)层叠(Cascade):先用一种推荐技术产生一种粗糙的推荐结果,第二种推荐技术在此推荐结果的基础上进一步作出更精确的推荐。

6)特征扩充(Feature augmentation):一种技术产生附加的特征信息嵌入到另一种推荐技术的特征输入中。

7)元级别(Meta-level):用一种推荐方法产生的模型作为另一种推荐方法的输入。

七、主要推荐方法的对比

各种推荐方法都有其各自的优点和缺点,见表1。

文章来源:36大数据

推荐系统中常用算法 以及优点缺点对比相关推荐

  1. 推荐系统的常用算法,选择,漫谈,推荐系统开源软件汇总

    推荐系统的常用算法概述 前一阵子准备毕业论文的开题,一直在看推荐系统相关的论文.对推荐系统有了一个更加清晰和理性的认识,也对推荐算法有了深入了解.借此机会总结分享一下,大家多多拍砖. 推荐系统的出现 ...

  2. UI设计中常用的抠图工具特点对比|优漫动游

    UI设计师必学哪些技能?抠图是一个设计师必不可少的技能,不同抠图工具怎么使用?比较常见的抠图方法有钢笔.魔棒.快速选取.通道等.不同的图需要不同的方法进行抠图,每种抠图方法也各有其优点和不足,接下来优 ...

  3. AI:人工智能概念之机器学习中常用算法的思维导图集合(非常经典、建议收藏)之详细攻略

    AI:人工智能概念之机器学习中常用算法的思维导图集合(非常经典.建议收藏)之详细攻略 目录 机器学习算法的思维导图集合 1.ML算法思维图 2.ML算法思维导图 相关文章:ML/DL:关于算法模型的选 ...

  4. jaccard相似度_推荐系统中常用计算相似度的方法和工具

    常用的相似度计算方法:(1)欧氏距离(2)余弦相似度 (3)皮尔逊相关系数 (4)修正余弦相似度(5)汉明距离 (6)曼哈顿距离 1.欧式距离:就是计算空间中两点的距离 def EuclideanDi ...

  5. 聊一聊推荐系统中ExploitExplore算法

    Exploit:利用 Explore:探索     推荐系统中,如果片面优化用户的喜好,推荐系统可能会造成信息茧房问题.也就是推荐的东西都是用户喜欢的东西,千篇一律.这时候不仅仅需要Exploit,还 ...

  6. cnn和rnn可以结合使用吗,rnn和cnn优点缺点对比

    CNN和RNN在文本分类过程中的区别整理 用CNN卷积的情况,这里面有几个关键点:一个是文本跟图片不一样,图片有长宽,然后还有深度(RGB). 对应到文本上,假设文章总共N个词,每个词嵌入维度K维,那 ...

  7. 列举最新的关键词算法的优点缺点

    好的. 在这里,我将列出最近的关键词算法的一些优点和缺点: 优点: 可以提高搜索引擎的准确度,更好地匹配用户的查询意图. 可以更好地识别有价值的信息,帮助搜索引擎区分重要内容和垃圾内容. 可以帮助搜索 ...

  8. 通信工程中常用算法c语言,通信工程常见面试题.doc

    通信工程常见面试题 模拟电路 1. 基尔霍夫定理的内容是什么?(仕兰微电子) 基尔霍夫电流定律是一个电荷守恒定律,即在一个电路中流入一个节点的电荷与流出同一个节点的电荷相等. 基尔霍夫电压定律是一个能 ...

  9. 推荐系统中常用的embedding方法

    简单来说,Embedding就是用一个低维的向量表示一个物体,可以是一个词,或是一个商品,或是一个电影等等. 在传统机器学习模型构建过程中,经常使用one hot encoding对离散特征,特别是I ...

最新文章

  1. 香港大学自然语言处理实验室PhD/RA招生(HKU NLP)
  2. 单例模式的几种实现方式
  3. SAP 电商云 Spartacus UI CI 脚本分析
  4. nyoj-20-吝啬的国度(深搜)
  5. mongodb数据库淘汰_mongodb 内存数据淘汰策略
  6. VC 6中使用不同调用规范的函数在符号文件里的表示方式
  7. 自己做计算机三级,计算机三级辅导:自己“做”软驱
  8. H5 微信公众号 授权登录 前后端分离篇(前后端联调_03)
  9. SpringCloud——负载均衡
  10. 动态ARP检测,引发上网断断续续
  11. 自定义注解和注解的相关使用
  12. 操作系统课程设计(linux操作系统)
  13. mac book 专用最新款win10镜像
  14. 【转】书上的字快速弄到电脑上
  15. Android开门动画和关门动画的实现
  16. 名帖298 王铎 行书《罗汉跋》
  17. Origin 2017调整画布和图表的尺寸大小
  18. 手机怎么实现图片转文字操作?学会这三招就够了
  19. 石家庄科技工程职业学院计算机系,石家庄科技工程职业学院学生社团
  20. CRM如何进行客户关系管理

热门文章

  1. android 按下home键执行什么,Android下得到Home键按下的消息
  2. 织梦换了html模板样式没了,织梦(dedecms)如何更换网站模板?
  3. leetcode算法题--Count and Say
  4. mac 终端快捷命令
  5. 数据库acid简介(一)
  6. leetcode算法题--最长公共子序列★
  7. java循环object_java怎么循环获取object的属性名和值?object内容如下
  8. centos7-yum安装与卸载
  9. python实现WordCount(第三次作业)
  10. java基础---serializable的作用