📜  大数据分析-关联规则(1)

📅  最后修改于: 2023-12-03 15:37:52.609000             🧑  作者: Mango

大数据分析-关联规则

什么是关联规则?

关联规则是大数据分析中常用的一种方法,它能够从一个数据集中发现物品之间的关联关系。关联规则通常用于市场篮子分析,可以帮助商家了解顾客购买商品的习惯和喜好,从而制定更加精准的营销策略。

关联规则的基本概念

在关联规则中,有三个基本概念:

  • 项集(itemset):一组物品的集合。
  • 支持度(support):指包含某个项集的所有事务的比例。
  • 置信度(confidence):指某规则的支持度所占的比例。

举个例子,假设我们有一个购物清单如下:

| 椅子 | 桌子 | 电视 | 杯子 | | ---- | ---- | ---- | ---- | | ✔️ | ✔️ | | | | | ✔️ | ✔️ | ✔️ | | ✔️ | | | | | | | | ✔️ | | | ✔️ | ✔️ | ✔️ |

则项集 {桌子,电视} 的支持度为 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_supportmin_threshold 分别是支持度和置信度的阈值,use_colnames=True 则表示使用列名而不是列索引来标识项集。输出的第一个 DataFrame 为频繁项集,包括支持度和对应的项集;第二个 DataFrame 为关联规则,包括前提、结论、前提支持度、结论支持度、关联支持度、置信度、提升度、Leverage 和 Conviction 等指标。

总结

关联规则是大数据分析中重要的一种方法。利用 Apriori 等算法可以从原始数据中挖掘出物品之间的内在联系,有利于商家制定更加精准的营销策略。在 Python 中,我们可以使用 mlxtend 库中的 aprioriassociation_rules 函数来计算频繁项集和关联规则。