11/1/2017 6:31:39 PM算法
对于传统零售商而言,货架空间是稀缺资源。网络
而到了如今,互联网使得零成本产品品信息传播成为可能,“货架空间”从稀缺变得丰富。人们逐渐从信息匮乏的时代走入了信息过载的时代。这时,注意力便成了稀缺资源。app
推荐系统的目的是向用户提供建议。用户是否采纳这个建议,则是另一回事了。机器学习
将正确的商品在正确的时间推荐给正确的人,这在商业上有巨大的价值。在阅读网站上,一个合适的推荐远比首页上的图书更吸引用户。性能
推荐系统的应用很是多,生活中最多见的即是在线商城中的推荐和电影推荐。学习
按照推荐结果是否因人而异,推荐方法可分为大众化推荐和个性化推荐。大数据
大众化推荐 在一样的外部条件下,不一样用户得到的推荐是同样的。好比查询推荐,它每每只与当前的查询条件有关,而不多与用户直接相关。优化
个性化推荐 不一样的人在不一样的外部条件下,能够得到与其自己兴趣爱好、历史记录等相匹配的推荐。网站
本文主要介绍个性化推荐。spa
推荐方法大体上可分为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的特征,那么他们之间的类似度
\[{\rm sim}(U_{00001},U_{00002})={\rm cos}(a_1,a_2)=\frac{a_1\cdot a_2}{|a_1|\cdot|a_2|} \approx 0.89\]
这里选用的是余弦类似度,你也可使用其余的度量方式。
定义了用户之间的类似度以后,咱们须要找到目标用户的类似用户。
咱们能够定义一个最小类似度minS,只要用户间的类似度大于minS,咱们就认为这两个用户是类似的。咱们也可使用KNN的方法,找到与目标用户最类似的k个用户。
基于用户的方法优势在于,在数据集完善、内容丰富的条件下可以得到较高的准确率。然而,基于用户的方法存在的许多的问题。主要来自两个方面:
所以,研究人员提出了基于物品的协同过滤(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的特征,那它们之间的类似度
\[{\rm sim}(a,b)={\rm cos}(b_1,b_2)=\frac{b_1\cdot b_2}{|b_1|\cdot|b_2|}\approx 0.41\]
因为有些物品的购买量比较多,也就是平均评分比较高,这致使了这些物品与其余物品的类似度会偏高。下面,咱们对物品之间的类似性进行调整。
在计算类似性以前,咱们将上表中每一个数减去所在列的均值,使得每列的和为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]\),它们的余弦类似性为
\[{\rm sim}(a,b)={\rm cos}(c_1,c_2)=\frac{c_1\cdot c_2}{|c_1|\cdot|c_2|}\approx -0.17\]
获得物品之间的类似度后,咱们接下来预测用户是否会购买某一物品。这里咱们定义,用户对它未购买的一件物品的喜爱程度为这个物品与所它购买物品类似度的加权和。
例如,用户A对于物品b的喜爱程度
\[{\rm fond}(A,c)=\frac{{\rm sim}(a,c)\*1+{\rm sim}(b,c)\*1+{\rm sim}(d,c)\*1}{1+1+1}\]
当此数值大于咱们设定的阈值时,咱们将物品b推荐给A。
基于物品的推荐方法其优势主要有一下两点:
计算简单 容易实现实时响应并提升效率。因为在常见的系统中物品被评分的变化要比用户低的多,所以物品类似度的计算通常能够采用离线完成、按期更新的方式,从而减小了线上计算,实现实时响应并提升效率。尤为在用户数远大于商品数的状况下更为显著。
可解释性比较好 用户可能不了解其余人的购物状况,可是对本身的购物历史老是很清楚的。基于物品的推荐方法很容易让用户理解为何推荐了某个商品,而且当用户在兴趣列表中添加或删除商品时,能够调整系统的推荐结果,这也是其余方法很难作到的一点。
然而基于物品的推荐也有其缺点:以物品为基础的信息过滤系统较少考虑用户之间的差异,所以精度与基于用户的方法每每稍微逊色一些。除此以外,数据稀疏性和冷启动仍有待解决。
因为基于用户的推荐和基于物品的推荐具备某种对称性,且均为个性化推荐系统中最为基础的入门方法,所以在这里咱们对这两种最基本的协同过滤方法进行对比。
在计算复杂度上,基于用户的方法每每在线计算量大,难以实时响应。对于一个用户数量大大超过物品数量而物品数量相对稳定的应用,通常而言基于物品的方法从性能和复杂度上都比基于用户的方法更优。这是由于物品类似度的计算不但计算量小,并且没必要频繁更新。而对于诸如新闻、博客或者微内容等物品数量巨大且频繁更新的应用,基于用保护的方法每每更具优点,推荐系统的设计者须要根据本身应用的特色选择适合本身的算法。
在适用场景上,内容之间的内在联系是非社交网站中很重要的推荐原则,每每比基于类似用户的推荐原则更加有效。例如在购书网站上,若是向用户推荐图书并解释某个与该用户有类似兴趣的人也购买了被推荐的图书,是很难让目标用户信服的,由于该用户可能根本不认识推荐理由中“有类似兴趣的”用户;但若是解释为被推荐的图书与用户以前看过的图书类似,则更容易被用户接受,由于用户每每对本身的历史行为记录是很是熟悉和承认的。相反,在社交性网站中,基于用户的方法以及相关的基于用户网络的方法则是更不错的选择。由于基于用户的推荐方法加上社交网站中社会网络信息,能够大大增长用户对推荐解释的信服度。
在一个综合的推荐系统中,通常不多只用某一种推荐策略,考虑到基于用户和基于物品的推荐方法之间的互补性,不少推荐系统将两者结合起来做为系统的基础推荐算法。
基于用户和基于物品的方法共有的缺点就是计算规模庞大,难以处理大规模数据量下的实时即若是。
而基于模型的协同过滤(Model-based Collaborative Filtering)则致力于改进该问题。
基于模型的协同过滤的基本思路是:首先利用历史数据训练一个模型,而后再用此模型进行预测。
基于模型的方法普遍使用的技术包括语义分析、贝叶斯网络、矩阵分解等等。例如将用户属性和物品属性的各个特征做为输入,以用户打分做为输出创建一个拟合模型,或者将打分做为类别转化为一个多分类问题。这种方法不是基于一些启发式规则进行预测计算,而是对于已有数据应用统计和机器学习获得的模型进行预测。
基于模型的方法的优势在于快速响应,即只要训练除了模型就能够对新用户或新物品进行实时快速计算;并且因为因为将用户打分做为优化目标,每每能够得到较高的预测精度。然而,其问题在于如何将用户实时或者新增的信号信息反馈给训练好的模型,从而在系统扩展的过程当中维持推荐的准确度,即模型的增量训练问题。
因为各类推荐方法都有优缺点,因此在实际应用,将多种推荐方法组合在一块儿,以得到更好的效果。在组合方式上,研究人员提出了7种方案。
将多种推荐技术的结果加权混合产生推荐。最简单的方式是基于感知器的线性混合,首先将协同过滤的推荐结果和基于内容的推荐结果赋予相同的权重值,而后比较用户对物品的评价与系统的预测是否相符,进而不断调整权值。
根据问题背景和实际状况采起不一样的推荐技术。例如,系统首先使用基于内容的推荐技术,若是他不足以产生高可信度的推荐就转而尝试使用协同过滤技术。由于须要针对各类可能的状况设计转换标准,因此这种方法会增长算法的复杂度。固然这么作的好处是对各类推荐技术的优势和弱点比较灵敏,能够根据特定场景充分发挥不一样推荐算法的优点。
将多种不一样的推荐算法混合在一块儿,其难点是如何进行结果的重排序。
未来自不一样推荐数据源的特征组合起来,由另外一种推荐技术采用。这种方法通常会将协同过滤的信息做为增长的特征向量,而后在这增长的数据集上采用基于内容的推荐技术。特征组合的混合方式使得系统再也不仅仅考虑协同过滤的数据源,因此它下降了用户对物品评分数量的敏感度。相反,它容许系统拥有物品的内部类似信息,对协同系统是不透明的。
首先用一种推荐技术产生一个较为粗略的候选结果,在此基础上使用第二种推荐技术对其做出进一步精确的推荐。
将前一个推荐方法的输出做为后一个推荐方法的输入。它与级联型的不一样支出在于,这种方法上一级产生的并非直接的推荐结果,而是为下一级的推荐提供某些特征。一个典型的例子是将聚类分析环节做为关联规则挖掘环节的预处理,从而将聚类所提供的类别特征用于关联规则挖掘。
将不一样的推荐模型在模型层面上进行深度的融合,而不只仅是将一个输出结果做为另外一个的输入。例如,基于用户的方法和基于物品的方法一种可能的组合方式为:先计算目标物品的类似物品集,而后删掉全部其余(不类似的)物品,进而在目标物品的类似物品集上采用基于用户的协同过滤算法。这种基于类似物品计算近邻用户的协同推荐方法,能很好地处理用户多兴趣下的个性化推荐问题,尤为是在候选推荐物品的内容属性相差很大的时候,该方法能够得到较好的性能。
根据评价角度的不一样,有多种评价指标。一般分为主观指标和客观指标,下面介绍几种经常使用的指标。
1. 用户满意度
描述用户对推荐结果的满意程度。经过用户问卷或者监测用户线上行为数据得到。
2. 预测准确率
描述推荐系统预测用户行为的能力。经过离线数据集上算法给出的推荐列表和用户行为的重合率来计算。
3. 惊喜度
若是推荐结果和用户的历史兴趣不类似,但让用户很满意,则这是一个惊喜的推荐。定性地经过推荐结果与用户历史兴趣的类似度和用户满意度来衡量。
4. 新颖性
若是用户没有据说过推荐列表中的大部分物品,则说明该推荐系统的新颖性较好。经过推荐物品的平均流行度和用户问卷来得到。
1. 覆盖率
描述推荐系统对物品长尾的发掘能力。经过推荐物品占总物品的比例和全部物品被推荐的几率分布来计算。
2. 多样性
描述推荐系统中推荐结果可否覆盖用户不一样的兴趣领域。经过推荐列表中物品两两之间不类似性来计算。
[1] 王宏志. 机械工业出版社. 大数据分析原理与实践.
[2] 刘知远 崔安欣. 电子工业出版社. 大数据智能.