《推荐系统实践》- 项亮

第1章 好的推荐系统

1.1  什么是推荐系统

推荐系统的基本任务是联系用户和物品,解决信息过载的问题;

推荐方式:

(1)社会化推荐(social recommendation):即让好友给自己推荐物品。

(2)基于内容的推荐 (content-based filtering):通过分析用户曾经数据进行推荐。

(3)基于协同过滤(collaborative filtering):通过他们的数据进行推荐。

1.2  个性化推荐系统的应用

1.2.1  电子商务:

亚马逊:亚马逊大概20~30的销售来自于推荐系统

个性化推荐列表-基于物品的推荐【根据买过的东西、根据好友关系进行推荐】、

相关推荐列表【同样买过的其他用户购买物品】;

1.2.2  电影和视频网站

netflix【根据看过的电影进行推荐】、YouTube

1.2.3  个性化音乐网络电台

    个性化推荐的成功应用需要两个条件。第一是存在信息过载,第二是用户大部分时候没有特别明确的需求

国外的Pondora【将歌曲特性进行标注,根据标准计算歌曲相似度,推荐相似度高的音乐】、

国内的豆瓣电台

1.2.4  社交网络

个性化推荐技术应用方面:

利用用户的社交网络信息对用户进行个性化的物品推荐

信息流的会话推荐【每个分享和它所有的评论称之为一个会话】

给用户推荐好友

FaceBook最宝贵的数据:用户直接的社交网络关系、用户的偏好信息

1.2.5  个性化阅读

Google Reader:用户关注感兴趣的人,可看关注用户的分享文章

Zite:收集用户对文章的偏好信息,分析用户反馈数据不停更新用户的个性化文章列表

Digg:根据用户历史计算用户直接的兴趣相似度,推荐兴趣相似的用户喜欢的文章

1.2.6  基于位置的服务

获取用户位置给推荐距离近且感兴趣的服务

1.2.7  个性化邮件

通过分析用户阅读邮件的历史行为和习惯对新邮件进行重新排序,从而提高用户工作效率

1.2.8  个性化广告

个性广告投放技术:

上下文广告:分析用户正在浏览的网页内容,投放相关广告

搜索广告:分析用户当前会话中的搜索记录,投放与搜索目的相关的广告

个性化展示广告:根据用户兴趣,对不同用户投放不同的展示广告【雅虎】

1.3  推荐系统评测

完整的推荐系统有3个参与方:用户、物品提供者和提供推荐系统的网站

1.3.1  推荐系统实验方法

1、离线实验:通过日志获取用户行为数据,生成标准数据集,在此进行预测

2、用户调查:直接询问用户

3、在线实验:AB测试

****

1.3.2  评测指标

1、用户满意度

2、预测准确度

3、覆盖率

4、多样性

5、新颖性质

6、惊喜度

7、信任度

8、实时性

9、健壮性

10、商业目标

11、总结

1.3.3  评测维度

用户维度、物品维度、时间维度

第2章 利用用户行为数据

2.1  用户行为数据简介

把多种原始日志按照用户行为汇总成会话日志,汇总后生成描述用户用户行为的会话日志,记录了用户的各种行为。

用户行为在个性化推荐中分为:显性反馈行为、隐形反馈行为

数据集:无上下文信息的隐性反馈数据集、无上下文信息的显性反馈数据集、有上下文的隐形反馈数据集、有上下文的显性反馈数据集

2.2  用户行为分析

2.2.1  用户活跃度和物品流行度的分布

数据分布满足成为Power Law的分布,也称长尾分布,出现频率与在热门排行榜中排名的常数次幂成反比,表明在英文中大部分次的词频其实很低,只有很少的词被经常使用

****

2.2.2  用户活跃度和物品流行度的关系

一般认为,新用户倾向于浏览热门的物品,老用户会逐渐开始浏览冷门的物品

2.3  实验设计和算法评测

2.3.1  数据集:评分数据集

2.3.2  实验设计:

2.3.3  评测指标

2.4  基于邻域的算法

**2.4.1  基于用户的协同过滤算法:**给用户推荐和他想去相似的其他用户喜欢的物品

(1)找到和目标用户兴趣相似的用户集合

(2)找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户

**2.4.2  基于物品的协同过滤算法:**给用户推荐和他之前喜欢的物品相似的物品  ****

(1)计算物品之间的相似度

(2)根据物品的相似度和用户的历史行为给用户生成推荐列表

2.4.3  UserCF和ItemCF的综合比较

UserCF:给用户推荐和他有共同兴趣爱好的用户喜欢的物品,更社会化

ItemCF:着重维系用户的历史兴趣,更个性化

****

2.5  隐语义模型

2.5.1  基础算法

分析技术来自云对用户行为的统计,

2.5.2  基于LFM的实际系统的例子

2.5.3  LFM和基于邻域的方法的比较

LFM是一种基于机器学习的方法,具有比较好的理论基础,生成推荐列表时,需计算用户对所有物品的兴趣权重,不适合用于物品数非常庞大的系统,不支持在线实时推荐

基于邻域(如UserCF、ItemCF)方法:需要维护一张离线的相关表,支持很好的推荐解释

2.6  基于图的模型

2.6.1  用户行为数据的二分图表示

将用户行为数据表示成图的形式,由一系列二元组组成的

2.6.2  基于图的推荐算法

推荐物品任务可转化为度量用户顶点之间没有直接相连的物品节点在图上的相关性,相关性越高的物品在推荐列表中的权重就越高。

第3章 推荐系统冷启动问题

3.1  冷启动问题简介

冷启动问题类型:

用户冷启动:新用户无法获取到兴趣,无法进行个性化推荐

物品冷启动:新物品推荐

系统冷启动:新开发网站上进行设计个性化推荐系统

解决方式:

提供非个性化的推荐

利用用户的社交网络账号登录(需用户授权)

要求用户登录时对一些物品进行反馈

新加入物品可以利用内容信息,推荐给喜欢过类型物品的用户

系统冷启动时刻引入专家只是,通过一定搞笑方式建立起物品的相关度

3.2  利用用户注册信息

(1)获取用户的注册信息

(2)根据用户注册信息对用户分类

(3)给用户推荐他所属分类中用户喜欢的物品

3.3  选择合适的物品启动用户的兴趣

第一次访问推荐时,给用户提供一些物品,让用户反馈对这些物品的兴趣,根据反馈记性推荐,系统

提供物品需要:

加油代表性和区分性

启动物品集合需要多样性

3.4  利用物品的内容信息

制品冷启动需要解决的问题是如何将新加入的物品推荐给对它感兴趣的用户,这在新闻网站等时效性很强的网站中非常重要,

UserCF算法对物品冷启动并不非常敏感,UserCF算法需要解决第一推送力的问题:第一个用户从哪里发现新物品

ItemCF算法的原理是给用户推荐和他之前喜欢的物品相似的物品,新物品添加时,内存中的物品相关表不会存在此记录,所以无法推荐新物品

物品内容可通过向量空间模型表示,该模型会把物品表示成一个关键词向量,以及一些其他的重要词组成一个关键词集合,对关键词排名形成一个关键词向量。

3.5  发挥专家的作用

在推荐系统建立时,为了让用户得到比较好的体验,很多系统利用专家进行标注;通过专家和机器学习相结的方法解决系统系统冷制动的问题。

第4章 利用用户标签数据

通过一些特征联系用户和物品,给用户推荐哪些具有用户喜欢的特征的物品。

4.1  UGC标签系统的代表应用

4.1.1  Delicious

允许用户给互联网上的每个网页打标签,从而通过标签重新组织整个互联网。

4.1.2  CiteULike

一个著名的论文标签网站,允许研究人员提交或者收藏自己感兴趣的论文并且给论文打上标签。

4.1.3  Last.fm

音乐网站,用过分析用户的听歌行为预测用户对音乐的兴趣,从而给用户推荐个性化的音乐。

4.1.4  豆瓣

允许用户对图书和电影打标签,借此获取图书或电影内容信息和语义,并用这种信息改善推荐效果。

4.1.5  Hulu

是美国著名的视频网站,引入用户标签对电视剧和电影进行标记。

4.2  标签系统中的推荐问题

4.2.1  用户为什么进行标注

(1)社会维度:给内容上传者使用的-便于上传者组织自己的信息;给广大用户使用的-便与帮助其他用户找到信息;

(2)功能维度:用户更好的传达信息,方便用户将来的查找;用于传达某些信息,如照片的拍摄地点和时间等。

4.2.2  用户如何打标签

标签的流行度分布也呈现非常经典的长尾分布。

4.2.3  用户打什么样的标签

表名物品是什么、种类、谁拥有、用户观点、用户相关标签、用户相关任务

4.3  基于标签的推荐系统

4.3.1  实验设置

将数据集随机分成10份,分割的键值是用户和物品,

4.3.2  一个最简单的算法

统计每个用户最常用标签、每个标签最常用在什么物品上、找到某用户最常用的标签然后找到具有此标签的最热门物品,将物品推荐给此用户

4.3.3  算法的改进

1、TF-TDF :热门物品推荐给用户,降低推荐结果的新颖性,借鉴TF-TDF的思想,对算法进行改进

2、数据的稀疏性:

3、标签清理

4.3.4  基于图的推荐算法

将用户打标签的行为表示到一张图上,3种元素为用户、物品和标签

4.3.5  基于标签的推荐解释

最大的好处是利用标签做推荐解释;让用户觉得标签云是有道理的,从某个标签推荐出某些物品也是有道理的。

4.4  给用户推荐标签

4.4.1  为什么要给用户推荐标签

(1)方便用户输入标签

(2)提高标签质量

4.4.2  如何给用户推荐标签

(1)推荐整个系统里最热门的标签

(2)给用户推荐物品i上最热门的标签

(3)给用户推荐他自己经常使用的标签

(4)前面两种的结合:通过系数将上面的推荐结果线性加权

4.4.3  实验设置

4.4.4  基于图的标签推荐算法

4.5  扩展阅读

第5章 利用上下文信息

5.1  时间上下文信息

5.1.1  时间效应简介

(1)用户兴趣是变化的,随着年龄、环境、等的变化会有所变化

(2)物品也是有生命周期的,如新闻的生命周期短,电影的生命周期长

(3)季节效应:反应了时间对用户兴趣的变化

5.1.2  时间效应举例

5.1.3  系统时间特性的分析

给定时间信息后,推荐系统从一个静态系统变成了一个时变的系统,用户数据也变成了时间序列

(1)数据集每天独立用户数的增长情况

(2)系统的物品变化情况

(3)用户访问情况

5.1.4  推荐系统的实时性

需要实时响应用户新的行为,让推荐列表不断变化,满足用户的兴趣

5.1.5  推荐算法的时间多样性

推荐系统每天推荐的结果变化被定义为推荐系统的时间多样性;首先保证系统能够在用户有了新的行为之后及时调整推荐结果,其实需要保证在用户没有新的行为时也能够经常变化一下结果,具有时间多样性。

5.1.6  时间上下文推荐算法

1、最近最热门

2、时间上下文相关的ItemCF算法:物品相似度、在线推荐

3、时间上下文相关的UserCF算法:用户兴趣相似度、相似兴趣用户的最近行为

5.1.7  时间段图模型

5.1.8  离线实验

5.2  地点上下文信息

地点作为一种重要的空间特征,也是一种重要的上下文信息。不同地区的用户兴趣不同,用户到了不同的地方,兴趣也会有所不同。入到了某个地方,希望寻找美食的时候,最先考虑的因素可能就是距离。

基于位置的推荐算法:

该系统首先将物品分为2类,一类是有空间属性的,如餐馆、商店;  一类是无空间属性的,如图书或电影;用户也分为有无空间属性的 。

LARS通过研究数据集,发现用户兴趣和地点相关的两种特征:

(1)兴趣本地化:不同地方的用户存在着很大的差别

(2)活动本地化:一个用户往往在附近的地区活动

5.3  扩展阅读

第6章 利用社交网络数据

6.1  获取社交网络数据的途径

6.1.1  电子邮件

可通过电子邮件号码的后缀获取信息,如同一家公司。

6.1.2  用户注册信息

注册时填写过的一些注入公司、学校等信息。

6.1.3  用户的位置数据

位置信息是反应用户社交关系的数据,如同一栋宿舍楼或者同一家公司的用户可能有友好关系。

6.1.4  论坛和讨论组

在同一个论坛或讨论组说明两个人之间的熟悉成都或者兴趣相似。

6.1.5  即时聊天工具

聊天工具的联系人列表和列表分组信息可知道用户的社交网络关系,以及通过用户关系之间聊天的频繁程度可以知道用户之间熟悉程度。

6.1.6  社交网站

用户可在社交网站上创建一个公开的页面介绍自己,且社交网站自然的减轻了信息过载问题,可通过好友给自己过滤信息,更好的找到和自己兴趣相似的好友,更快的找到自己感兴趣的内容。

1)社会图谱和兴趣图鉴

2)

6.2  社交网络数据简介

社交网络定义了用户之间的联系,因此可以用图定义社交网络,社交网络分为:

双向确认的社交网络数据

单向关注的社交网络数据

基于社区的社交网络数据

社交网络中用户的入度和出度的分布也是满足长尾分布的。

6.3  基于社交网络的推荐

社会化推荐的优点:

好友推荐可以增加推荐的信任度

社交网络可以解决冷启动的问题

6.3.1  基于邻域的社会化推荐算法

给用户推荐好友喜欢的物品集合。

6.3.2  基于图的社会化推荐算法

用户的社交网络可表现为社交网络图,

6.3.3  实际系统中的社会化推荐算法

(1)两处截断,只拿出和用户相似度最高的集合,并不拿出用户的所有好友

(2)重新设计数据库:如微博,发送一条微博,所有关注了此人的人员的消息队列都需要更新

6.3.4  社会化推荐系统和协同过滤推荐系统

研究人员利用用户调查和在线实验的方式评测社会化推荐系统

6.3.5  信息流推荐

主要是针对Twitter和Facebook这两种社交网站。信息流的个性化推荐要解决的问题就是如何进一步帮助用户从信息墙上挑选有用的信息

6.4  给用户推荐好友

目的是根据现有的好友、用户的行为记录给用户推荐新的好友,从而增加整个社交网络的稠密程度和社交网站的用户的活跃度。

6.4.1  基于内容的匹配

给用户推荐有相似内容属性的用户作为好友

6.4.2  基于共同兴趣的好友推荐

给用户推荐有共同兴趣的其他用户作为好友

6.4.3  基于社交网络图的好友推荐

基于现有的社交网络给用户推荐新的好友,如给用户推荐好友的好友。

6.4.4  基于用户调查的好友推荐算法对比

6.5  扩展阅读

六度原理:社会中任意两个人都可以通过不超过6个人的路径相互认识,

第7章 推荐系统实例

7.1  外围架构

推荐系统依赖于界面展示和用户行为数据,如何收集和存储用户数据:

数据收集和存储:根据数据的规模和是否需要实时存取,不同的行为数据将被存储在不同的媒介中。

7.2  推荐系统架构

基于特征的推荐系统架构

(1)人口统计学特征

(2)用户的行为特征

(3)用户的饿话题特征

7.3  推荐引擎的架构

7.3.1  生成用户特征向量

(1)用户的注册信息中可以提取出来的信息,主要包括用户的人口统计学特征

(2)用户行为中计算中来的

用户行为计算中需要考虑以下因素:用户行为的种类、用户行为产生的时间、用户行为的次数、物品的热门

7.3.2  特征?物品相关推荐

7.3.3  过滤模块

(1)用户已经产生过行为物品

(2)候选物品以外的物品

(3)某些质量很差的物品

7.3.4  排名模块

(1)新颖性排名

(2)多样性

(3)时间多样性

(4)用户反馈

7.4  扩展阅读

第8章 评分预测问题

8.1  离线实验方法

8.2  评分预测算法

8.2.1  平均值

8.2.2  基于邻域的方法

8.2.3  隐语义模型与矩阵分解模型

8.2.4  加入时间信息

8.2.5  模型融合

8.2.6  Netflix Prize的相关实验结果

10条经验和教训

1、确定你真的需要推荐系统,不要为了做推荐系统而做推荐系统,应该从用户的角度出发;

2、确定商业目标和用户满意度之间的关系。对用户好的推荐系统不代表商业上有用的推荐系统,用户满意度总是符合企业的长期利益。

3、选择合适的开发人员。

4、忘记冷启动的问题。不断地创新。

5、平衡数据和算法之间的关系。使用正确的用户数据对推荐系统至关重要。

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

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

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

9、选择合适的用户反馈方式。

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

猜你喜欢

转载自blog.csdn.net/weixin_44934104/article/details/130094249