Jupyter AI

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

📅 发表日期: 2024年8月10日

分类: ⛏️数据挖掘入门

👁️阅读: --

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

关联规则的基本概念

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

  • 支持度 (Support):表示包含项集 XYX \cup Y 的事务所占的比例,公式为:

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

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

    Lift(XY)=Confidence(XY)Support(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 库(如果尚未安装):

pip install mlxtend

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

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 算法,我们可以有效地发现数据中的有趣关系,下一篇我们将讨论模型评估与选择中的各种评估指标,帮助我们更好地理解算法的效果。

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