推荐系统理论实现
第一章 好的推荐系统
1.1 什么是推荐系统
一、推荐系统:
推荐系统的主要任务就是联系用户和信息。一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前。从而实现信息消费者和信息生产者的双赢。
推荐系统可以更好地发现物品的长尾。
推荐系统通过发掘用户对的行为,找到用户的个性化需求,从而将长尾商品准确的推荐给需要它的用户,帮助用户找到那些她们感兴趣但很难发现的商品。
推荐系统就是自动联系用户和物品的一种工具,它能够在信息过载的环境中帮助用户发现令他们感兴趣的信息。也能够将信息推送给对它们感兴趣的用户。
二、 搜索引擎与推荐系统
推荐系统和搜索引擎对于用户来说是两个互补的工具。搜索引擎满足了用户具有明确目的是的主动查找需求;而推荐系统能够在用户没有明确目的时候帮助它们发现感兴趣的新内容。
1.2 个性化推荐系统的引用
个性化推荐系统在推荐网站的作用就是通过分析大量用户行为日志,给不同的用户提供个性化页面展示,来提高网络的点击率和转化率。
但总的来说,几乎所有推荐系统应用都是由前台的展示页面、后台的日志页面以及推荐系统3部分组成。
1.2.1 电子商务
亚马逊: ------推荐系统之王
一、 个性化商品推荐列表
基于物品的推荐系统
基于用户的推荐系统
二、 相关商品推荐列表
重要应用:打包销售
两种相关商品列表:
1 包含购买了这个商品的用户也经常购买的其他商品;
2 包含浏览过这个商品的用户经常购买的其他商品。
1.2.2 电影和视频网站
Netflix
基于物品的推荐算法,即给用户推荐和他们曾经喜欢的电影和相似的电影。
1.2.3 个性化音乐网络电台
Pandora; Last.fm; 豆瓣电台
个性化推荐成功的两个条件:
(1) 存在信息过载
(2) 用户大部分时候没有特别明确的需求
1.2.4 社交网络
Facebook : 用户之间的社交网络关系; 用户的偏好信息
1.2.5 个性化阅读
Zite Flipboard
1.2.6 基于位置的服务
Foursquare
1.2.7 个性化邮件
谷歌的优先级收件箱功能
1.2.8 个性化广告
上下文广告 搜索广告 个性化展示广告
1.3推荐系统评测
完整的推荐系统:一个完整的推荐系统一般存在3个参与方:用户、物品提供者和提供推荐系统的平台。
评价一个推荐算法时,需要考虑三方利益,一个好的推荐系统是能够令三方共赢的系统。
预测准确度是推荐系统的重要指标。这个指标的好处是:它可以比较容易的通过离线方式计算出来,从而方便研究人员快速评价和选择不同的推荐算法。
但是,很多研究表明,一个准确的预测并不代表好的推荐。所以,好的推荐系统不仅能够准确预测用户的行为,而且能够扩展用户的视野,帮助用户发现那些他可能会感兴趣,但却不那么容易发现的东西。
1.3.1 推荐系统实验方法
1 离线实验
优点:不需要有对实际系统用的控制权;
不需要用户参与实验
深度快,可以大量测试算法
缺点:无法计算商业上关心的指标,eg: CTR CVR
离线实验的指标和商业指标存在差距。
2 用户调查
在离线算法上线测试之前的一个实验步骤
优点:
可以获取很多体现用户主观感受的指标,相对在线实验风险很低,出现错误后,容易弥补。
缺点:
招募测试用户代价较大,很难组织大规模的测试用户,因此会使统计意义不足。
设计双盲实验很困难,而且很多用户在测试环境下和真实环境下的行为不一致。
3 在线实验
AB测试: 通过一定的规则将用户随机的分成几组。并对不同的组采用不同的算法。然后通过不同组用户的各种不同的评测指标比较不同的算法。
切分流量是AB测试中的关键。
1.3.2 评测指标
1 用户满意度
2 预测准确度
评分预测
TopN推荐
3 覆盖率
指标:信息熵 基尼系数
4 多样性
5 新颖性
6 惊喜度
如果推荐结果和用户的历史兴趣一点关系也没有,但是用户很满意。就说明推荐结果的惊喜度很高。
7 信任度
8 实时性
9 健壮性
10 商业目标
第二章 利用用户行为数据
2.1 用户行为数据简介
用户行为数据在网站上最简单的存在形式就是日志。
用户行为在个性化推荐系统中一般分为两种:显性反馈行为和隐性反馈行为。显性反馈行为:喜欢/不喜欢
隐性反馈行为:用户浏览网页
具有代表性的数据集:
1 无上下文信息的隐性反馈信息
用户ID 物品ID
2 无上下文的显性反馈信息
用户ID 物品ID 用户对物品评分
3 有上下文信息的隐性反馈信息
用户ID 物品ID 用户对物品产生的时间戳
4 有上下文的显性反馈信息
用户ID 物品ID 用户对物品评分 用户对物品产生的时间戳
2.2 用户行为分析
2.2.1 用户活跃度和物品流行度分析
f(x) = a x k ---------- 长尾分布
互联网上从歌曲和软件的下载、网页的点击到网上店铺的销售,都呈现长尾分布的特征。长尾分布也与对流行事物进行统计排名的“排行榜”文化有关。网上音乐资料库容量巨大,下载方式非常便捷。把曲目按照下载量排序,可近似地得到一条递减曲线。在曲线的头部,热门曲目被大量下载。接下来,随着流行程度的降低(对应为序号的增大),曲线徒然下降。但有趣的是,在尾部曲线并没有迅速坠落到零,而是极其缓慢地贴近于横轴,粗看上去几乎与横轴平行延伸(这说明很不热门的曲日仍然保持着一定的下载率)。这种特殊的排序(即排名)与下载量之间的对应关系就是长尾分布。
2.2.2 用户活跃度和物品流行的关系
MovieLens表明用户越活跃,越倾向于浏览冷门的物品。
仅仅基于用户行为数据设计的推荐算法一般称为:协同过滤算法
基于用户的协同过滤;
基于物品的协同过滤。
2.3 实验设计和算法评测
2.3.3 评测指标
召回率:用户喜欢的物品里面有多少被推荐;
准确率:被推荐的物品里面有多少是用户喜欢的。
覆盖率:表示最终的推荐列表中包含多大比例的物品;反映了推荐算法挖掘长尾的能力。
新颖度:这里用推荐列表中的平均流行度衡量。
2.4 基于邻域的算法
1 基于用户的协同过滤算法:
(1) 找到和目标用户兴趣相似的用户集合;
(2) 找到这个集合中用户喜欢的,且目标用户没有听说过的物品推荐给目标用户;
Mostpopular 算法的准确率和召回率远远高于Random算法,但它的覆盖率非常低,结果非常热门。
可见,Random算法的准确率和召回率很低,但覆盖率很高,结果平均流行度很低。
缺点:随着网站用户数目越来越大,计算用户兴趣相似度矩阵将越来越困难,其运算时间复杂度和空间复杂度的增长和用户数目的增长近似于平方关系。
其次,基于用户的协同过滤算法很难对推荐结果做出解释。
2 基于物品的协同过滤算法
(1)计算物品之间的相似度
(2)根据物品的相似度和用户的历史行为给用户生成推荐列表。
优势:可以提供推荐解释。
用户活跃度相似问题:活跃用户对物品相似度的贡献应该小于不活跃的用户。
物品相似度的归一化:如果将ItemCF的相似度矩阵按最大值归一化,可以提高推荐的准确率。避免哈里波特问题。
2.5 隐语义模型 LFM
雅虎
推荐系统的用户行为分为显性反馈和隐性反馈。
对于一个用户,从它没有过行为的物品中采样出一些物品作为负样本。但采样时,保证每个用户的政府样本数目得当。
但是LFM在实际应用中很难实现实时的推荐。
2.6 基于图的模型
2.6.1 用户行为数据的二分图表示
图中定点的相关性主要取决于下面3个因素:
(1)两个顶点之间的路径数;
(2) 两个顶点之间的路径长度;
(3) 两个顶点之间的路径经过的顶点。
而相关性高的一对顶点之间会有如下特征:
(1)两个顶点之间会有很多路径相连;
(2)连接两个顶点之间的路径长度都比较短;
(3) 连接两个顶点之间的路径不会进经过出度比较大的顶点。
第3章推荐系统冷启动问题
3.1 冷启动问题简介
(1) 冷启动问题分类
用户冷启动
物品冷启动
系统冷启动
(2)主要解决方案
提供非个性化的推荐;
利用用户注册信息;
利用用户社交信息;
3.2利用用户注册信息
(1)用户注册信息分为3类:
人口统计信息学;
用户兴趣描述;
从其他网站导入的用户站外行为数据;
利用用户人口统计学特征后的推荐结果好于随机推荐的结果(除热门推荐排行榜外)。
(2)基于用户注册信息的个性化推荐流程
获取用户注册信息;
根据用户的注册信息对用户分类;
给用户推荐他所属分类中用户喜欢的物品。
其核心问题是:计算每种特征的用户喜欢的物品。
利用人口统计学特征越多,越能准确地预测用户兴趣。
3.3 选择合适的物品启动用户兴趣
解决冷启动的另一个方法是在新用户第一次访问推荐系统时,不立即给用户展示推荐结果,而是给用户提供一些物品,让用户反馈她们对这些物品的兴趣,然后根据用户反馈给提出个性化推荐。
(1)能够启动用户兴趣的物品需要以下几个特点:
比较热门;
具有代表性和区分性;
启动物品集合需要有多样性。
(2)Nsdav Golbandi的算法类似于一个决策树,对于物品进行分类。
3.4 利用物品的内容信息
利用物品的内容信息,将新物品先投放给曾经喜欢过过和它内容相似的其他物品的用户。
e.g.: LDA 作为一种生成模型,对一篇文档产生的过程进行了建模。
LDA中有3种元素: 文档、 话题和词语
3.5 发挥专家的作用
e.g. 个性化网络电台 Pandora 电影推荐网站Jinni
基因包括如下分类:
心情; 剧情; 类别; 时间; 地点; 观众; 获奖; 风格; 态度; 画面; 标记
Jinni通过专家和机器学习相结合的方法解决了系统冷启动的问题。
第4章利用用户标签数据
标签应用分为两种:
一种是让作者或专家给物品打标签;
另外一种是让普通用户给物品打标签,即UGC
UGC的标签系统是一种表示用户兴趣和物品的重要方式。标签一方面描述了用户的兴趣,另一方面描述了物品的语义,从而将用户与物品联系起来。
4.1 UGC标签系统的代表应用
4.1.1 Delicious
Delicious是标签系统的开山鼻祖,它允许用户给互联网上的每个网页打标签,从而通过标签重新组织整个互联网。
4.1.2 CiteULike
论文书签网站 允许研究人员提交或者收藏自己感兴趣的文章
4.1.3 Last.fm
证明的音乐网站 让用户用标签标记音乐和歌手
4.1.4 豆瓣
评论和社交网站
允许用户对图书和电影打标签,借此获得图书和电影的内容信息和语义。
4.1.5 Huhu
美国著名的视频网站
让用户对电视剧和电影进行标记。
标签系统最大的优势在于可以发挥群体的智能,获得对物品内容信息比较准确的关键词描述,而准确的内容信息是提升个性化推荐系统性能的重要资源。
4.2 标签系统中的推荐问题
标签系统中的推荐系统主要有以下两个:
(1) 基于标签的推荐:
如何利用用户打标签的行为为其推荐物品;
(2) 标签推荐
如何在用户给物品打标签时为其推荐合适该物品的标签。
4.2.1 用户为什么进行标注
Morgan Ames从两个维度探讨了用户为什么标注的问题:
(1) 社会维度
有些用户标注是给内容的上传者使用的,而有些用户标注是给广大用户使用的。
(2)功能维度
有些标注用于更好的组织内容,方便用户将来查找,而另外一些标注用于传达某种信息。
4.2.2 用户如何打标签
我们定义一个标签被一个用户使用在一个物品上,它的流向度就加1;
流行度服从长尾分布。
4.2.3 用户打什么样的标签
表明物品是什么; 表明物品的种类; 表明谁拥有物品; 表达用户的观点; 用户相关的标签; 用户的任务; 类型; 时间; 人物; 地点; 语言; 奖项; 其他
4.3 基于标签的推荐系统
一个用户标签行为的数据集一般由一个三元组的集合表示,其中记录(u,i, b)表示用户u给物品i打上了标签b.
4.3.3 实验设置
2 数据稀疏性
用户对物品的多个标签记录要么都被分进训练集,要么都被分进测试集。
面对标签数据稀疏的改进:对标签集合做扩展。比如,若用户曾经用过“推荐系统”这个标签,可以将这个标签的相似标签页加入到用户标签中。
标签扩展的本质是对每个标签找到和她相似的标签。也就是计算标签之间的相似度。
3 标签清理
不是所有标签都能反应用户的兴趣;
将标签作为推荐解释。
清理标签的方法:
(1)去除词频很高的停止词
(2) 去除因词根不同造成的同义词
(3) 去除因分隔符造成的同义词
4.3.4 基于图的推荐算法
利用图模型做基于标签的个性化推荐,需要定义3种不同的元素:用户、物品和标签。因IC我们需要定义3种不同的顶点:用户顶点、物品顶点和标签顶点(u,i,b)。
4.3.5 基于标签的推荐系统
基于标签的推荐系统其最大的好处是可以利用标签做解释。
豆瓣的个性化推荐系统
优点:提高了推荐系统的多样性;
标签云也提供了推荐解释功能。
Jesse Vig标签研究:
将用户和物品之间的关系变成了用户对标签的兴趣和标签与物品的相关度。
结论:
1 用户对标签的兴趣对帮助用户理解为什么给她推荐某个物品更有帮助;
2 用户对标签的兴趣和物品标签相关度对于帮助用户判定自己是否喜欢被推荐物品具有同样的作用;
3 物品标签相关度对于帮助用户判定被推荐物品是否符合他当前的兴趣更有帮助;
4 客观事实类标签相比主观感受类标签对用户更有用。
4.4 给用户推荐标签
4.4.1 为什么要给用户推荐标签
方便用户输入标签;
提高标签质量。
4.4.2 如何给用户推荐标签
第0种(Popular Tags):给用户推荐整个系统里最热门的标签。
第1种(ItemPopularTags):给用户U推荐物品I上最热门的标签。
第2种(UserPopularTags):给用户u推荐他自己经常使用的标签。
第3种(HybridPopularTags):通过一个系数将上面的推荐结果线性加权,然后生成最终的推荐结果。
基于标签推荐的一些经典算法:张量分解; 基于LDA的算法;基于 图的算法。
第5章利用上下文信息
TopN推荐:如何给用户生成一个长度为N的推荐列表,而该列表包含了用户在某一时刻或某个地方最可能喜欢的物品。
5.1 时间上下文信息
5.1.1 时间效应简介
用户兴趣是发生变化的;
物品也是有生命周期的;
季节效应。
5.1.3 系统时间特性的分析
在给定时间信息后,推荐系统从一个静态系统变成了一个时变的系统,而用户行为数据也变成了时间序列。
包含时间信息的用户行为数据集一般由一系列的三元组构成,其中每个三元组(u, I, t)代表了用户U在时刻t对物品i产生过行为。
通过研究以下信息来研究系统的时间特性:
数据集每天独立用户数的增长情况;
系统物品的变化情况;
用户访问情况。
物品的生命周期和系统的时效性:
不同类型网站的物品具有不同的生命周期。可以从以下两个方面来衡量:
物品平均在线天数;
相隔T天系统物品流行度向量的平均相似度
5.1.4 推荐系统的实时性
亚马逊网的实时推荐系统。
实现推荐系统的实时性除了对用户行为的存取有实时性要求,还要求推荐算法本身具有实时性,而推荐算法本身的实时性意味着:
(1)实时推荐系统不能每天都给所有用户离线计算推荐结果,然后展现昨天计算出来的结果。所以,要求在每个用户访问推荐系统是,都根据用户这个时间点前的行为实时计算推荐列表。
(2)推荐算法需要平衡考虑用户的及你去行为和长期行为。
5.1.5 推荐算法的时间多样性
时间多样性:推荐系统每天推荐结果的变化程度。
提高推荐结果的时间多样性:
1 需要保证推荐系统能够在用户有了新的行为后及时调整推荐结果,是推荐结果满足用户最近的兴趣;
(1) 从推荐系统的实时性角度分析;
离线计算,在线展示。
(2)实时推荐系统
2 需要保证推荐系统在用户没有新的行为时也能够经常变化一下结果,具有一定的时间多样性。
(1)在生成推荐结果时,加入一定的随机性;
(2)对以前的推荐结果进行适当的降权;
(3) 每天十一号不同的推荐算法。
推荐系统需在保证推荐的精度,在此基础上适当的考虑时间多样性。
5.1.6 时间上下文推荐算法
5.1.7 时间段图模型
路径融合算法
一般来说,图上两个相关性比较高的顶点一般具有如下特征:
(1)两个顶点之间有很多路径相连;
(2)两个顶点之间的路径比较短;
(3)两个顶点之间的路径不经过出度比较大的顶点。
5.2 地点上下文信息
很多基于位置的服务(L:BS)软件都提供了推荐附近餐馆和商店的功能。
LARS: 位置感知推荐系统
(1)将物品分为两类:
有空间属性:餐馆, 商店等
无空间属性:图书,电影等
(2)将用户分为两类
有空间属性:国家,籍贯等
无空间属性
(3)使用数据集的3种不同表现形式
A.(用户,用户位置,物品, 评分);
LARS的基本思想是:将数据集根据用户的位置划分为很多子集。
画出树状图,然后从根节点出发,每经过一个节点生成一个推荐结果,直至叶子结点,最终的推荐结果是这一系列推荐列表的加权。-------------金字塔模型
B.(用户,物品,物品位置,评分);
LARS会首先忽略物品的位置信息,利用itemCF算法计算用户U对物品i的兴趣P(u, i, 但最终物品i在用户u的推荐列表中的权重信息定义为:
ResScore(u,i) = P(u, I ) –TravelPenalty(u, i)
TravelPenalty(u, i)表示了物品i的位置对于用户u的代价。
C.(用户,用户位置,物品,物品位置,评分)
LARS 通过研究前面两种数据集,发现了用户兴趣和地点相关的两个特征:
(1)兴趣本地化;
(2)活动本地化
第6章利用社交网络数据
好友的推荐对于增加用户对推荐结果信任度非常重要。
6.1 获取社交网络数据的途径
6.1.1 电子邮件
诞生于1971年, 格式:name@xxx.xxx。
我们可以分析用户的联系人列表了解用户的好友信息,而且可以进一步通过研究两个用户之间的邮件往来频繁程度度量两个用户的熟悉程度。
其实,如果我们获得了用户邮箱,也可以通过邮箱后缀得到一定的社交信息。
6.1.2 用户注册信息
隐性的社交网络信息
6.1.3 用户的位置信息
IP地址;
GPS数据(手机登移动设备)
位置信息也是一种反映用户社交关系的数据。一般来说,在给定位置信息后,可以通过查表知道用户访问时的地址。
6.1.4 论坛和讨论组
如果两个用户同时加入了很多不同的讨论组,就说明这链各个用户很可能互相了解或者具有相似的兴趣。如果两个用户曾经就某个帖子共同讨论过,那就更说明他们之间的熟悉程度或兴趣相似度很高。
6.1.5 即时聊天工具
用户在即时聊天工具上也会有一个联系人列表,而且往往会给联系人分组。通过这个列表和分组信息,我们就可以知道用户的社交网络关系,而且通过统计用户之间的聊天频繁程度,可以度量出用户之间的而熟悉程度。
但是聊天工具也是一个封闭的系统,存在个人隐私问题,数据信息获取困难。
6.1.6 社交网站
允许用户创建一个公开的页面介绍自己,并且默认公开自己的好友列表。另一个好处就是自然地减少了信息过载问题。
个性化推荐系统可以利用社交网站公开的用户社交网络和行为数据,辅助用户更好的完成信息过滤任务,更好的找到和自己兴趣相似的好友,更快的找到自己感兴趣的内容。
Facebook: 社会图谱;
Twitter: 兴趣图谱
6.2 社交网络数据简介
用图定义社交网络: G(V, E, w)
V:有户顶点集合;E:边集合 w:边的权重
一般来说,有3种不同的社交网络:
(1)双向确认的社交网络数据
Facebook 人人网
通过无向图表示
(2)单向关注的社交网络数据
Twitter 新浪微博
通过有向图表示
(3)基于社区的社交网络数据
豆瓣小组
用户之间没有明确的关系,但是这种数据包含了用户属于不同社区的数据。
社交网络数据中的长尾分布:
在一个社交网络中影响力大的用户总是占少数;
在一个社交网络中,关注很多人都额用户占少数,而绝大多数用户只关注很少的人。
6.3 基于社交网络的推荐
社会化推荐之所以受到很多网站的重视,是源于以下优点:
好友推荐可以增加推荐的信任度;
社交网络可以解决冷启动问题。
6.3.2 基于图的社会化推荐
图模型的优点是可以将各种数据和关系都表示到图上去。在社交网络中存在两种关系,一种是用户对物品的兴趣关系,一种是用户之间的社交网络关系。
可以将社交网络图和用户物品二分图结合成一个图。
在社交网络中。出了常见的用户和用户之间直接的社交网络关系,还有一种关系,即两个用户属于同一个群体。
6.3.3 实际系统中的社会化推荐算法
如果将Twitter的架构搬到社会化推荐系统中,可以按照如下方式设计系统:
(1)位每个用户维护一个消息队列,用于存储他的消息列表;
(2)当一个用户喜欢一个物品时,就将这调记录写进关注该用户的推荐消息队列中;
(3)当用户访问推荐系统时,读出他的推荐列表消息队列,重新计算物品的权重。同时计算出每个物品被哪些好友喜欢过,用这些好友作为物品的推荐解释。
6.3.4 社会化推荐系统和协同过滤推荐系统
社会化推荐系统的效果往往恨难通过离线实验评测,因为社会化推荐的优势不在于增加预测的准确性,而是通过银行好友增加银行对推荐结果的信任度,从而让用户单击那些很冷门的推荐结果。
因此,利用好友关系有时并不能增加离线评测的额准确率和召回率。利用用户调查和在线实验的方式来评测社会化推荐系统。
6.3.5 信息流推荐
主要针对Twitter和Facebook这两种社交网站。E.g. Facebook的EdgeRank
信息流的个性化推荐要解决的问题就是如何帮助用户从信息墙上挑选有用的信息。
6.4 给用户推荐好友
好友呢推荐系统的目的是根据用户现有的好友、用户的行为记录给用户推荐新的好友,从而增加整个社交网络的稠密程度和社交网站用户的活跃度。
好友推荐算法在社交网络上呗称为链接预测。
(1)基于内容的匹配
(2)基于共同兴趣的好友推荐
(3)基于社交网络图的好友推荐
(4)基于用户调查的好友推荐算法
六度原理:社会中任意两个人都可以通过不超过6个人的路径相互认识,如果转为图的术语,就是社交网络图的直径为6.
第7章推荐系统实例
7.1 外围架构
推荐系统要发挥强大的作用,出了推荐系统本身,主要还依赖于两个条件----界面展示和用户行为数据。
数据收集和存储:
按照前面数据的规模和是否需要实时存取,不同的行为数据将要被存储在不同的媒介中。一般来说,需要实时存取的数据存储在数据库和缓存中,而大规模的非实时的存取数据存储在分布式文件系统中。
7.2 推荐系统架构
推荐系统联系用户和物品的方式一共有3种,抽象一下,可以发现,如果认为用户喜欢的物品也是一种用户特征,或者和用户兴趣相似的其他用户也是一种用户特征,那么用户就和物品通过特征像联系。
可以设计一种基于特征的推荐系统架构。用户特征分类:
人口统计学分类;
用户行为特征;
用户话题特征。
如果需要在一个推荐系统上把所有特惠总能和任务都统筹考虑,则系统需要多个推荐引擎组成,每个推荐引擎负责一类特征和一种任务,而推荐系统的任务只是将推荐引擎的结果按照一定的群众或者优先级合并,排序然后返回。
7.3 推荐引擎架构
推荐引擎架构主要分为3部分:
部分A负责从数据库或者缓存中拿到以后行为数据,生成当前用户的特征向量;
部分B负责将用户的特征向量通过特征--物品相关矩阵转化为初始推荐物品列表;
物品C负责对初始的推荐列表进行过滤、排名等处理,从而生成最终的推荐结果。
7.3.1 生成用户特征向量
一般来说,用户特征包括两种,一种是用户的注册信息中可以提取出来的,主要包括用户的人口统计学特征;另一种是从用户的行为中就是那出来的。
一个特征向量由特征以及特征的权重组成。计算特征向量需要考虑的因素:
(1)用户行为的种类;
(2)用户行为产生的时间;
(3)用户行为的次数;
(4)物品的热门程度。
7.3.2 特征-物品相关推荐
在能得到用户特征向量之后,可以根据离线的相关表得到初始的物品推荐表。
离线相关表可以存储在MySQL中。
7.3.3 过滤模块
在得到初步的推荐列表之后,还不能把列表展现给用户。根据需求过滤掉不符合要求的物品。一般来说,过滤模块会过滤掉以下物品:
用户已经产生过行为物品;
候选物品以外的物品;
某些质量很差的物品。
7.3.4 模块排名
1 新颖性排名
新颖性排名模块的目的是给用户尽量推荐他们不知道的、长尾中的物品。
不过,要实现推荐结果的新颖性,仅仅哎最后对热门物品进行降权是不够的。而应该在推荐引擎的各个部分考虑新颖性。
2 多样性
提高推荐结果多样性的方法:
(1)将推荐结果按照某种物品的的内容属性分为几类,然后再每个类中都选择该类中排名最高的物品组合成最终的推荐列表。
好处:简单直观;
缺点:选择什么样的内容属性进行分类对结果影响很大。其次,物品的属性分类不一定得到优化的公认。
(2)控制不同推荐结果的推荐理由出现的次数。
3 时间多样性
主要是保证用户不要每天来推荐系统都看到同样的推荐结果。
4 用户反馈
排名模块最重要的部分就是用户反馈。用户反馈模块主要是通过分析用户之前和推荐结果的交互日志,预测用户会对什么样的推荐结果比较感兴趣。
点击模型:预测用户是否会点击推荐结果。
点击模型需要离线计算好,在线将模型加载到内存中。为了提高在线预测的效率,一般只可以使用线性模型。
第8章评分预测
评分预测问题最基本的数据就是用户评分数据集。
评分记录(u, I, r) 表示用户u给物品I 赋予了评分r.
8.1 离线实验
评分预测问题基本都通过离线实验进行研究。
8.2 评分预测算法
8.2.1 平均值
1 全局平均值
定义为训练集中所有评分记录的评分平均值。
2 用户评分平均值
定义为用户u在训练集中所有评分的平均值。
3 物品评分平均值
物品在训练集中接受的所有评分的平均值。
4 用户分类对物品分类的平均值
5 用户和物品分类的平均分
6 用户活跃度和物品流行度
8.2 基于邻域的方法
局域用户的邻域算法认为预测一个用户对一个物品的评分,需要参考和这个用户兴趣相似的用户对该物品的评分。
8.2.3 隐语义模型与矩阵分解模型
研究如何通过降维的方法将评分矩阵补全。
1传统的SVD(奇异值分解)分解
寻找一种对矩阵扰动最小的补全方法。
一般认为,如果补全后矩阵的特征值和补全之前矩阵的特征值相差不大,就算是扰动比较小。
缺点:
需要一个简单的方法补全稀疏评分矩阵;
该方法依赖的SVD 分解方法的计算复杂度很高,特别是在稠密的大规模矩阵上更是非常慢。
2 Simon Funk的SVD分解
矩阵分解----降维
可以直接通过训练集中的观察值利用最小化RMSE(均方根误差)学习P、Q矩阵。
用户偏置项:用户哦评分习惯中和物品没有关系的那种因素;
物品偏置项: 表示了物品接受的评分中和用户没有什么关系的因素。
8.2.4 加入时间信息
利用时间信息降低预测误差。
利用时间信息的方法:
(1)将时间信息应用到局域领域的模型中;
(2)将时间信息应用到矩阵分解模型中。