关联规则挖掘技术——主流推荐算法评述

链接:http://www.csdn.net/article/a/2011-07-11/301462

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

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

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

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

空间关联挖掘技术

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

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

譬如说需要人为设定支持度阈值——如果阈值太低,则会出现很多可信度很低的关联规则,仅仅可能来自于个别消费者偶然的行为,如果阈值太高,很多冷门商品之间的关联规则无法被挖掘出来。一种可能的替代方法是直接分析商品之间销售记录的相似度,认为与商品X关联最强的商品就是和它相似性最大的商品。这时候需要注意两点,首先,一般的相似度指标都是对称的[2],也就是说X和Y的相似性与Y和X的相似性相同,但是此处要选择不对称的定义方式。譬如说商品X卖了10000件,商品Y卖了5件,其中X,Y共同卖了5次。那么给一个购买了X的消费者推荐Y不一定合适,因为只有千分之零点五的购买概率,而给一个购买了Y的消费者推荐X就比较靠谱,因为看起来似乎买了Y的消费者都会买X。这就是为什么要选择不对称的相似度指标的原因。其次,因为放弃了支持度阈值,会造成一个销量很低的产品因为随机波动的原因出现非常高的关联,这个时候往往要通过对销量低的商品相似度进行惩罚,惩罚的力度可以设定为商品销售量(或者包含该商品的事件数目)的方根倒数[8]。举例而言,在为商品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%,都有购买行为的就更加微乎其微了。这种情况下进行空间关联挖掘的效果是有限的[3]。时间关联挖掘则完全不需要在A和B站同时有访问或者购买行为的用户。只要存在一些在两个网站都出现的单品或者类目,就可以把两处的消费者行为直接合并起来处理。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值