童话说说技术创业美文职业
投稿投诉
职业母婴
职场个人
历史治疗
笔记技能
美文纠纷
幽默家庭
范文作文
乐趣解密
创业案例
社会工作
新闻家居
心理安全
技术八卦
仲裁思考
生活时事
运势奇闻
说说企业
魅力社交
安好健康
传统笑话
童话初中
男女饮食
周易阅读
爱好两性

探索推荐引擎内部的秘密:推荐引擎初探

5月13日 风雨峰投稿
  “探索推荐引擎内部的秘密”系列将带领读者从浅入深的学习探索推荐引擎的机制,实现方法,其中还涉及一些基本的优化方法,例如聚类和分类的应用。同时在理论讲解的基础上,还会结合ApacheMahout介绍如何在大规模数据上实现各种推荐策略,进行策略优化,构建高效的推荐引擎的方法。本文作为这个系列的第一篇文章,将深入介绍推荐引擎的工作原理,和其中涉及的各种推荐机制,以及它们各自的优缺点和适用场景,帮助用户清楚的了解和快速构建适合自己的推荐引擎。
  信息发现
  如今已经进入了一个数据爆炸的时代,随着Web2。0的发展,Web已经变成数据分享的平台,那么,如何让人们在海量的数据中想要找到他们需要的信息将变得越来越难。
  在这样的情形下,搜索引擎(Google,Bing,百度等等)成为大家快速找到目标信息的最好途径。在用户对自己需求相对明确的时候,用搜索引擎很方便的通过关键字搜索很快的找到自己需要的信息。但搜索引擎并不能完全满足用户对信息发现的需求,那是因为在很多情况下,用户其实并不明确自己的需要,或者他们的需求很难用简单的关键字来表述。又或者他们需要更加符合他们个人口味和喜好的结果,因此出现了推荐系统,与搜索引擎对应,大家也习惯称它为推荐引擎。
  随着推荐引擎的出现,用户获取信息的方式从简单的目标明确的数据的搜索转换到更高级更符合人们使用习惯的信息发现。
  如今,随着推荐技术的不断发展,推荐引擎已经在电子商务(Ecommerce,例如Amazon,当当网)和一些基于social的社会化站点(包括音乐,电影和图书分享,例如豆瓣,Mtime等)都取得很大的成功。这也进一步的说明了,Web2。0环境下,在面对海量的数据,用户需要这种更加智能的,更加了解他们需求,口味和喜好的信息发现机制。
  推荐引擎
  前面介绍了推荐引擎对于现在的Web2。0站点的重要意义,这一章我们将讲讲推荐引擎到底是怎么工作的。推荐引擎利用特殊的信息过滤技术,将不同的物品或内容推荐给可能对它们感兴趣的用户。
  图1。推荐引擎工作原理图
  图1给出了推荐引擎的工作原理图,这里先将推荐引擎看作黑盒,它接受的输入是推荐的数据源,一般情况下,推荐引擎所需要的数据源包括:
  要推荐物品或内容的元数据,例如关键字,基因描述等;
  系统用户的基本信息,例如性别,年龄等
  用户对物品或者信息的偏好,根据应用本身的不同,可能包括用户对物品的评分,用户查看物品的记录,用户的购买记录等。其实这些用户的偏好信息可以分为两类:
  显式的用户反馈:这类是用户在网站上自然浏览或者使用网站以外,显式的提供反馈信息,例如用户对物品的评分,或者对物品的评论。
  隐式的用户反馈:这类是用户在使用网站是产生的数据,隐式的反应了用户对物品的喜好,例如用户购买了某物品,用户查看了某物品的信息等等。
  显式的用户反馈能准确的反应用户对物品的真实喜好,但需要用户付出额外的代价,而隐式的用户行为,通过一些分析和处理,也能反映用户的喜好,只是数据不是很精确,有些行为的分析存在较大的噪音。但只要选择正确的行为特征,隐式的用户反馈也能得到很好的效果,只是行为特征的选择可能在不同的应用中有很大的不同,例如在电子商务的网站上,购买行为其实就是一个能很好表现用户喜好的隐式反馈。
  推荐引擎根据不同的推荐机制可能用到数据源中的一部分,然后根据这些数据,分析出一定的规则或者直接对用户对其他物品的喜好进行预测计算。这样推荐引擎可以在用户进入的时候给他推荐他可能感兴趣的物品。
  推荐引擎的分类
  推荐引擎的分类可以根据很多指标,下面我们一一介绍一下:
  推荐引擎是不是为不同的用户推荐不同的数据根据这个指标,推荐引擎可以分为基于大众行为的推荐引擎和个性化推荐引擎
  根据大众行为的推荐引擎,对每个用户都给出同样的推荐,这些推荐可以是静态的由系统管理员人工设定的,或者基于系统所有用户的反馈统计计算出的当下比较流行的物品。
  个性化推荐引擎,对不同的用户,根据他们的口味和喜好给出更加精确的推荐,这时,系统需要了解需推荐内容和用户的特质,或者基于社会化网络,通过找到与当前用户相同喜好的用户,实现推荐。
  这是一个最基本的推荐引擎分类,其实大部分人们讨论的推荐引擎都是将个性化的推荐引擎,因为从根本上说,只有个性化的推荐引擎才是更加智能的信息发现过程。
  根据推荐引擎的数据源其实这里讲的是如何发现数据的相关性,因为大部分推荐引擎的工作原理还是基于物品或者用户的相似集进行推荐。那么参考图1给出的推荐系统原理图,根据不同的数据源发现数据相关性的方法可以分为以下几种:
  根据系统用户的基本信息发现用户的相关程度,这种被称为基于人口统计学的推荐(DemographicbasedRecommendation)
  根据推荐物品或内容的元数据,发现物品或者内容的相关性,这种被称为基于内容的推荐(ContentbasedRecommendation)
  根据用户对物品或者信息的偏好,发现物品或者内容本身的相关性,或者是发现用户的相关性,这种被称为基于协同过滤的推荐(CollaborativeFilteringbasedRecommendation)。
  根据推荐模型的建立方式可以想象在海量物品和用户的系统中,推荐引擎的计算量是相当大的,要实现实时的推荐务必需要建立一个推荐模型,关于推荐模型的建立方式可以分为以下几种:
  基于物品和用户本身的,这种推荐引擎将每个用户和每个物品都当作独立的实体,预测每个用户对于每个物品的喜好程度,这些信息往往是用一个二维矩阵描述的。由于用户感兴趣的物品远远小于总物品的数目,这样的模型导致大量的数据空置,即我们得到的二维矩阵往往是一个很大的稀疏矩阵。同时为了减小计算量,我们可以对物品和用户进行聚类,然后记录和计算一类用户对一类物品的喜好程度,但这样的模型又会在推荐的准确性上有损失。
  基于关联规则的推荐(RulebasedRecommendation):关联规则的挖掘已经是数据挖掘中的一个经典的问题,主要是挖掘一些数据的依赖关系,典型的场景就是“购物篮问题”,通过关联规则的挖掘,我们可以找到哪些物品经常被同时购买,或者用户购买了一些物品后通常会购买哪些其他的物品,当我们挖掘出这些关联规则之后,我们可以基于这些规则给用户进行推荐。
  基于模型的推荐(ModelbasedRecommendation):这是一个典型的机器学习的问题,可以将已有的用户喜好信息作为训练样本,训练出一个预测用户喜好的模型,这样以后用户在进入系统,可以基于此模型计算推荐。这种方法的问题在于如何将用户实时或者近期的喜好信息反馈给训练好的模型,从而提高推荐的准确度。
  其实在现在的推荐系统中,很少有只使用了一个推荐策略的推荐引擎,一般都是在不同的场景下使用不同的推荐策略从而达到最好的推荐效果,例如Amazon的推荐,它将基于用户本身历史购买数据的推荐,和基于用户当前浏览的物品的推荐,以及基于大众喜好的当下比较流行的物品都在不同的区域推荐给用户,让用户可以从全方位的推荐中找到自己真正感兴趣的物品。
  深入推荐机制
  这一章的篇幅,将详细介绍各个推荐机制的工作原理,它们的优缺点以及应用场景。
  基于人口统计学的推荐
  基于人口统计学的推荐机制(DemographicbasedRecommendation)是一种最易于实现的推荐方法,它只是简单的根据系统用户的基本信息发现用户的相关程度,然后将相似用户喜爱的其他物品推荐给当前用户,图2给出了这种推荐的工作原理。
  图2。基于人口统计学的推荐机制的工作原理
  从图中可以很清楚的看到,首先,系统对每个用户都有一个用户Profile的建模,其中包括用户的基本信息,例如用户的年龄,性别等等;然后,系统会根据用户的Profile计算用户的相似度,可以看到用户A的Profile和用户C一样,那么系统会认为用户A和C是相似用户,在推荐引擎中,可以称他们是“邻居”;最后,基于“邻居”用户群的喜好推荐给当前用户一些物品,图中将用户A喜欢的物品A推荐给用户C。
  这种基于人口统计学的推荐机制的好处在于:
  因为不使用当前用户对物品的喜好历史数据,所以对于新用户来讲没有“冷启动(ColdStart)”的问题。
  这个方法不依赖于物品本身的数据,所以这个方法在不同物品的领域都可以使用,它是领域独立的(domainindependent)。
  那么这个方法的缺点和问题是什么呢?这种基于用户的基本信息对用户进行分类的方法过于粗糙,尤其是对品味要求较高的领域,比如图书,电影和音乐等领域,无法得到很好的推荐效果。可能在一些电子商务的网站中,这个方法可以给出一些简单的推荐。另外一个局限是,这个方法可能涉及到一些与信息发现问题本身无关却比较敏感的信息,比如用户的年龄等,这些用户信息不是很好获取。
  基于内容的推荐
  基于内容的推荐是在推荐引擎出现之初应用最为广泛的推荐机制,它的核心思想是根据推荐物品或内容的元数据,发现物品或者内容的相关性,然后基于用户以往的喜好记录,推荐给用户相似的物品。图3给出了基于内容推荐的基本原理。
  图3。基于内容推荐机制的基本原理
  图3中给出了基于内容推荐的一个典型的例子,电影推荐系统,首先我们需要对电影的元数据有一个建模,这里只简单的描述了一下电影的类型;然后通过电影的元数据发现电影间的相似度,因为类型都是“爱情,浪漫”电影A和C被认为是相似的电影(当然,只根据类型是不够的,要得到更好的推荐,我们还可以考虑电影的导演,演员等等);最后实现推荐,对于用户A,他喜欢看电影A,那么系统就可以给他推荐类似的电影C。
  这种基于内容的推荐机制的好处在于它能很好的建模用户的口味,能提供更加精确的推荐。但它也存在以下几个问题:
  需要对物品进行分析和建模,推荐的质量依赖于对物品模型的完整和全面程度。在现在的应用中我们可以观察到关键词和标签(Tag)被认为是描述物品元数据的一种简单有效的方法。
  物品相似度的分析仅仅依赖于物品本身的特征,这里没有考虑人对物品的态度。
  因为需要基于用户以往的喜好历史做出推荐,所以对于新用户有“冷启动”的问题。
  虽然这个方法有很多不足和问题,但他还是成功的应用在一些电影,音乐,图书的社交站点,有些站点还请专业的人员对物品进行基因编码,比如潘多拉,在一份报告中说道,在潘多拉的推荐引擎中,每首歌有超过100个元数据特征,包括歌曲的风格,年份,演唱者等等。
  基于协同过滤的推荐
  随着Web2。0的发展,Web站点更加提倡用户参与和用户贡献,因此基于协同过滤的推荐机制因运而生。它的原理很简单,就是根据用户对物品或者信息的偏好,发现物品或者内容本身的相关性,或者是发现用户的相关性,然后再基于这些关联性进行推荐。基于协同过滤的推荐可以分为三个子类:基于用户的推荐(UserbasedRecommendation),基于项目的推荐(ItembasedRecommendation)和基于模型的推荐(ModelbasedRecommendation)。下面我们一个一个详细的介绍着三种协同过滤的推荐机制。
  基于用户的协同过滤推荐
  基于用户的协同过滤推荐的基本原理是,根据所有用户对物品或者信息的偏好,发现与当前用户口味和偏好相似的“邻居”用户群,在一般的应用中是采用计算“K邻居”的算法;然后,基于这K个邻居的历史偏好信息,为当前用户进行推荐。下图4给出了原理图。
  图4。基于用户的协同过滤推荐机制的基本原理
  上图示意出基于用户的协同过滤推荐机制的基本原理,假设用户A喜欢物品A,物品C,用户B喜欢物品B,用户C喜欢物品A,物品C和物品D;从这些用户的历史喜好信息中,我们可以发现用户A和用户C的口味和偏好是比较类似的,同时用户C还喜欢物品D,那么我们可以推断用户A可能也喜欢物品D,因此可以将物品D推荐给用户A。
  基于用户的协同过滤推荐机制和基于人口统计学的推荐机制都是计算用户的相似度,并基于“邻居”用户群计算推荐,但它们所不同的是如何计算用户的相似度,基于人口统计学的机制只考虑用户本身的特征,而基于用户的协同过滤机制可是在用户的历史偏好的数据上计算用户的相似度,它的基本假设是,喜欢类似物品的用户可能有相同或者相似的口味和偏好。
  基于项目的协同过滤推荐
  基于项目的协同过滤推荐的基本原理也是类似的,只是说它使用所有用户对物品或者信息的偏好,发现物品和物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户,图5很好的诠释了它的基本原理。
  假设用户A喜欢物品A和物品C,用户B喜欢物品A,物品B和物品C,用户C喜欢物品A,从这些用户的历史喜好可以分析出物品A和物品C时比较类似的,喜欢物品A的人都喜欢物品C,基于这个数据可以推断用户C很有可能也喜欢物品C,所以系统会将物品C推荐给用户C。
  与上面讲的类似,基于项目的协同过滤推荐和基于内容的推荐其实都是基于物品相似度预测推荐,只是相似度计算的方法不一样,前者是从用户历史的偏好推断,而后者是基于物品本身的属性特征信息。
  图5。基于项目的协同过滤推荐机制的基本原理
  同时协同过滤,在基于用户和基于项目两个策略中应该如何选择呢?其实基于项目的协同过滤推荐机制是Amazon在基于用户的机制上改良的一种策略,因为在大部分的Web站点中,物品的个数是远远小于用户的数量的,而且物品的个数和相似度相对比较稳定,同时基于项目的机制比基于用户的实时性更好一些。但也不是所有的场景都是这样的情况,可以设想一下在一些新闻推荐系统中,也许物品,也就是新闻的个数可能大于用户的个数,而且新闻的更新程度也有很快,所以它的形似度依然不稳定。所以,其实可以看出,推荐策略的选择其实和具体的应用场景有很大的关系。
  基于模型的协同过滤推荐
  基于模型的协同过滤推荐就是基于样本的用户喜好信息,训练一个推荐模型,然后根据实时的用户喜好的信息进行预测,计算推荐。
  基于协同过滤的推荐机制是现今应用最为广泛的推荐机制,它有以下几个显著的优点:
  它不需要对物品或者用户进行严格的建模,而且不要求物品的描述是机器可理解的,所以这种方法也是领域无关的。
  这种方法计算出来的推荐是开放的,可以共用他人的经验,很好的支持用户发现潜在的兴趣偏好
  而它也存在以下几个问题:
  方法的核心是基于历史数据,所以对新物品和新用户都有“冷启动”的问题。
  推荐的效果依赖于用户历史偏好数据的多少和准确性。
  在大部分的实现中,用户历史偏好是用稀疏矩阵进行存储的,而稀疏矩阵上的计算有些明显的问题,包括可能少部分人的错误偏好会对推荐的准确度有很大的影响等等。
  对于一些特殊品味的用户不能给予很好的推荐。
  由于以历史数据为基础,抓取和建模用户的偏好后,很难修改或者根据用户的使用演变,从而导致这个方法不够灵活。
  混合的推荐机制
  在现行的Web站点上的推荐往往都不是单纯只采用了某一种推荐的机制和策略,他们往往是将多个方法混合在一起,从而达到更好的推荐效果。关于如何组合各个推荐机制,这里讲几种比较流行的组合方法。
投诉 评论 转载

探索推荐引擎内部的秘密:推荐引擎初探“探索推荐引擎内部的秘密”系列将带领读者从浅入深的学习探索推荐引擎的机制,实现方法,其中还涉及一些基本的优化方法,例如聚类和分类的应用。同时在理论讲解的基础上,还会结合Apac……JohnCJay:给年青设计师们的十条经验教训下面十条内容的标题原本是《10LessonsforYoungDesigners》,是JohnCJay给年青设计师们的十条经验教训,不过对所有正常的年青人都有帮助,和设计师职业并……无处不设计,有木有。在如今这个泛设计的时代,设计也逐渐从一个艺术门类向生活形态过渡,因此总会遇到很多尴尬局面。比如有品牌爱好者和你谈最新的时尚资讯,比如前几天有个学公关的朋友自己画了个标志草稿让你……32套免费的网页、移动设备UI元素和模板对于项目管理,良好的时间安排和组织是必不可少的。以网页设计为例,当你想准时交付一个项目时,有几个时间因素需要你考虑。如果你能够有效地利用时间,可以肯定你将能按时甚至提前完成你的……任务流程产品设计的骨架我曾经接触过这么一款电子商务类产品:功能庞大、业务逻辑复杂,但需求文档详细、考虑细密周全。开发过后产品也被证明确实可以使用,没有什么bug,当时就准备马上上线了。然而就在这时,……小屏幕,大世界;“Next”背后的秘密翻页控件在很多手机端产品中属于容易被忽视但又不可或缺的一部分,今天就手机端产品翻页控件的分类和使用谈谈自己一些粗浅的看法。在手机端产品中,翻页控件的展示形式五花八门;以所……打造产品气质or抢占市场先机?“豆瓣的用户就一定比人人的用户有素养吗?”如果在之前我肯定说“屁话”,放在现在,我会犹豫点“可能吧”。这几天都当厨娘外加关注日本地震了,看到豆瓣上说某论坛盖楼到84……从裸眼3D到三维信息架构关于Nintendo3DS今年2月25日Nintendo3DS正式发卖了!这对所有的小N党来说都是一个振奋人心的消息相信速度快的同学已经入手新主机了吧!3……精益用户体验(UX):摆脱只注重结果的工作BJeffGSmashingMagazine。com翻译编辑:DamnDigital,(转载请说明翻译来源,尊……关于注册时输入密码的那点事儿在微博上看到和菜头爆料关于淘宝2012的彩蛋,好奇试了。首先彩蛋确实是有的,同时也发现这个十分有趣和值得思考的问题。ps。此篇博客仅是本着对问题本身的兴趣。你懂的。为什么……手机游戏设计初体验嗨大家好,好久没有做分享了,从毕业到现在一直在腾讯负责手机端休闲小游戏项目,陆陆续续做了3款游戏项目。感触颇多,这里很有幸的和大家分享一下我做手机类的休闲小游戏的一些心路历程和……简洁之繁如果一件事情很简单,那么就很容易去理解或者去做。但是达芬奇说过”Simplicityistheultimatesophistication”。将一个网站的页面做到很简单很难,尤……
页面中不能承受之多重引导如何处理?移动设计之视觉设计APPUI结构:用户引导提示在这个火热的8月,这3种网页设计正流行设计师进阶笔记图形立体化的多维度讨论优化B2B网站体验的10个最佳实践(上)怎样平衡好页面布局与屏幕分辨率?如何构建系统化交互设计自查体系?用户与设计师的利益矛盾QQ官网页面滚动交互设计网易资深设计师:如何提升设计思维?5个设计策略,让产品拥有更好的用户体验
周公解梦:梦见车上拉着死人遗嘱或遗赠抚养协议有冲突怎么办关于混沌的造句美邑宰令人激动的运动会作文总会有朵玫瑰属于您医院药房工作总结犯罪式屠杀!葡萄牙世界杯6球血洗瑞士,超新星一战成名,C罗笑夏日柠檬汁水减肥法清爽美白又能燃脂瘦身奔腾G620支持双显示兼容吗公司注册资本到期不认缴会怎样?林草科普这里是中国鹤湖升金湖

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找作文动态热点娱乐育儿情感教程科技体育养生教案探索美文旅游财经日志励志范文论文时尚保健游戏护肤业界