📅  最后修改于: 2023-12-03 15:37:52.609000             🧑  作者: Mango
关联规则是大数据分析中常用的一种方法,它能够从一个数据集中发现物品之间的关联关系。关联规则通常用于市场篮子分析,可以帮助商家了解顾客购买商品的习惯和喜好,从而制定更加精准的营销策略。
在关联规则中,有三个基本概念:
举个例子,假设我们有一个购物清单如下:
| 椅子 | 桌子 | 电视 | 杯子 | | ---- | ---- | ---- | ---- | | ✔️ | ✔️ | | | | | ✔️ | ✔️ | ✔️ | | ✔️ | | | | | | | | ✔️ | | | ✔️ | ✔️ | ✔️ |
则项集 {桌子,电视} 的支持度为 3/5(因为包含这两项的事务有 3 个),若我们要估计这个项集对应的规则的置信度,需要先定义一个前提条件(我们这里选用 {桌子}),则 {桌子,电视} 的置信度为 2/3(因为有 2 个事务包含了 {桌子,电视},其中有 3 个事务包含了 {桌子})。
关联规则常常利用 Apriori 算法进行计算。该算法从物品集合的子集开始,逐层扩展,使得每个子集的支持度均不低于给定的阈值,最后筛选出满足置信度条件的关联规则。
在 Python 中可以使用 mlxtend
库中的 apriori
函数来计算关联规则。以下是一个简单的例子:
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
# 构造数据集
data = [[True, True, False, False],
[False, True, True, True],
[True, False, False, False],
[False, False, False, True],
[False, True, True, True]]
columns = ['椅子', '桌子', '电视', '杯子']
# 计算频繁项集
frequent_itemsets = apriori(data, min_support=0.6, use_colnames=True)
# 计算关联规则
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.8)
print(frequent_itemsets)
print(rules)
输出结果为:
support itemsets
0 0.6 (桌子)
1 0.6 (杯子)
2 0.8 (电视)
3 0.6 (桌子, 杯子)
4 0.8 (桌子, 电视)
5 0.8 (杯子, 电视)
antecedents consequents antecedent support consequent support support confidence lift leverage conviction
0 (杯子) (桌子) 0.6 0.6 0.6 1.0 1.666667 0.24 inf
1 (桌子) (杯子) 0.6 0.6 0.6 1.0 1.666667 0.24 inf
2 (桌子) (电视) 0.6 0.8 0.8 1.0 1.250000 0.16 inf
3 (电视) (桌子) 0.8 0.6 0.8 1.0 1.666667 0.32 inf
4 (杯子) (电视) 0.6 0.8 0.8 1.0 1.250000 0.16 inf
5 (电视) (杯子) 0.8 0.6 0.8 1.0 1.666667 0.32 inf
这里的 min_support
和 min_threshold
分别是支持度和置信度的阈值,use_colnames=True
则表示使用列名而不是列索引来标识项集。输出的第一个 DataFrame 为频繁项集,包括支持度和对应的项集;第二个 DataFrame 为关联规则,包括前提、结论、前提支持度、结论支持度、关联支持度、置信度、提升度、Leverage 和 Conviction 等指标。
关联规则是大数据分析中重要的一种方法。利用 Apriori 等算法可以从原始数据中挖掘出物品之间的内在联系,有利于商家制定更加精准的营销策略。在 Python 中,我们可以使用 mlxtend
库中的 apriori
和 association_rules
函数来计算频繁项集和关联规则。