推荐算法,从名字上来看简单易懂,就是推荐相关的算法。它是机器学习下的一个分支,主要依靠大量结构化数据分析出用户购买的内在特点,用这些特点的集合来作为给用户推荐产品的依据。

当你反复搜索某产品时,系统会根据你的搜索记录推荐同类目下的其他产品,这些推荐一般都是你想要买的。但是作为机器学习技术从业者的笔者却统统不看。为什么?

因为机器给你推荐的往往是同类目产品下偏贵的,这样平台才能提高营销额嘛!而且也建议大家主动搜索,而不要被动接受。但是作为技术工作者,我们依然要坚持提升用户的体验(循循善诱,骗其买之)。

推荐系统的实现方法主要分为:基于规则的推荐,协同过滤推荐。

介绍基于关联规则的推荐算法之前先讲几个概念:

项集:如果把不同特点的用户进行分类的话,就需要划分不同集合,用以表示不同特点用户群体,那么给这些集合起个名字就叫项集,项集就是项的集合,不同的项表示不同的用户群体,一句话总结:包含0个或多个项的集合就是项集,如果包含k个项,则称为k项集。

置信度(confidence):设同时购买了尿布的人群为项集m,购买了啤酒的人群为项集n,设同时购买尿布和啤酒的人群为项集X,那么为了衡量购买尿布和购买啤酒这两种行为的相关程度,用X除以m就可以表示购买尿布这种行为和同时购买尿布和啤酒的相关程度,同理,X除以n可以表示购买啤酒这种行为和同时购买尿布和啤酒这两种行为的相关程度。一句话总结:置信度就是同时购买多种产品的人数除以某一种产品的销售量,反映的是这种产品和其他产品之间的相关度。

支持度(suupport):现在有了商品之间的相关程度,那么这种相关程度用起来靠不靠谱呢?这需要一个稳健的衡量标准,还是假设尿布和啤酒,用同时购买尿布和啤酒的人数除以总人数,就会得到同时购买尿布和啤酒的人数在人群中的比例,这个比例是以人群总数作为衡量标准的,可以反映出X人数是否有普遍意义,一句话总结:同时购买x和y的人数除以总人数,就可以得到支持度,支持度反应规则的可靠性。

经过一定的相关程度的排序,就可以得到不同商品之间的相关程度,这就是基于规则的频繁项集的挖掘方法,频繁项集的挖掘常用的算法有Apriori和FP-growth。和Apriori算法相比,FP-growth算法只需要对数据库进行两次遍历,从而高效发现频繁项集。在我的下一篇文章中,将会用代码向大家进行详细讲解。

下面讲解协同过滤推荐:

协同过滤主要分为两大类,一大类是基于用户的,另一大类是基于商品的。

基于用户的协同过滤推荐:这种方法主要关注的是用户,把用户之间根据相似程度分为多个类别,类别内的用户购买了什么,我们就给当前用户推荐什么,因为,这个用户群体具有较高的相似度,所以他们的需求也十分相像。他们都是宝妈,一个给孩子买了一双鞋,我们给另一个用户也推荐一个这样的产品,可能刚好猜到了他要买的。

所以基于用户的协同过滤具有一定的新颖性,当你看到了某宝给你推荐了你正准备搜索的东西,肯定会有点惊喜的,忍不住点进去看看?那么,流量进来了,用户群体购买的可能性就又大了,但是也不得不承认,基于用户的协同过滤也会有较大的误差,一位宝妈买了山地车,推荐给另一位宝妈肯定是不合适的。

另一种是基于产品的过滤推荐:这个就是我们一般意义上理解的推荐系统,当用户搜索某物时,我们根据用户搜索的产品进行扩散,给用户推荐更多相关的相似的产品。同时,对这些相似的产品或者是相关的其他产品进行排序。然后再得到最终的推荐结果。

在协同过滤算法中,重点是计算的关系依据—用户或者产品,会得到不同的结果;另一方面是相似度的计算方法。相似度的计算方法主要有以下几种:Consine相似度、皮尔逊相关系数、Jaccard相似度。

Cosine相似度:设商品A表示为向量A,商品B表示为向量B,用向量A和B的内积除以A的模和B的模的成绩,表示为A*B/|A|*|B|,这里的向量A和B是空间内能够表示相关程度的向量,相关程度越高的点,距离越近,所得Cosine相似度也越高,最高值为1。一句话总结:两个向量的内积除以它们模的乘积,就得到这两个向量的相关程度,叫做Cosine相似度。

Jaccard相似度:用A和B的交集的模除以A和B的并集的模,类似于上文介绍的置信度,不同的是,这里除的是A和B的并集而不是单独的A或者B,这个操作扩大了被除数,扩大了结果的表示范围,进而增大了结果的稳健性,一句话总结:交集除并集,类似置信度。

皮尔逊相关系数:这个系数的表示比较复杂,皮尔逊系数有两个理解角度,第一个角度很简单, 可以看做将两组数据首先做Z分数处理之后,然后两组数据的乘积和除以样本数Z分数一般代表正态分布中, 数据偏离中心点的距离.等于变量减掉平均数再除以标准差。标准差则等于变量减掉平均数的平方和,再除以样本数,最后再开方

其二, 按照大学的线性数学水平来理解,它比较复杂一点,可以看做是两组数据的向量夹角的余弦。

总体来说,相似度的处理是推荐算法的核心。希望大家能及时掌握,不懂的可以在评论区留言,我会尽快回复。