推荐系统实践(R)

| Tags Reading  CS 

推荐系统实践

ISBN: 7115281580 READ: 2014-08-17 RATING: 7/10

最近对智能推荐,机器学习,数据挖掘等感兴趣,开始了新的征程。这是一个信息爆炸,熵增的时代,这就是搜索引擎和智能推荐存在的先决条件。 用户被淹没在大量的信息海洋里面,如何高效的寻找到自己感兴趣的资讯成为了信息时代需要解决的一个重要问题。

Amazon 为用户推荐相关的书籍:

Douban FM 为用户推荐相关的音乐:

Youtube 为用户推荐视频:

Twitter 为用户推荐好友:

Quora 为用户推荐感兴趣的话题:

从以上的截图中可以看到智能推荐系统已经被广泛应用在各个领域里。《推荐系统实践》一书中主要描述了“什么是推荐系统”,“推荐系统的应用”,“推荐系统的实现方式”这三个问题,以下是一些书摘。

1. 随着信息技术和互联网的发展,人们逐渐从信息匮乏的时代走入了信息过载(information overload)的时代。在这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战:对于信息消费者,从大量信息中找到自己感兴趣的信息是一件非常困难的事情;对于信息生产者,让自己生产的信息脱颖而出,受到广大用户的关注,也是一件非常困难的事情。推荐系统就是解决这一矛盾的重要工具。推荐系统的任务就是联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息生产者的双赢。

2. 从物品的角度出发,推荐系统可以更好地发掘物品的长尾(long tail)。

3. 解决信息过载的问题中代表性的解决方案是分类目录和搜索引擎。

4. 和搜索引擎不同的是,推荐系统不需要用户提供明确的需求,而是通过分析用户的历史行为给用户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需求的信息。

5. 推荐系统就是自动联系用户和物品的一种工具,它能够在信息过载的环境中帮助用户发现令他们感兴趣的信息,也能将信息推送给对它们感兴趣的用户。

6. 几乎所有的推荐系统应用都是由前台的展示页面、后台的日志系统以及推荐算法系统3部分构成的。

7. 在电影和视频网站中,个性化推荐系统也是一种重要的应用。它能够帮助用户在浩瀚的视频库中找到令他们感兴趣的视频。在该领域成功使用推荐系统的一家公司就是Netflix,它和亚马逊是推荐系统领域最具代表性的两家公司。

8. 个性化推荐的成功应用需要两个条件。第一是存在信息过载,因为如果用户可以很容易地从所有物品中找到喜欢的物品,就不需要个性化推荐了。第二是用户大部分时候没有特别明确的需求,因为用户如果有明确的需求,可以直接通过搜索引擎找到感兴趣的物品。

9. Pandora的算法主要基于内容,其音乐家和研究人员亲自听了上万首来自不同歌手的歌,然后对歌曲的不同特性(比如旋律、节奏、编曲和歌词等)进行标注,这些标注被称为音乐的基因。然后,Pandora会根据专家标注的基因计算歌曲的相似度,并给用户推荐和他之前喜欢的音乐在基因上相似的其他音乐。

10. 社交网络中的个性化推荐技术主要应用在3个方面: ◦利用用户的社交网络信息对用户进行个性化的物品推荐; ◦信息流的会话推荐; ◦给用户推荐好友。

11. 个性化阅读同样符合前面提出的需要个性化推荐的两个因素:首先,互联网上的文章非常多,用户面临信息过载的问题;其次,用户很多时候并没有必须看某篇具体文章的需求,他们只是想通过阅读特定领域的文章了解这些领域的动态。

12. Digg首先根据用户的Digg历史计算用户之间的兴趣相似度,然后给用户推荐和他兴趣相似的用户喜欢的文章。

13. 目前在文献中能够查到的第一个推荐系统Tapestry就是一个个性化邮件推荐系统,它通过分析用户阅读邮件的历史行为和习惯对新邮件进行重新排序,从而提高用户的工作效率。

14. 预测准确度是推荐系统领域的重要指标(没有之一)。

15. 某推测系统预测明天太阳将从东方升起,虽然预测准确率是100%,却是一种没有意义的预测。

16. 在推荐系统中,主要有3种评测推荐效果的实验方法,即离线实验(offline experiment)、用户调查(user study)和在线实验(online experiment)。

17. 推荐系统评测指标: 用户满意度; 预测准确度; 覆盖率(覆盖率(coverage)描述一个推荐系统对物品长尾的发掘能力); 多样性; 新颖性(如果推荐结果中物品的平均热门程度较低,那么推荐结果就可能有比较高的新颖性); 惊喜度; 信任度; 实时性; 健壮性; 商业目标;

18. 社会学领域有一个著名的马太效应,即所谓强者更强,弱者更弱的效应。如果一个系统会增大热门物品和非热门物品的流行度差距,让热门的物品更加热门,不热门的物品更加不热门,那么这个系统就有马太效应。比如,首页的热门排行榜就有马太效应。进

19. 提高推荐系统的信任度主要有两种方法。首先需要增加推荐系统的透明度(transparency),而增加推荐系统透明度的主要办法是提供推荐解释。只有让用户了解推荐系统的运行机制,让用户认同推荐系统的运行机制,才会提高用户对推荐系统的信任度。其次是考虑用户的社交网络信息,利用用户的好友信息给用户做推荐,并且用好友进行推荐解释。

20. 任何一个能带来利益的算法系统都会被人攻击,这方面最典型的例子就是搜索引擎。

21. 设计推荐系统时尽量使用代价比较高的用户行为。比如,如果有用户购买行为和用户浏览行为,那么主要应该使用用户购买行为,因为购买需要付费,所以攻击购买行为的代价远远大于攻击浏览行为。

22. 有一个超市人员发现很多人会同时购买啤酒和尿布,后来他们认为是很多妇女要在家照顾孩子,就让自己的丈夫去买尿布,而丈夫在买尿布的同时不忘买一下自己喜欢的啤酒,于是这两个风马牛不相及的东西就这么产生联系了。于是超市工作人员把啤酒和尿布放在了同一个货架上,结果这两种商品的销售量都明显上升了。

23. 基于用户行为分析的推荐算法是个性化推荐系统的重要算法,学术界一般将这种类型的算法称为协同过滤算法。顾名思义,协同过滤就是指用户可以齐心协力,通过不断地和网站互动,使自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而越来越满足自己的需求。

24. 用户行为数据在网站上最简单的存在形式就是日志。网站在运行过程中都产生大量原始日志(raw log),并将其存储在文件系统中。很多互联网业务会把多种原始日志按照用户行为汇总成会话日志(session log),其中每个会话表示一次用户行为和对应的服务。比如,在搜索引擎和搜索广告系统中,服务会为每次查询生成一个展示日志(impression log),其中记录了查询和返回结果。如果用户点击了某个结果,这个点击信息会被服务器截获并存储在点击日志(click log)中。一个并行程序会周期性地归并展示日志和点击日志,得到的会话日志中每个消息是一个用户提交的查询、得到的结果以及点击。类似地,推荐系统和电子商务网站也会汇总原始日志生成描述用户行为的会话日志。会话日志通常存储在分布式数据仓库中,如支持离线分析的HadoopHive和支持在线分析的Google Dremel。这些日志记录了用户的各种行为,如在电子商务网站中这些行为主要包括网页浏览、购买、点击、评分和评论等。

25. 用户行为的一种表示方式:将一个用户行为表示为6部分,即产生行为的用户和行为的对象、行为的种类、产生行为的上下文、行为的内容和权重。

26. 互联网上的很多数据分布都满足一种称为Power Law的分布,这个分布在互联网领域也称长尾分布。

27. 基于用户的协同过滤算法(user-based collaborative filtering)是推荐系统中最古老的算法。在一个在线个性化推荐系统中,当一个用户A需要个性化推荐时,可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户A没有听说过的物品推荐给A。这种方法称为基于用户的协同过滤算法。包括两个步骤: (1) 找到和目标用户兴趣相似的用户集合。(关键就是计算两个用户的兴趣相似度) (2) 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。

28. 基于物品的协同过滤(item-based collaborative filtering)算法是目前业界应用最多的算法。无论是亚马逊网,还是Netflix、Hulu、YouTube,其推荐算法的基础都是该算法。主要分为两步: (1) 计算物品之间的相似度。 (2) 根据物品的相似度和用户的历史行为给用户生成推荐列表。

29. 将用户行为表示为二分图模型后,接着的任务就是在二分图上给用户进行个性化推荐。如果将个性化推荐算法放到二分图模型上,那么给用户u推荐物品的任务就可以转化为度量用户顶点vu和与vu没有边直接相连的物品节点在图上的相关性,相关性越高的物品在推荐列表中的权重就越高。

30. 推荐系统冷启动问题:用户冷启动;物品冷启动;系统冷启动。 解决方案:提供非个性化的推荐,如热门排行榜;利用用户注册时提供的年龄、性别等数据做粗粒度的个性化; 社交网络账号登陆,导入好友信息,推荐好友喜欢的物品; 登录时候对一些物品进行反馈,然后根据用户反馈给提供个性化推荐。

31. Pandora是一个给用户播放音乐的个性化电台应用。众所周知,计算音乐之间的相似度是比较困难的。首先,音乐是多媒体,如果从音频分析入手计算歌曲之间的相似度,则技术门槛很高,而且也很难计算得令人满意。其次,仅仅利用歌曲的专辑、歌手等属性信息很难获得令人满意的歌曲相似度表,因为一名歌手、一部专辑往往只有一两首好歌。为了解决这个问题,Pandora雇用了一批懂计算机的音乐人进行了一项称为音乐基因的项目。他们听了几万名歌手的歌,并对这些歌的各个维度进行标注。最终,他们使用了400多个特征(Pandora称这些特征为基因)。标注完所有的歌曲后,每首歌都可以表示为一个400维的向量,然后通过常见的向量相似度算法可以计算出歌曲的相似度。

32. Jinni设计了电影基因系统,让专家给电影进行标注。同时,Jinni也设计了让用户对基因进行反馈的界面,希望通过用户反馈不断改进电影基因系统。,在专家标记一定的样本后,Jinni会使用自然语言理解和机器学习技术,通过分析用户对电影的评论和电影的一些内容属性对电影(特别是新电影)进行自己的标记。通过专家和机器学习相结合的方法解决了系统冷启动问题。

<img src="http://media-cache-ak0.pinimg.com/originals/8c/6a/62/8c6a62dd5e5c3f93d1e26402aa059e28.jpg"  width="600" />

33. 推荐系统的目的是联系用户的兴趣和物品,这种联系需要依赖不同的媒介。

<img src="http://media-cache-ec0.pinimg.com/originals/5b/25/68/5b25681c48e1d0deb1968fe0b3d672ed.jpg"  width="600" />

34. 标签系统的最大优势在于可以发挥群体的智能,获得对物品内容信息比较准确的关键词描述,而准确的内容信息是提升个性化推荐系统性能的重要资源。

35. 用户打标签的原因:首先是社会维度,有些用户标注是给内容上传者使用的(便于上传者组织自己的信息),而有些用户标注是给广大用户使用的(便于帮助其他用户找到信息)。另一个维度是功能维度,有些标注用于更好地组织内容,方便用户将来的查找,而另一些标注用于传达某种信息,比如照片的拍摄时间和地点等。

36. 提高推荐结果的时间多样性需要分两步解决:首先,需要保证推荐系统能够在用户有了新的行为后及时调整推荐结果,使推荐结果满足用户最近的兴趣;其次,需要保证推荐系统在用户没有新的行为时也能够经常变化一下结果,具有一定的时间多样性。

37. Facebook和Twitter作为社交网站中的两个代表,它们其实代表了不同的社交网络结构。在Facebook里,人们的好友一般都是自己在现实社会中认识的人,比如亲戚、同学、同事等,而且Facebook中的好友关系是需要双方确认的。在Twitter里,人们的好友往往都是现实中自己不认识的,而只是出于对对方言论的兴趣而建立好友关系,好友关系也是单向的关注关系。以Facebook为代表的社交网络称为社交图谱(social graph),而以Twitter为代表的社交网络称为兴趣图谱(interest graph)。

38. 一般来说,有3种不同的社交网络数据:双向确认的社交网络数据,单向关注的社交网络数据,基于社区的社交网络数据。 社会化推荐之所以受到很多网站的重视,是缘于如下优点。好友推荐可以增加推荐的信任度,社交网络可以解决冷启动问题。

39. 六度原理讲的是社会中任意两个人都可以通过不超过6个人的路径相互认识,如果转化为图的术语,就是社交网络图的直径为6。

40. 一般来说,每个网站都会有一个UI系统,UI系统负责给用户展示网页并和用户交互。网站会通过日志系统将用户在UI上的各种各样的行为记录到用户行为日志中。日志可能存储在内存缓存里,也可能存储在数据库中,也可能存储在文件系统中。而推荐系统通过分析用户的行为日志,给用户生成推荐列表,最终展示到网站的界面上。

<img src="http://media-cache-ec0.pinimg.com/originals/77/5a/db/775adbde68fbf4b2bc0d8e54e55493ba.jpg"  width="600" />

41. “推荐系统十堂课”

确定你真的需要推荐系统;

确定商业目标和用户满意度之间的关系;

选择合适的开发人员;

忘记冷启动问题;

平衡数据和算法之间的关系;

找到相关的物品很容易,但是何时以何种方式将它们展现给用户是很困难的。不要为了推荐而推荐。

不要浪费时间计算相似兴趣的用户,可以直接利用网络数据。

需要不断地提升算法的扩展性;

选择合适的用户反馈方式;

设计合理的评测系统,时刻关注推荐系统各方面的性能。

相关资料:

Hulu

A Guide to Recommender Systems


Back     Next
comments powered by Disqus