Apriori商品关联分析

什么是购物篮分析?

购物篮分析本质其实就是商品之间的关联分析,因为最初这种关联分析主要是在超市应用广泛,所以后来被人们称为“购物篮分析”。购物篮分析的目的在于在一个数据集中找出项之间的关联关系。比如,购买鞋的顾客,有10%的可能也会买袜子,60%的买面包的顾客,也会买牛奶。

购物篮分析一般在电商和超市行业应用的比较多,在金融服务业,保险业也有应用,对于电商场景,一般应用有这几个部分:

个性化推荐:像我开头的经历一样,给用户推一些相关商品

组合优惠券:给购买过的用户发相关联商品的优惠券

捆绑销售:将相关联的商品组合起来销售

Apriori算法的三个关键指标

支持度(support):support(A\Rightarrow B)=P(A\bigcup_{}^{}B ),表示A和B同时出现的概率

置信度(confidence):confidence(A\Rightarrow B)=support(A\Rightarrow B)/support(A),表示A和B同时出现的概率占A出现概率的比值

提升度(Lift):提升度指当销售一个物品时,另一个物品销售率会增加多少,计算方式是:Lift(A\Rightarrow B)=confidence(A\Rightarrow B)/(support(B))

Lift=1,表示X与Y相互独立

Lift>1,表示有效强关联规则

Lift<1,表示无效强关联规则

分析目标:找到集合中的频繁元素,发现顾客购买的规律。如果从单个商品的出现频率分析到多个商品的出现频率,那么随着商品数目的增多,商品的组合数必定会飞速增长,运算量极大,因此需要一种能够快速剪枝的方法。

频繁模式的剪枝原理为:如果某一项集是频繁的,那么它的子集全都是频繁的;如果某一项集是不频繁的,那么它的超集都是不频繁的,即如果项集CDE是频繁的,那么它的子集C、D、E、CD、CE、DE都是频繁的,反之,如果项集AB不频繁,则它的超集ABC、ABD、ABE等也不频繁

频繁模式剪枝原理示意图

python实现方法

由于每一个国家用户群体对于商品购买的偏好会有所偏差,此处使用数据集中的美国销售数据进行分析

导入数据

检查数据缺失值、异常值、格式一致性,由于数据完整性较好,无需做数据清洗

关联分析

(1)提取国家为美国的数据

(2)提取所需关键字段

(3)商品列转行:通过groupby把商品变成二级索引,通过聚合购买数量,用unstack方法把二级转换成行,对于无数据(无购买记录)的地方用fillna(0)填充

(4)为了防止仅一次购买且同时购买多件商品被误判为高关联商品,此处设置min_value = 3/basket.shape[0],用于后续判断频繁项集最少出现3次

(5)对数据框中商品是否出现变换为0-1关系

(6)计算频繁项目集

频繁项集

(7)生成相应的支持度、置信度和提升度规则

关联分析

变量说明

antecedent support:规则先导项支持度

consequent support:规则后继项支持度

support:规则支持度 (前项后项并集的支持度)

confidence:规则置信度 (规则置信度:规则支持度support / 规则先导项)

lift:规则提升度,表示含有先导项条件下同时含有后继项的概率,与后继项总体发生的概率之比。

结果分析:

实际上频繁项集中只有少数是有意义的,很多时候很多商品存在互补关系(比如乒乓球和球拍),即使不做购物篮分析,运营人员也知道可以进行捆绑销售,这是common sense,因此数据分析师需要有一双善于发现的眼睛,从沙子中挖掘金子。

本文中可以发现,在办公场景下,折叠椅、打印机、真空袋、信封、桌子与订书钉存在着一定的关联关系,可以理解为新办公室下相关办公用品的配置中订书钉是一个频繁出现的购置项目。

进一步,我们通过商品的销量发现,订书钉的需求强度较其他关联产品更高,可以尝试通过捆绑销售或赠送订书钉、购买订书钉赠送其他产品优惠券、个性化推荐等方法,提高销量。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容