推荐算法--总结

1、推荐算法

推荐系统的出现

  随着互联网的发展,人们正处于一个信息爆炸的时代。相比于过去的信息匮乏,面对现阶段海量的信息数据,对信息的筛选和过滤成为了衡量一个系统好坏的重要指标。一个具有良好用户体验的系统,会将海量信息进行筛选、过滤,将用户最关注最感兴趣的信息展现在用户面前。这大大增加了系统工作的效率,也节省了用户筛选信息的时间。

  搜索引擎的出现在一定程度上解决了信息筛选问题,但还远远不够。搜索引擎需要用户主动提供关键词来对海量信息进行筛选。当用户无法准确描述自己的需求时,搜索引擎的筛选效果将大打折扣,而用户将自己的需求和意图转化成关键词的过程本身就是一个并不轻松的过程。

  在此背景下,推荐系统出现了,推荐系统的任务就是解决上述的问题,联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对他感兴趣的人群中,从而实现信息提供商与用户的双赢。

 


推荐算法大致可以分为三类:基于内容的推荐算法、协同过滤推荐算法和基于知识的推荐算法。
基于内容的推荐算法,原理是用户喜欢和自己关注过的Item在内容上类似的Item,比如你看了哈利波特I,基于内容的推荐算法发现哈利波特II-VI,与你以前观看的在内容上面(共有很多关键词)有很大关联性,就把后者推荐给你,这种方法可以避免Item的冷启动问题(冷启动:如果一个Item从没有被关注过,其他推荐算法则很少会去推荐,但是基于内容的推荐算法可以分析Item之间的关系,实现推荐),弊端在于推荐的Item可能会重复,典型的就是新闻推荐,如果你看了一则关于MH370的新闻,很可能推荐的新闻和你浏览过的,内容一致;另外一个弊端则是对于一些多媒体的推荐(比如音乐、电影、图片等)由于很难提内容特征,则很难进行推荐,一种解决方式则是人工给这些Item打标签。
协同过滤算法,原理是用户喜欢那些具有相似兴趣的用户喜欢过的商品,比如你的朋友喜欢电影哈利波特I,那么就会推荐给你,这是最简单的基于用户的协同过滤算法(user-based collaboratIve filtering),还有一种是基于Item的协同过滤算法(item-based collaborative filtering),这两种方法都是将用户的所有数据读入到内存中进行运算的,因此成为Memory-based Collaborative Filtering,另一种则是Model-based collaborative filtering,包括Aspect Model,pLSA,LDA,聚类,SVD,Matrix Factorization等,这种方法训练过程比较长,但是训练完成后,推荐过程比较快。
最后一种方法是基于知识的推荐算法,也有人将这种方法归为基于内容的推荐,这种方法比较典型的是构建领域本体,或者是建立一定的规则,进行推荐。
混合推荐算法,则会融合以上方法,以加权或者串联、并联等方式尽心融合。
当然,推荐系统还包括很多方法,其实机器学习或者数据挖掘里面的方法,很多都可以应用在推荐系统中,比如说LR、GBDT、RF(这三种方法在一些电商推荐里面经常用到),社交网络里面的图结构等,都可以说是推荐方法。

推荐算法介绍

  1 基于人口统计学的推荐

  这是最为简单的一种推荐算法,它只是简单的根据系统用户的基本信息发现用户的相关程度,然后将相似用户喜爱的其他物品推荐给当前用户。

  

  系统首先会根据用户的属性建模,比如用户的年龄,性别,兴趣等信息。根据这些特征计算用户间的相似度。比如系统通过计算发现用户A和C比较相似。就会把A喜欢的物品推荐给C。

  优势:

  a 不需要历史数据,没有冷启动问题

  b 不依赖于物品的属性,因此其他领域的问题都可无缝接入。

  不足:

  算法比较粗糙,效果很难令人满意,只适合简单的推荐

 

  2 基于内容的推荐

  与上面的方法相类似,只不过这次的中心转到了物品本身。使用物品本身的相似度而不是用户的相似度。

  

  系统首先对物品(图中举电影的例子)的属性进行建模,图中用类型作为属性。在实际应用中,只根据类型显然过于粗糙,还需要考虑演员,导演等更多信息。通过相似度计算,发现电影A和C相似度较高,因为他们都属于爱情类。系统还会发现用户A喜欢电影A,由此得出结论,用户A很可能对电影C也感兴趣。于是将电影C推荐给A。

  优势:

  对用户兴趣可以很好的建模,并通过对物品属性维度的增加,获得更好的推荐精度

  不足:

  a 物品的属性有限,很难有效的得到更多数据

  b 物品相似度的衡量标准只考虑到了物品本身,有一定的片面性

  c 需要用户的物品的历史数据,有冷启动的问题

 

  3 协同过滤

  协同过滤是推荐算法中最经典最常用的,具体的思路我已经在之前的一篇文章中提到过,大家可以去看一下。

  这里只想介绍一下协同过滤中的方法和刚才提到方法的区别。

  大家都知道协同过滤分为基于用户的协同过滤和基于物品的协同过滤。那么他们和基于人口学统计的推荐和基于内容的推荐有什么区别和联系呢?下面简单介绍一下。

  基于用户的协同过滤——基于人口统计学的推荐

  基于用户的协同过滤推荐机制和基于人口统计学的推荐机制都是计算用户的相似度,并基于“邻居”用户群计算推荐,但它们所不同的是如何计算用户的相似度,基 于人口统计学的机制只考虑用户本身的特征,而基于用户的协同过滤机制可是在用户的历史偏好的数据上计算用户的相似度,它的基本假设是,喜欢类似物品的用户 可能有相同或者相似的口味和偏好。

  基于物品的协同过滤——基于内容的推荐

  基于项目的协同过滤推荐和基于内容的推荐其实都是基于物品相似度预测推荐,只是相似度计算的方法不一样,前者是从用户历史的偏好推断,而后者是基于物品本身的属性特征信息。

  协同过滤的优势:

  a 它不需要对物品或者用户进行严格的建模,而且不要求物品的描述是机器可理解的,所以这种方法也是领域无关的。

  b 这种方法计算出来的推荐是开放的,可以共用他人的经验,很好的支持用户发现潜在的兴趣偏好

  不足:

  a 方法的核心是基于历史数据,所以对新物品和新用户都有“冷启动”的问题。

  b 推荐的效果依赖于用户历史偏好数据的多少和准确性。

  c 在大部分的实现中,用户历史偏好是用稀疏矩阵进行存储的,而稀疏矩阵上的计算有些明显的问题,包括可能少部分人的错误偏好会对推荐的准确度有很大的影响等等。

  d 对于一些特殊品味的用户不能给予很好的推荐。

  e 由于以历史数据为基础,抓取和建模用户的偏好后,很难修改或者根据用户的使用演变,从而导致这个方法不够灵活。

      4 基于关联规则的推荐

基于关联规则的推荐更常见于电子商务系统中,并且也被证明行之有效。其实际的意义为购买了一些物品的用户更倾向于购买另一些物品。基于关联规则的推荐系统的首要目标是挖掘出关联规则,也就是那些同时被很多用户购买的物品集合,这些集合内的物品可以相互进行推荐。目前关联规则挖掘算法主要从AprioriFP-Growth两个算法发展演变而来。

基于关联规则的推荐系统一般转化率较高,因为当用户已经购买了频繁集合中的若干项目后,购买该频繁集合中其他项目的可能性更高。该机制的缺点在于:

l计算量较大,但是可以离线计算,因此影响不大。

l由于采用用户数据,不可避免的存在冷启动和稀疏性问题。

l存在热门项目容易被过度推荐的问题。



  5 混合推荐算法

  以上介绍的方法是推荐领域最常见的几种方法。但是可以看出,每个方法都不是完美的。因此实际应用中,向Amazon这样的系统都是混合使用各种推荐算法,各取所长。因此我们在使用时,也可以多考虑一下什么情况下更适合使用哪种算法,来提高我们系统的效率。

 

推荐系统的发展方向

  1 需要考虑在保证推荐准确性的同时增加推荐的多样性,使特殊喜好的用户得到推荐

  2 需要考虑用户对系统的实时反馈,更好的利用反馈数据强化推荐算法

  3 考虑时间,空间,任务等因素,来更好的完成推荐


2.推荐系统与广告投放


互联网上的主题广告推广(例如,百度推广,google adsense)的目标在于实现一个面向用户的个性化广告投放系统。通过把个性化推荐算法在广告投放中的应用,就实现了我们个性化广告投放的目标。那么,这种演变是如何实现的呢?

在互联网中,例如,百度,拥有大量的网页信息,而主题广告推广的对象不是用户而是某一类型的页面。通过类比,每种网页类型对应于推荐系统中的一个用户,而每一个广告就对应于推荐系统中的一个物品,网页类型(用户)对广告(物品)的评分则可以用该网页类型中投放广告时的点击情况来计算,这样就构成了一个user-item-rating的矩阵。也就是,通过协同过滤算法可以实现对不同类型的网页进行广告推荐。

此外,实际应用协同过滤算法来进行广告投放也存在一个些问题。例如,协同过滤中的“冷启动”问题,也就是新增广告条目的推荐需要额外考虑;同时,也需要考虑用户对广告的接受程度,广告库存率等问题。



3. 业界个性化推荐系统


3.1. Yahoo!Resarch - Web-ScaleRecommendation Systems

2011推荐系统论坛中,来自Yahoo!的Yehuda Koren分享了他对于互联网中推荐系统的经验。在
中,简单介绍了目前广泛流行的协同过滤推荐机制;另外分析了一些推荐系统中值得注意的一些问题:

lBias Matters

在实际的应用中,用户并不是随机地选择物品去打分,而是只选择那些和他们兴趣相关的物品打分,绝大多数用户往往忽略了去给那些没有兴趣的物品打分。Koren通过分析Netflix Prize数据,Koren发现用户对视频的评分变化中,Bias可以解释其中的33%,而个性化只能解释其中的10%,剩下的57%暂时还得不到解释。

lEliciting user feedback

Koren的目标是解决推荐系统的cold-start问题,例如,Yahoo Movie中,对于新用户,很难预测他们的喜好(对视频的评分)。那么,可以选一些视频让新用户打分,从而获取他们的兴趣数据。在此过程中,使用了决策树模型来引导用户评分,可以用尽量少的视频,最大程度地了解用户兴趣。

lEstimating confidence in recommendations

在推荐系统中,我们需要对被推荐物品的可信度进行估计,从而得出更为可信的物品来进行推荐。Koren在这里提出了基于概率的可信度计算方法,也就是根据对评分(用户对物品)的概率预测,然后利用熵,标准方差,或是Gini不纯度等概率分布来对物品可信度进行评估。

3.2. 淘宝推荐系统

淘宝推荐系统的目标就是要为各个产品提供商品,店铺,人,类目属性各种维度的推荐。它的核心就是以类目属性和社会属性为纽带,将人,商品和店铺建立起联系。


1.png





淘宝的宝贝推荐原则:

l基于内容的和关联规则

l全网优质宝贝算分

l根据推荐属性筛选TOP

l基于推荐属性的关联关系

l采用搜索引擎存储和检索优质宝贝

l加入个性化用户信息

根据用户的购买和收藏记录产生可推荐的关联规则。对优质宝贝的算分需要考虑商品的相关属性,包括描述,评价,名称,违规,收藏人气,累计销量,UV,以及PV等等。此外,推荐系统根据用户的浏览,收藏,购买行为以及反馈信息,在Hadoop上来计算用户带权重的标签,用于进行个性化推荐。

那么,淘宝是如何利用个性化推荐的结果呢?下图展示了淘宝基于个性化推荐的5W营销系统:



在个性化推荐之上,淘宝还实现了基于内容的广告投放。由于个性化推荐出来的物品是用户所感兴趣的,可以想象,基于此之上的广告投放也应该会行之有效。

众所周知,淘宝具有海量的数据和商品问题,这里列举了淘宝数据的一些参数:超过8亿种在线商品,100万产品,4万属性,等等。在淘宝实现推荐系统可能遇到的各种各样的难题,其中有:

l商品种类繁多,生命周期短,很难及时收集到足够多的点击或购买数据,这使得基于用户行为的推荐方法,比如基于物品的推荐方法,发挥空间有限。

l因为商品是由卖家而非网站登记的,数据的规范性差,这又给基于内容的推荐带来了很大的困难。

l8亿种商品中,重复的商品种类应该非常多,需要尽量避免推荐重复种类的商品给用户,但在数据规范性差、区分度差的情况下,如何归并重复商品种类,这本身也是个很大的难题。

l大多数推荐系统只需要考虑如何满足买家的需求,在淘宝,还要考虑卖家的需求。

3.3. 豆瓣的推荐引擎 - 豆瓣猜

豆瓣网在国内互联网行业美誉度很高,这是一家以帮助用户发现未知事物为己任的公司。它的“豆瓣猜”是一种个性化的推荐,其背后采用了基于用户的协同过滤技术。那么,豆瓣猜是如何向我们推荐产品的呢?

首先,确定什么样的产品适合推荐?豆瓣猜提出选择”具有媒体性的产品 (Media Product)“来进行推荐,即选择多样、口味很重要、单位成本不重要,同时能够广泛传播 (InformationCascade)的产品;接着在对真实的数据集进行定量分析后,进一步得出,应该是条目增长相对稳定、能够快速获得用户反馈,数据稀疏性与条目多样性、时效性比较平衡的产品,才是适合推荐的产品。

其次,豆瓣网的推荐引擎面对高成长性的挑战,通过降低存储空间,近似算法与分布式计算的设计,来实现对基于用户的协同过滤推荐系统的线性扩展。

最后,针对当前推荐系统面临的问题,包括倾向于给出平庸的推荐,有信息无结构,以及缺乏对用户的持续关注等黑盒推荐问题。豆瓣提出了分为 Prediction,Forecasting,Recommendation 三个阶段的下一代推荐系统,并探讨了一种下一代推荐引擎的构想——基于用户行为模型的、有记忆的、可进化的系统。

3.4. Hulu的个性化推荐

Hulu是一家美国的视频网站,它是由美国国家广播环球公司(NBC Universal)和福克斯广播公司(Fox)在20073月共同投资建立的。在美国,Hulu已是最受欢迎的视频网站之一。它拥有超过250个渠道合作伙伴,超过600个顶级广告客户,3千万的用户,3亿的视频,以及11亿的视频广告。广告是衡量视频网站成功与否的一个重要标准。事实证明,Hulu的广告效果非常好,若以每千人为单位对广告计费,Hulu的所得比电视台在黄金时段所得还高。那么,是什么让Hulu取得了这样的成功呢?

通过对视频和用户特点的分析,Hulu根据用户的个人信息,行为模型和反馈,设计出一个混合的个性化推荐系统。它包含了基于物品的协同过滤机制,基于内容的推荐,基于人口统计的推荐,从用户行为中提炼出来的主题模型,以及根据用户反馈信息对推荐系统的优化,等等。此个性化推荐系统也进而成为了一个产品,用于给用户推荐视频。这个产品通过问答的形式,与用户进行交互,获取用户的个人喜欢,进一步提高推荐的个性化。

Hulu把这种个性化推荐视频的思想放到了广告投放中,设计出了一套个性化广告推荐系统。那么,这种广告系统是如何实现个性化的呢?

lHulu的用户对广告拥有一定控制权,在某些视频中你可以根据自己的喜好选择相应的广告,或者选择在开头看一段电影预告片来抵消广告。

lHulu收集用户对广告的反馈意见(评分),例如,某个广告是否对收看用户有用?

l根据人口统计的信息,来投放广告。例如,分析Hulu用户的年龄,性别特征来同方不同的视频及广告。

l根据用户的行为模式,进一步增加广告投放的准确性。




  • 0
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值