一些主流的个性化推荐算法评析

给用户最佳的推荐
服务器君一共花费了289.612 ms进行了5次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

啤酒和尿布的购买有关系吗?答案是,跟尿布一起购买最多的商品就是啤酒。据沃尔玛的分析调查,美国的太太们常叮嘱她们的丈夫下班后为小孩买尿布,而丈夫们在买尿布后又随手带回了他们喜欢的啤酒。对于隐藏在啤酒和尿布这类表面上风马牛不相及的商品背后的关联,如果不通过数据挖掘的技术,是没有办法靠拍脑袋的办法想出来的。这就是关联规则挖掘中最经典的例子。

什么是关联规则挖掘技术?

关联规则挖掘的根本目的是寻找商品销售记录中的相关性,从而更好地指导销售策略的制定。一个典型的规则是:“43%购买了雀巢速溶咖啡的顾客都会购买雀巢咖啡伴侣”。基于这个规则,在实体超市中,应当把这两种产品放到相近的地方,而在网上超市中,如果顾客购买了雀巢速溶咖啡却没有购买咖啡伴侣,则可以在关联商品栏目中添加相应的推荐。现在很多企业已经认识到详细的原始购买记录的重要性,并且建立了规范的数据仓库,这些都为关联规则挖掘技术的应用奠定了良好的基础。

商品之间关联规则可以分为空间关联和时间关联两种,时间关联又可以分为周期关系和顺序关联两种。在一般研究中提到的关联规则,其实仅仅是空间关联,也就是在同一个时间(同一次购买)里,对消费者经常一起购买的商品进行分析,这也是所谓“购物篮分析”的主要支撑技术。

空间关联挖掘技术

最常见的空间关联规则挖掘技术,是所谓的“支持-置信”分析。以消费者在超市购买商品为例,如果把每一个消费者的一次购买看作一个事件,考虑从商品X到商品Y的关联规则,支持度是指在所有事件中同时购买商品X和商品Y的比例,置信度则是在所有购买了商品X的事件中也购买商品Y的比例 。如果支持度和置信度都超过了相应的阈值,则从X到Y的规则被认为是有效的。

“支持-置信”分析存在很多缺陷,首先体现在支持度方面的缺陷。

譬如说需要人为设定支持度阈值如果阈值太低,则会出现很多可信度很低的关联规则,仅仅可能来自于个别消费者偶然的行为,如果阈值太高,很多冷门商品之间的关联规则无法被挖掘出来。一种可能的替代方法是直接分析商品之间销售记录的相似度,认为与商品X关联最强的商品就是和它相似性最大的商品。这时候需要注意两点,首先,一般的相似度指标都是对称的 ,也就是说X和Y的相似性与Y和X的相似性相同,但是此处要选择不对称的定义方式。譬如说商品X卖了10000件,商品Y卖了5件,其中X,Y共同卖了5次。那么给一个购买了X的消费者推荐Y不一定合适,因为只有千分之零点五的购买概率,而给一个购买了Y的消费者推荐X就比较靠谱,因为看起来似乎买了Y的消费者都会买X。这就是为什么要选择不对称的相似度指标的原因。其次,因为放弃了支持度阈值,会造成一个销量很低的产品因为随机波动的原因出现非常高的关联,这个时候往往要通过对销量低的商品相似度进行惩罚,惩罚的力度可以设定为商品销售量(或者包含该商品的事件数目)的方根倒数。举例而言,在为商品X选择关联商品的时候,如果商品Y销售了49次,则商品Y对应的相似度应该减去1/7。商品卖得越好,可信度越高,惩罚也越少。

另外一个缺陷体现在置信度上。考虑一个销售量很大的商品X(设销售事件总数为100万,包含该商品的销售事件数为5万)和一个销售量很小的商品Y(包含该商品的销售事件数为200),假设商品X和Y之间的销售完全是独立的,那么在Y看来,商品X的置信度为5万/100万=0.05;而在X看来,和Y关联置信度是200/10万=0.002。也就是说,在一对产品的销售记录超过了支持度阈值的条件下,系统总是倾向于推荐销售量大的产品。我们曾将在某家网上超市的关联推荐栏中发现,当该超市超低价促销苏菲卫生巾的时候,不管购买军刀、箱包、零食,都会推荐苏菲卫生巾;而当该超市力推金龙鱼油的时候,则经常在推荐栏中连续出现多款金龙鱼油,尽管你只是买了50支一次性纸杯。这些推荐会造成广告信息冗余(首页上已经用更大幅的广告低价促销了),并且用户体验较差(用户理解不了这些关联,会认为这不是来源于一种数据挖掘技术,而是一种打着数据挖掘幌子的变相广告投放)。从信息熵或者资源分配的角度出发,在设计相似度指标的时候,适度向少量较少的长尾商品倾斜,有望大幅度提高关联规则挖掘的价值。

时间关联挖掘技术

相对于空间关联而言,时间关联的研究和应用都比较少,但事实上其应用价值并不一定比空间关联逊色!其实,顺序关联和周期关联两种模式都非常容易理解。顺序关联是指购买了商品X的消费者,倾向于在一个特定的时间间隔后购买商品Y。更严格地说,如果商品X和商品Y之间存在很强的时间关联性,则所有购买过X和Y的消费者购买X和Y的间隔时间的分布具有一个比较窄而高的峰值。要特别注意的是,刚才我们讲的空间关联,只是顺序时间关联的一个特例,对应的峰值在间隔时间为0处。举个简单的例子,如果一位消费者今天购买了一罐针对半岁幼儿的奶粉,那么大约半年后,他会购买针对一岁幼儿的奶粉,也就是说半岁奶粉和一岁奶粉这两个商品被同一个消费者购买的时间间隔分布在半年左右会有一个峰。

周期关联和空间关联与顺序时间关联不同,不是两个商品之间的关联,而是同一个商品在被同一个消费者购买时在购买时间上的周期性。举个例子来说,如果一个家庭,总是在同一个超市购买酱油,而每瓶500毫升的酱油大约使用25天,那么该商品针对此消费者的销售时间间隔总是在25天左右。如果把所有购买过这种酱油至少两次的消费者的购买间隔时间放在一起,相应的时间间隔分布在25天左右会存在峰值。这里要注意的是,有的时候消费者会购买多件商品,所以需要归一化。如果某消费者今天购买了3瓶酱油,下次购买酱油的时间是在60天后,则应该认为单位商品对应的间隔是20天。由于不同消费者消耗同一件商品的速率不同(酱油可以是一个人用,一个家庭用,甚至一个餐馆用),所以噪音很大。另外,有些用户或许会在两次购买某商品X的中间,在另外一个地方购买过X,造成周期变长的假想。周期关联挖掘虽然看起来很直观,事实上还没有比较成熟的技术,一般而言都是通过数据分析,先判断哪些商品可能存在销售上的周期性,然后需要人工帮助一起进行判断。

时间关联挖掘中要注意的一个特别重要的问题,就是选择合适的数据粒度!这里要特别小心一个误区,就是并非数据分辨率越高,关联挖掘效果就越好。举个例子来说,一般消费者对于纸巾的品牌依赖度比较小,在超市里面可能随意选取或者购买当时的打折品。如果在单个商品的粒度上,噪音非常大(消费者很可能会在两次购买同一款纸巾之间购买其他纸巾),往往无法挖掘有效关联;但是如果在类目的粒度上(例如抽纸类),虽然消费者更换了品牌,但是单位数量抽纸消耗的时间往往能够比较清晰的反映出来。事实上,我们只需要知道消费者快要用完抽纸,在这个时候就可以通过电子邮件促销的方式通知他购买,至于具体推荐哪种品牌的抽纸,反而不那么重要可以是当期促销品,可以是用户以前购买最多的,可以是新品推广,也可以是用户上次购买的款式。针对数据比较稀疏,噪音比较大的环境,选择较大粒度进行分析,往往会得到更好的效果。当然,粒度的选择本身也是很困难,不同类商品的最佳粒度可能很不一样,有的可以到单品,有的到品牌,有的只能到类目。

时间关联挖掘能够从数据交叉融合中得到更大的益处。跨网站、跨行为、跨线上线下的数据交叉融合方式,能够给个性化算法带来巨大利益。考虑两个购物网站A和B,如果要进行A与B之间商品的空间关联挖掘,就必须要分析几乎同一时间在A站和B站进行过消费的用户。遗憾的是,这样的用户非常少,即便是针对较相关的垂直电子商务网站,例如麦包包和名鞋库,访问过一个电商后一个月内访问过另外一个的用户比例一般都不到1%,都有购买行为的就更加微乎其微了。这种情况下进行空间关联挖掘的效果是有限的 。时间关联挖掘则完全不需要在A和B站同时有访问或者购买行为的用户。只要存在一些在两个网站都出现的单品或者类目,就可以把两处的消费者行为直接合并起来处理。

文/百分点首席科学家 周涛

本文地址:http://www.nowamagic.net/librarys/veda/detail/1871,欢迎访问原出处。

不打个分吗? 还木有人打分噢!

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/1871

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

大家都在看

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《编译原理(第2版)》 Alfred V. Aho (作者), Monica S.Lam (作者), 赵建华 (译者), 郑滔 (译者), 戴新宇 (译者)

《编译原理(第2版)》全面、深入地探讨了编译器设计方面的重要主题,包括词法分析、语法分析、语法制导定义和语法制导翻译、运行时刻环境、目标代码生成、代码优化技术、并行性检测以及过程间分析技术,并在相关章节中给出大量的实例。与上一版相比,《编译原理(第2版)》进行了全面的修订,涵盖了编译器开发方面的最新进展。每章中都提供了大量的系统及参考文献。《编译原理(第2版)》是编译原理课程方面的经典教材,内容丰富,适合作为高等院校计算机及相关专业本科生及研究生的编译原理课程的教材,也是广大技术人员的极佳参考读物。

更多计算机宝库...