推荐系统概述
11/1/2017 6:31:39 PM
一、为什么要有推荐系统
什么是稀缺资源
对于传统零售商而言,货架空间是稀缺资源。
而到了现在,互联网使得零成本产品品信息传播成为可能,“货架空间”从稀缺变得丰富。人们逐渐从信息匮乏的时代走入了信息过载的时代。这时,注意力便成了稀缺资源。
推荐系统的价值
推荐系统的目的是向用户提供建议。用户是否采纳这个建议,则是另外一回事了。
将正确的商品在正确的时间推荐给正确的人,这在商业上有巨大的价值。在阅读网站上,一个合适的推荐远比首页上的图书更吸引用户。
推荐系统的应用非常多,生活中最常见的便是在线商城中的推荐和电影推荐。
推荐的分类
按照推荐结果是否因人而异,推荐方法可分为大众化推荐和个性化推荐。
大众化推荐 在同样的外部条件下,不同用户获得的推荐是一样的。比如查询推荐,它往往只与当前的查询条件有关,而很少与用户直接相关。
个性化推荐 不同的人在不同的外部条件下,可以获得与其本身兴趣爱好、历史记录等相匹配的推荐。
本文主要介绍个性化推荐。
二、推荐系统算法概述
推荐方法大致上可分为3类:
- 基于人口统计学的推荐
- 基于内容的推荐
- 基于协同过滤的推荐
基于人口统计学的推荐
基于人口统计学的推荐的主要思想是,“一个用户可能会喜欢与其相似的用户所喜欢的东西”。因此,此方法的目标是找到相似的用户。
首先,系统记录每一用户的性别、年龄、活跃时间等元数据。当系统需要对一个用户进行个性化推荐时,它会利用元数据计算该用户与其他用户之间的相似度,选出最相似的几个用户,进而利用这些用户的购买记录进行推荐。
基于人口统计学的推荐方法其优点是计算简单。但推荐结果的可信度较低,因为即便是性别、年龄等元数据属性都相同的用户,也很有可能在物品上有截然不同的偏好。
因此,基于人口统计学的方法在实际推荐系统中很少作为一个特定的方法单独使用,而是常常与其他方法结合。
基于内容的推荐
基于内容的推荐是根据物品的内容信息进行推荐。它的主要思想是“用户可能会喜欢和他曾经喜欢过的物品相似的物品”。因此,此方法是通过判断物品的相似性进行推荐。
一种简单的实施方法是,首先统计目标用户曾经购买或浏览过的所有物品,然后将这些物品的内容信息加权整合作为该用户的画像。然后计算此用户画像和其他物品之间的相似度。进而,将与该用户画像相似度高的物品,推荐给该用户。
这种方法非常直观,推荐的结果有比较好的解释性。而且很好地解决新物品的冷启动问题(新上架的商品,还没有用户购买)。但存在以下问题:
- 为了得到物品的特征,系统需要复杂的模块甚至手工的方法来对物品信息进行预处理。不具有较好的可扩展性,需要针对不同领域构建几乎完全不同的物品属性。
- 很难发现用户并不熟悉但是具有潜在兴趣的物品,即新颖性不强。
基于协同过滤的推荐
基于的协同过滤的推荐(Collaborative Filtering-Based Recommendation)是推荐系统中应用最早和最为成功的技术之一。
与基于内容的方法不同的是,它利用群体的智慧,为当前用户提供个性化的推荐。
基于协同过滤的推荐大致包括基于记忆的协同过滤和基于模型的协同过滤。而基于记忆的协同过滤又分为基于用户的协同过滤、基于物品的协同过滤。
下一节将对基于协同过滤的推荐进行详细介绍。
三、基于协同过滤的算法
基于用户的协同过滤
我们首先来介绍基于用户的协同过滤(User-based Collaborative Filtering)。
它的基本思想是“用户可能喜欢和他具有相似爱好的用户所喜欢的物品”。这与基于人口统计的推荐相似,但这里的“相似用户”不是通过用户的人口统计信息直接计算得到的,而是根据用户的购买记录和浏览记录得到的。
我们关心的首要问题是如何衡量用户的相似度。
首先,我们通过一定的策略获得每个用户对商品的一个打分表。比如对于每个用户,每件商品的分数是从0到10;用户浏览了一个商品,那么它对商品的分数 +0.1;当他购买了这件商品,分数 +1。
现在,我们得到了一张表
接下来,我们使用向量\(a_1=[10,7,2,4,0]\)作为用户00001的特征,\(a_2=[8,7,8,5,8]\)作为用户00002的特征,那么他们之间的相似度
这里选用的是余弦相似度,你也可以使用其他的度量方式。
定义了用户之间的相似度之后,我们需要找到目标用户的相似用户。
我们可以定义一个最小相似度minS,只要用户间的相似度大于minS,我们就认为这两个用户是相似的。我们也可以使用KNN的方法,找到与目标用户最相似的k个用户。
基于用户的方法优点在于,在数据集完善、内容丰富的条件下能够获得较高的准确率。然而,基于用户的方法存在的许多的问题。主要来自两个方面:
- 算法扩展性:随着系统用户数量的增加,系统的计算量会显著增长。这导致此算法难以适应大型系统,从而限制了算法的扩展性。
- 数据稀疏性:当系统种中商品较多,单个用户购买的商品往往不到所有商品的1%,这使得用户与商品的打分表非常稀疏。这导致了用户之间的相似性可能不准确。
因此,研究人员提出了基于物品的协同过滤(Sarwar,et al. 2001)。
基于物品的协同过滤
基于物品的协同过滤(Item-based Collaborative Filtering)的基本思想则与基于内容的推荐相似,都是“用户可能会喜欢和他曾经喜欢过的物品相似的物品”。
当然其对物品相似性的度量方法,与基于内容的推荐不同。简要来说,两个物品的相似性是由购买二者的用户群体之间的相似度决定的。这个句话有些长,让我们举了例子说明一下。
下表为一个系统中用户消费情况。其中,第一行表示用户A购买了物品a、b和d。
我们首先重新组织一下表格
我们使用\(b_1=[1,0,0,0,1]\)作为物品a的特征,\(b_2=[1,1,0,1,0]\)作为物品b的特征,那它们之间的相似度
由于有些物品的购买量比较多,也就是平均评分比较高,这导致了这些物品与其他物品的相似度会偏高。下面,我们对物品之间的相似性进行调整。
在计算相似性之前,我们将上表中每个数减去所在列的均值,使得每列的和为0。
于是物品a的特征\(c_1=[0.6,-0.4,-0.4,-0.4,0.6]\),物品b的特征\(c_2=[0.4,0.4,-0.6,0.4,-0.6]\),它们的余弦相似性为
得到物品之间的相似度后,我们接下来预测用户是否会购买某一物品。这里我们定义,用户对它未购买的一件物品的喜好程度为这个物品与所它购买物品相似度的加权和。
例如,用户A对于物品b的喜好程度
当此数值大于我们设定的阈值时,我们将物品b推荐给A。
基于物品的推荐方法其优点主要有一下两点:
-
计算简单 容易实现实时响应并提高效率。由于在常见的系统中物品被评分的变化要比用户低的多,因此物品相似度的计算一般可以采用离线完成、定期更新的方式,从而减少了线上计算,实现实时响应并提高效率。尤其在用户数远大于商品数的情况下更为显著。
-
可解释性比较好 用户可能不了解其他人的购物情况,但是对自己的购物历史总是很清楚的。基于物品的推荐方法很容易让用户理解为什么推荐了某个商品,并且当用户在兴趣列表中添加或删除商品时,可以调整系统的推荐结果,这也是其他方法很难做到的一点。
然而基于物品的推荐也有其缺点:以物品为基础的信息过滤系统较少考虑用户之间的差别,因此精度与基于用户的方法往往稍微逊色一些。除此之外,数据稀疏性和冷启动仍有待解决。
基于用户的推荐和基于物品的推荐的对比
由于基于用户的推荐和基于物品的推荐具有某种对称性,且均为个性化推荐系统中最为基础的入门方法,因此在这里我们对这两种最基本的协同过滤方法进行对比。
在计算复杂度上,基于用户的方法往往在线计算量大,难以实时响应。对于一个用户数量大大超过物品数量而物品数量相对稳定的应用,一般而言基于物品的方法从性能和复杂度上都比基于用户的方法更优。这是因为物品相似度的计算不但计算量小,而且不必频繁更新。而对于诸如新闻、博客或者微内容等物品数量巨大且频繁更新的应用,基于用保护的方法往往更具优势,推荐系统的设计者需要根据自己应用的特点选择适合自己的算法。
在适用场景上,内容之间的内在联系是非社交网站中很重要的推荐原则,往往比基于相似用户的推荐原则更加有效。例如在购书网站上,如果向用户推荐图书并解释某个与该用户有相似兴趣的人也购买了被推荐的图书,是很难让目标用户信服的,因为该用户可能根本不认识推荐理由中“有相似兴趣的”用户;但如果解释为被推荐的图书与用户之前看过的图书相似,则更容易被用户接受,因为用户往往对自己的历史行为记录是非常熟悉和认可的。相反,在社交性网站中,基于用户的方法以及相关的基于用户网络的方法则是更不错的选择。因为基于用户的推荐方法加上社交网站中社会网络信息,可以大大增加用户对推荐解释的信服度。
在一个综合的推荐系统中,一般很少只用某一种推荐策略,考虑到基于用户和基于物品的推荐方法之间的互补性,很多推荐系统将二者结合起来作为系统的基础推荐算法。
基于模型的协同过滤
基于用户和基于物品的方法共有的缺点就是计算规模庞大,难以处理大规模数据量下的实时即如果。
而基于模型的协同过滤(Model-based Collaborative Filtering)则致力于改进该问题。
基于模型的协同过滤的基本思路是:首先利用历史数据训练一个模型,然后再用此模型进行预测。
基于模型的方法广泛使用的技术包括语义分析、贝叶斯网络、矩阵分解等等。例如将用户属性和物品属性的各个特征作为输入,以用户打分作为输出建立一个拟合模型,或者将打分作为类别转化为一个多分类问题。这种方法不是基于一些启发式规则进行预测计算,而是对于已有数据应用统计和机器学习得到的模型进行预测。
基于模型的方法的优点在于快速响应,即只要训练除了模型就可以对新用户或新物品进行实时快速计算;而且由于由于将用户打分作为优化目标,往往可以获得较高的预测精度。然而,其问题在于如何将用户实时或者新增的信号信息反馈给训练好的模型,从而在系统扩展的过程中维持推荐的准确度,即模型的增量训练问题。
四、推荐方法的组合
由于各种推荐方法都有优缺点,所以在实际应用,将多种推荐方法组合在一起,以获得更好的效果。在组合方式上,研究人员提出了7种方案。
1. 加权融合(Weighted)
将多种推荐技术的结果加权混合产生推荐。最简单的方式是基于感知器的线性混合,首先将协同过滤的推荐结果和基于内容的推荐结果赋予相同的权重值,然后比较用户对物品的评价与系统的预测是否相符,进而不断调整权值。
2. 变换(Switch)
根据问题背景和实际情况采取不同的推荐技术。例如,系统首先使用基于内容的推荐技术,如果他不足以产生高可信度的推荐就转而尝试使用协同过滤技术。因为需要针对各种可能的情况设计转换标准,所以这种方法会增加算法的复杂度。当然这么做的好处是对各种推荐技术的优点和弱点比较灵敏,可以根据特定场景充分发挥不同推荐算法的优势。
3. 混合(Mix)
将多种不同的推荐算法混合在一起,其难点是如何进行结果的重排序。
4. 特征混合(Feature Combination)
将来自不同推荐数据源的特征组合起来,由另一种推荐技术采用。这种方法一般会将协同过滤的信息作为增加的特征向量,然后在这增加的数据集上采用基于内容的推荐技术。特征组合的混合方式使得系统不再仅仅考虑协同过滤的数据源,所以它降低了用户对物品评分数量的敏感度。相反,它允许系统拥有物品的内部相似信息,对协同系统是不透明的。
5. 级联型(Cascade)
首先用一种推荐技术产生一个较为粗略的候选结果,在此基础上使用第二种推荐技术对其作出进一步精确的推荐。
6. 特征递增(Feature Augmentation)
将前一个推荐方法的输出作为后一个推荐方法的输入。它与级联型的不同支出在于,这种方法上一级产生的并不是直接的推荐结果,而是为下一级的推荐提供某些特征。一个典型的例子是将聚类分析环节作为关联规则挖掘环节的预处理,从而将聚类所提供的类别特征用于关联规则挖掘。
7. 元层次混合(Meta-level Hybrid)
将不同的推荐模型在模型层面上进行深度的融合,而不仅仅是将一个输出结果作为另一个的输入。例如,基于用户的方法和基于物品的方法一种可能的组合方式为:先计算目标物品的相似物品集,然后删掉所有其他(不相似的)物品,进而在目标物品的相似物品集上采用基于用户的协同过滤算法。这种基于相似物品计算近邻用户的协同推荐方法,能很好地处理用户多兴趣下的个性化推荐问题,尤其是在候选推荐物品的内容属性相差很大的时候,该方法可以获得较好的性能。
五、推荐算法的评价
根据评价角度的不同,有多种评价指标。通常分为主观指标和客观指标,下面介绍几种常用的指标。
主观指标
1. 用户满意度
描述用户对推荐结果的满意程度。通过用户问卷或者监测用户线上行为数据获得。
2. 预测准确率
描述推荐系统预测用户行为的能力。通过离线数据集上算法给出的推荐列表和用户行为的重合率来计算。
3. 惊喜度
如果推荐结果和用户的历史兴趣不相似,但让用户很满意,则这是一个惊喜的推荐。定性地通过推荐结果与用户历史兴趣的相似度和用户满意度来衡量。
4. 新颖性
如果用户没有听说过推荐列表中的大部分物品,则说明该推荐系统的新颖性较好。通过推荐物品的平均流行度和用户问卷来获得。
客观指标
1. 覆盖率
描述推荐系统对物品长尾的发掘能力。通过推荐物品占总物品的比例和所有物品被推荐的概率分布来计算。
2. 多样性
描述推荐系统中推荐结果能否覆盖用户不同的兴趣领域。通过推荐列表中物品两两之间不相似性来计算。
参考
[1] 王宏志. 机械工业出版社. 大数据分析原理与实践.
[2] 刘知远 崔安欣. 电子工业出版社. 大数据智能.
posted on 2017-12-06 11:04 SuperZhang828 阅读(752) 评论(0) 编辑 收藏 举报