作者:橘猫吃不胖
链接:https://www.jianshu.com/p/cdf90ce7100c
购物篮分析零售行业经常做的分析,最近也接到了这个需求,正好彻底研究一下。其实,也就是相关分析,挖掘下商品间的关联关系。
购物篮就是我们逛超市的时候,手里推的那个小车,手里提的那个篮子,从数据层面来看也就是每一笔订单就可以当成一个购物篮。购物篮分析要做的就是,用户在每一次消费时,喜欢买哪些商品,哪些商品会组合购买,如果买了商品A,用户还会买什么,就是发现商品与商品之间的联系。
最经典的例子就要数那个啤酒与尿布的故事了。
基本概念
在关联分析中,有些指标我们需要先理解下
支持度(Support)
其实就是出现的概率,在这里就是购买了某个商品的订单数占比
置信度(Confidence)
置信度已经涉及关联规则了,同时购买商品X、Y的订单数占购买商品X的订单数的比例,这里说明的就是,“如果购买了X,那么购买Y的概率是多少”
提升度(Lift)
我没有找到一个很好地定义方式,这个提升度主要是用来衡量X与Y的相关性的
- 提升度 >1 且越高表明正相关性越高;
- 提升度 <1 且越低表明负相关性越高;
- 提升度 =1 表明没有相关性。
我们来简单整理一下,我们要做相关分析,这里就是购物篮分析,通过支持度,我们可以知道哪些商品或者组合商品出现的概率比较高;当我们要思考商品连带性的时候,是买了X,会再去买Y,还是买了Y再去买X的概率更高,置信度就用上了;有了置信度还得看看提升度,看看他们之间的相关性到底强不强,有多强。
实现方式
要实现购物篮分析,其实有很多种方法,上面的几种考核指标都很清晰了,我们使用SQL也是可以统计的,只不过有点儿麻烦,需要手动做一个商品的组合,或者使用商品间笛卡尔积作为基础表,但是这还得看组合数量,如果只组合2种还好,组合3种、4种呢?
再就是使用Python或者R来做了,可以选择自己代码实现,也可以使用现有的开源包,我们只要用就行了,这里我也是直接使用了Python中的mlxtend拓展包。
数据处理
这里把数据处理单独拎出来说一下,做关联分析,需要注意下数据的选取,比如有些行业需要考虑场景,如早中晚这种,每种场景下用户购物偏好不一样,每种场景都有适合的商品组合;
再比如最近的打折促销的商品要剔除掉,因为要走量,所以可能很多订单都有这件商品,会影响我们的最后结论;
还有就是一些附赠品,试用品,新人优惠的商品,都是会影响我们结论的一些数据。
Python实现代码
好了,到了这里,来分享下代码,其实很简单,兜风装好了,直接调用就行了
# -*- coding: utf-8 -*-
"""
Created on Mon Aug 26 16:40:36 2019
@author: 橘猫吃不胖
购物篮分析实例
"""
import pandas as pd
# 引入订单数据
df = pd.read_csv('D:/tmall_basket_series.csv')
# 转换成指定的格式
basket = (df.groupby(['ORDER_NO', 'PROD_NAME'])['ORDER_NO']
.count().unstack()
.fillna(0))
def encode_units(x):
if x <= 0:
return 0
if x >= 1:
return 1
# 将数据填充为0、1的格式
basket_sets = basket.applymap(encode_units)
from mlxtend.frequent_patterns import apriori
# 生成频繁项目集,指定最小支持度为0.5
frequent_itemsets=apriori(basket_sets, min_support=0.5, use_colnames=True)
frequent_itemsets.to_csv('D:/tmall_basket_series_support.csv')
from mlxtend.frequent_patterns import association_rules
# 生成关联规则,最小置信度为0.01
rules=association_rules(frequent_itemsets, metric="confidence", min_threshold=0.01)
rules.to_csv('D:/tmall_basket_series_bi.csv')
这里核心的都是调用mlxtend来实现的,我们要做的就是对数据进行处理。
本文来自jianshu,观点不代表一起大数据-技术文章心得立场,如若转载,请注明出处:https://www.jianshu.com/p/cdf90ce7100c
注意:本文归作者所有,未经作者允许,不得转载