购物篮分析
# 概述
购物篮分析(Market Basket Analysis)是一种数据挖掘技术,主要用于发现顾客购买行为中的模式和关联。 它通过分析销售交易数据来识别哪些产品经常一起被购买,从而帮助企业更好地理解消费者的购买习惯、优化商品布局、制定促销策略以及提升客户体验。
# 实现思路
测试数据-示例超市.xls (opens new window)
一般我们使用三个指标来度量一个关联规则,这三个指标分别是:支持度、置信度和提升度。
# Support(支持度)
表示某个商品组合在所有交易中出现的频率。例如,如果在100次交易中有20次同时购买了A和B,则A和B的支持度为20%。
支持度 = 同时购买A和B订单数 / 总购买订单数
# Confidence(置信度)
指的是在已知一个特定商品被购买的情况下,另一个商品也被购买的概率。比如,“买了A的顾客也买了B”的置信度是80%,意味着在所有包含A的商品篮子中,有80%也包含了B。
置信度 = 同时购买A和B订单数 / 购买A的订单数
# Lift(提升度)
衡量两个商品一起购买的概率与它们独立购买概率的比值。提升度大于1表示这两个商品更可能一起被购买;等于1则表明两者独立;小于1说明这些商品倾向于不一起购买。例如,如果“买了A的顾客也买了B”的提升度是2,这意味着买A的顾客买B的可能性是随机情况下预期的两倍。
A的购买比率 = 购买A次数 / 总购买订单数
B的购买比率 = 购买B次数 / 总购买订单数
提升度 = 支持度 / (A的购买比率 * B的购买比率)
2
3
# 数据准备
在原有超市订单表基础之间,为了实现找到两种产品的关系可以用订单号自关联, 增加过滤条件AB商品不相等
# 增加计算字段
商品A的订单数 = {FIXED `a_子类别` : distinct(`订单 ID`) }
商品B的订单数 = {FIXED `b_子类别` : distinct(`订单 ID`) }
同时购买商品AB订单数 = {FIXED `a_子类别`, `b_子类别` : distinct(`订单 ID`) }
总订单数 = {FIXED : distinct(`订单 ID`)}
2
3
4
数据 明细 (注意是明细数据不是汇总数据)如下所示
# 增加汇总表达式
由于上面通过计算字段增加的字段已经是汇总级别,所以下面在汇总计算的时候需要选择 max/min/avg 中的一种汇总函数,不能选择sum函数
支持度 = max(`同时购买商品AB订单数`) / max(`总订单数`)
置信度 = max(`同时购买商品AB订单数`) / max(`商品A订单数`)
商品A购买占比 = max(`商品A订单数`) / max(`总订单数`)
商品B购买占比 = max(`商品B订单数`) / max(`总订单数`)
提升度 = ${支持度} / (${商品A购买占比} * ${商品B购买占比})
2
3
4
5
# 制作热力图
细节解析
- 支持度指标设置值格式化,百分数,保留两位小数
- 配置栏:
- 数字标签 开启显示
- 布局:开启自定义,增加右边距
- 视觉映射:开启自定义,垂直位置居中
# 分析看板
增加联动