12 数据挖掘技术之关联规则

在数据挖掘领域,关联规则是揭示数据间潜在关系的重要方法。它通常用于找出不同变量之间的关系,广泛应用于市场篮子分析、推荐系统等场景。本篇文章将详细介绍关联规则的基本概念、常用算法、实际应用案例,以及如何使用 Python 实现简单的关联规则挖掘。

关联规则的基本概念

关联规则的形式可以表示为 $X \Rightarrow Y$,其中 $X$ 和 $Y$ 是项集。这个规则的意思是:如果在一个事务中出现了 $X$,那么在很多情况下也会出现 $Y$。主要有以下几个重要指标来衡量关联规则的有效性:

  • **支持度 (Support)**:表示包含项集 $X \cup Y$ 的事务所占的比例,公式为:
    $$
    \text{Support}(X \cup Y) = \frac{\text{count}(X \cup Y)}{\text{total transactions}}
    $$

  • **置信度 (Confidence)**:表示在包含项集 $X$ 的事务中,同时也包含项集 $Y$ 的比例,公式为:
    $$
    \text{Confidence}(X \Rightarrow Y) = \frac{\text{Support}(X \cup Y)}{\text{Support}(X)}
    $$

  • **提升度 (Lift)**:表示规则 $X \Rightarrow Y$ 的强度,与 $X$ 和 $Y$ 的独立性关系有关,公式为:
    $$
    \text{Lift}(X \Rightarrow Y) = \frac{\text{Confidence}(X \Rightarrow Y)}{\text{Support}(Y)}
    $$

关联规则算法

在数据挖掘中,最著名的关联规则挖掘算法是 Apriori 算法和 FP-Growth 算法。

Apriori 算法

Apriori算法基于“先频繁后生成”的思想,借助支持度来发现频繁项集。其主要步骤如下:

  1. 生成候选项集:从单个项开始,计算所有项的支持度,找到频繁项集。
  2. 剪枝:利用频繁项集的特性,删去不可能成为频繁项集的项集。
  3. 迭代:不断重复上述过程,直到无法生成新的频繁项集为止。

FP-Growth 算法

与 Apriori 算法不同,FP-Growth算法不生成候选项集,而是构建一个 FP-tree(Frequent Pattern Tree),直接从中挖掘频繁项集。其步骤如下:

  1. 构建 FP-tree:扫描数据库,统计每个项的频次,构建树结构。
  2. 挖掘频繁项集:从 FP-tree 中递归地挖掘频繁项集,利用条件模式基生成局部频繁项集。

案例分析:市场篮子分析

下面我们通过一个市场篮子分析的案例来具体演示如何利用 Python 进行关联规则挖掘。

假设有以下交易数据:

Transaction ID Items
1 Milk, Bread
2 Milk, Diaper, Beer
3 Bread, Diaper
4 Milk, Bread, Diaper
5 Bread, Diaper

我们将使用 mlxtend 库中的 aprioriassociation_rules 函数来实现关联规则挖掘。

代码示例

首先,安装 mlxtend 库(如果尚未安装):

1
pip install mlxtend

接下来,使用以下代码进行关联规则挖掘:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import pandas as pd
from mlxtend.frequent_patterns import apriori, association_rules

# 创建事务数据
data = [['Milk', 'Bread'],
['Milk', 'Diaper', 'Beer'],
['Bread', 'Diaper'],
['Milk', 'Bread', 'Diaper'],
['Bread', 'Diaper']]

# 转换为 DataFrame 格式
df = pd.DataFrame(data, columns=['Items'])

# 将事务数据转换为一个热编码格式(One-Hot Encoding)
from mlxtend.preprocessing import TransactionEncoder
encoder = TransactionEncoder()
onehot = encoder.fit(data).transform(data)
onehot_df = pd.DataFrame(onehot, columns=encoder.columns_)

# 计算频繁项集
frequent_itemsets = apriori(onehot_df, min_support=0.4, use_colnames=True)

# 生成关联规则
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.5)

# 输出结果
print(rules)

结果解析

输出的关联规则将显示不同项之间的关系,比如如果购买了 Milk,则购买 Bread 的概率为 Confidence 的值。我们可以由此判断哪些商品的组合是值得推荐的。

总结

通过本篇文章,我们详细介绍了数据挖掘技术中的 关联规则,了解了其基本概念、常用算法及应用案例。采用 AprioriFP-Growth 算法,我们可以有效地发现数据中的有趣关系,下一篇我们将讨论模型评估与选择中的各种评估指标,帮助我们更好地理解算法的效果。

希望本系列教程能帮助数据挖掘小白们掌握相关知识,欢迎在后续学习中继续跟随我们的内容!

12 数据挖掘技术之关联规则

https://zglg.work/data-mining-zero/12/

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-11

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论