数据分析里有一个经典的案例,超市里经常会把婴儿的尿不湿和啤酒放在一起售卖,原因是经过数据分析发现,出来买尿不湿的家长以父亲居多,如果他们在买尿不湿的同时看到了啤酒,将有很大的概率购买,这样就可以提高啤酒的销售量。
这个案例可能很大多数人都听烂了,但是如果要问你这个案例背后的算法和本质是什么,可能就要难倒不少人了。
其实,这种通过研究用户消费数据,将不同商品之间进行关联,并挖掘二者之间联系的分析方法,就叫做商品关联分析法,也叫作“购物篮分析”。
购物篮分析在电商分析和零售分析中应用相当广泛,但是很多人仅仅是照猫画虎,做一点表面的购买率关联分析就行了,其实真正的商品关联分析可不是这么浅显简单,下面就简单介绍一些商品关联分析。
一、商品关联分析的定义和目的
关联大家应该都很好理解,就是反映某个事物与其他事物之间相互依存关系的,在商品关联分析的定义是,通过对顾客的购买记录数据库进行某种规则的挖掘,最终发现顾客群体的购买习惯的内在共性。
什么叫做内在共性呢?举个简单例子,一般来说女性去超市买的东西是化妆品、服装、时蔬等等,而男性去超市买的东西大多是日用品,所以超市里会设置女性专柜和男性专柜,通过简单的客户分群实现商品分类。
我们都知道,做数据分析的目的就是找到数据之间的关联和联系,而对于产品或商品来说,我们的目的是什么呢?
答案是找出顾客购买行为的模式,比如说用户买了A商品,是否会对B商品产生什么影响;比如用户今天的购买行为,会不会对明天的销售量带来影响;比如不同的用户是否具有不同的购买模式,等等。
而这种挖掘方式要基于一定的规则,这个规则就是进行关联分析的算法,也就是下面我们要说的内容。
二、商品关联分析的指标
商品关联分析中有很多的指标体系,一般来说有下面三种比较常见:
1、支持度
支持度是指A商品和B商品同时被购买的概率,或者说某个商品组合的购买次数占总商品购买次数的比例,用图表示就是两者之间的交集。
其算法公式是:S=F[(A&B)/N]
其中S代表支持度,F代表概率函数,A&B代表购买了A且购买了B的次数,N代表购买总次数。
比如今天共有10笔订单,其中同时购买牛奶和面包的次数是6次,那么牛奶+面包组合的置信度就是6/10=60%
2、置信度
置信度是指购买A之后又购买B的条件概率,简单说就是因为购买了A所以购买了B的概率,用图表示就是交集在A中的比例。
其算法公式是:C=F(A&B)/F(A)
其中C代表置信度,F表示条件概率,A&B代表购买了A且购买了B的次数,A代表购买A的次数。
比如今天共有10笔订单,其中购买A的次数是8,同时购买A和B的次数是6,则其置信度是6/8=75%
3、提升度
提升度是先购买A对购买B的提升作用,用来判断商品组合方式是否具有实际价值,换句话说,就是看组合商品被购买的次数是否高于单独商品的购买次数,大于1说明该组合方式有效,小于1则说明无效。
其算法公式是:L=S(A&B)/[S(A)*S(B)]
其中L代表提升度,S(A&B)代表A商品和B商品同时被购买的支持度,S(A)*S(B)代表商品A被购买的概率与B被购买概率的乘积
比如今天共有10笔订单,购买A的次数是8,购买B的次数是4,购买A+B的次数是6,那么提升度是0.6/(0.8*0.4)>1,因此A+B的组合方式是有效的。
三、商品关联分析的步骤
1、数据来源
我们以某份超市的购买订单数据为基础,其中包含了商品类别、价格、特价、订单ID等信息
2、使用工具
我们在建立关联模型的时候,如果选择用excel等工具实现起来较为困难,为了提高分析效率,我们可以使用专业的数据分析BI工具,比如下面我用到的FineBI,可以直接将Excel数据导入到系统里进行分析,当然也可以选择连接oracle等库使用数据库表,通过建立自助数据集的方式进行自主分析。
首先我们先进行交集的计算,将刚才的excel数据表直接导入:
3、数据合并
计算交集的方法很简单,就是复制一列相同的商品类别,将两列合并在一起,就可以分出比如A+A、A+B、B+A等的商品组合,操作方法是直接点击左侧合并,并选择“并集合并”。
4、过滤重复值
很显然我们不需要A+A的组合,因此要将商品类别相同的数据给过滤掉,直接左侧添加过滤栏,过滤条件设置为“MeaNames=新MeaNames”。
5、计算交集次数
过滤掉了重复值也就得到了我们的交集,但是怎么计算每个交集的次数呢?这时候我们要用到辅助列,也就是新添加一列”值为1“的常数列,然后再新增一列,将相同类别的商品求和,也就是计算相同类别商品1的个数,作为我们每个交集的次数。
6、计算支持度
计算出了每个商品组合的交集次数,我们就可以来计算关联分析里的支持度、置信度和提升度了。
首先支持度要计算出购物的总次数,我们再新建一个数据集,还是用到刚才的excel数据表,所有数值都添加进去。
然后我们直接计算不同类别的ID数总和就可以了,新添加一列然后选择组内求和,条件是ID数。
这样我们就有了交集表和总数表,下一步就是将两张表合并成一张表,从下表我们就能看出不同商品组合的总次数和交集数。
根据支持度的公式,我们直接新加一列,公式为“交集/总数”,这样我们的支持度就计算出来了。
7、计算置信度
置信度就比较好计算了,根据公式我们只要算出A商品的购买率就可以了,直接新加一列,命名为置信度,公式为“交集/购买A的数量”,即可计算出置信度了。
8、计算提升度
计算提升度我们可以照猫画虎,根据定义新加一列,公式为“支持度/[(购买A的数量/订单总数)*(购买B的数量/订单总量)],就能得到提升度。
9、最终结果
四、分析结果
从最终得到的结果我们能够看出来不同商品之间的类别关系,比如下面几条结论:
1.面包与牛奶的支持度最高,说明把面包和牛奶放在一起捆绑销售可以提高销量;
2.水果与面包的支持度最低,需要把这两种商品分开放置,尽量不要靠近;
3.牛奶与鸡蛋的置信度最高,说明买了鸡蛋之后用户很有可能继续购买牛奶;
当然还有很多其他结论,可以帮助我们对商品的销售进行分析和处理,有利于我们提高销量,实现数据价值。