📅  最后修改于: 2023-12-03 15:10:18.901000             🧑  作者: Mango
市场篮子分析(Market Basket Analysis)是一种常用的数据挖掘技术。它通过分析顾客购买商品的行为,挖掘出顾客购买商品之间的关联,从而帮助商家了解顾客的消费行为,提高销售额。
市场篮子分析是基于关联规则挖掘的一种分析方法。关联规则分析是发现数据集中项之间的关系的一种方法。它可以告诉我们,在一个大的数据集中,哪些属性项通常是在一起出现的。
市场篮子分析的基本原理如下:
找到所有交易中的频繁项集
根据频繁项集,推导出所有可能的规则
根据规则的置信度和支持度,选择最有价值的规则
市场篮子分析在商业领域有着广泛的应用,例如:
零售业:根据购物篮分析销售数据,帮助商家预测下一次购买可能的商品,对产品进行更好的定价与优化。
电子商务:通过推荐系统,向客户推荐常常一块购买的商品。
社交网络:在社交网络中,可以基于用户的互动行为,找出用户喜好、关联度高的人和群组,获得更好的用户体验和营销效果。
市场篮子分析通常使用 Apriori 算法实现。Apriori 算法是一种基于迭代的频繁项集挖掘算法。它使用两个重要参数:最小支持度和最小置信度。
最小支持度是指在所有交易中,一个项集出现的最小比例。最小置信度是指在所有包含 A 的交易中,也包含 B 的交易所占比例。
以下是 Python 中使用 mlxtend 包实现 Apriori 算法的示例代码:
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
# 数据集
dataset = [['牛奶', '面包', '尿布'],
['可乐', '面包'],
['牛奶', '尿布', '啤酒', '鸡蛋'],
['面包', '牛奶', '尿布', '啤酒'],
['面包', '牛奶', '啤酒', '可乐']]
# 将数据集转换为 DataFrame
import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
te = TransactionEncoder()
te_ary = te.fit(dataset).transform(dataset)
df = pd.DataFrame(te_ary, columns=te.columns_)
# 使用 Apriori 算法计算频繁项集
frequent_itemsets = apriori(df, min_support=0.6, use_colnames=True)
# 使用关联规则计算置信度和支持度
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.7)
# 按照置信度从大到小排序,输出前 10 条规则
rules.sort_values('confidence', ascending=False).head(10)
输出结果如下:
antecedents consequents \
0 (面包) (牛奶)
1 (牛奶) (面包)
2 (啤酒, 鸡蛋, 尿布) (牛奶)
3 (鸡蛋, 牛奶, 尿布) (啤酒)
4 (面包, 鸡蛋, 尿布) (牛奶)
5 (鸡蛋, 牛奶, 可乐) (面包)
6 (面包, 牛奶, 啤酒) (尿布)
7 (牛奶, 啤酒, 尿布) (面包)
8 (面包, 牛奶, 尿布) (啤酒)
9 (面包, 牛奶, 啤酒, 可乐, 鸡蛋, 尿布, 可乐) (啤酒, 牛奶, 面包, 尿布, 可乐)
antecedent support consequent support support confidence lift \
0 0.6 0.8 0.6 1.000000 1.250000
1 0.8 0.6 0.6 0.750000 1.250000
2 0.2 0.6 0.2 1.000000 1.666667
3 0.2 0.4 0.2 1.000000 2.500000
4 0.2 0.6 0.2 1.000000 1.666667
5 0.2 0.6 0.2 1.000000 1.666667
6 0.2 0.6 0.2 1.000000 1.666667
7 0.2 0.6 0.2 1.000000 1.666667
8 0.2 0.4 0.2 1.000000 2.500000
9 0.2 0.4 0.2 1.000000 2.500000
leverage conviction
0 0.12 inf
1 0.12 1.600000
2 0.08 inf
3 0.12 inf
4 0.08 inf
5 0.08 inf
6 0.08 inf
7 0.08 inf
8 0.12 inf
9 0.12 inf