数据挖掘学习笔记:Apriori算法介绍和使用Python的两种实现(原始版和改进版)

本文深入探讨了Apriori算法的基本原理及其Python实现,重点介绍了原始版与改进版的区别。通过实证分析,对比了两版本在处理9835个事务数据集上的效率,展示了改进版在减少事务扫描次数上的显著优势。

简述

数据挖掘课程的作业,要求研究一个算法并写一篇实验报告。本次报告使用Overleaf编写,模板使用的IEEE期刊,后续将展示本次报告源码。以下正文内容是该报告的中文翻译,内容有删改。
2022-5-27: 增加代码注释中
2022-6-03: 代码注释完成, 编写笔记中
2022-6-17: 笔记编写完成, 添加报告源码

本次报告使用Overleaf编写,模板使用的IEEE期刊。点击这里获取报告源代码

正文

摘要

       数据挖掘的关联规则算法有很多种。关联规则算法是在数据库中发现条目之间特殊关系的一种方法。关联规则从可以定量分析关系的角度来判断项目之间是否存在关联。Apriroi算法是目前最流行的关联规则算法之一,具有简单易学的特点。本文主要介绍了Apriori的基本知识,以及它的Python实现。Python是一种流行的脚本语言,用于人工智能、数据分析等。此外,我将展示一个基于数学集合理论改进的Apriori。

介绍

       关联规则的概念由Rakesh Agrawal、Tomasz Imielinski和Arun Swami引入,用于发现超市大规模交易数据中产品之间的规律性。如摘要所述,关联规则挖掘使用以下定义定量描述商品之间的关系:

  1. I = { i 1 , i 2 , i 3 . . . i n } \rm I= \left \{i_1,i_2,i_3...i_n \right \} I={ i1,i2,i3...in}是一个含有n个条目的集合,令 T = { t 1 , t 2 , t 3 . . . t m } \rm T= \left \{t_1,t_2,t_3...t_m \right \} T={ t1,t2,t3...tm}是一组事务,每个事务都有一个ID号,是集合 I \rm I I的一个子集。
  2. ;如果 A ⊆ B \rm A \subseteq B AB, 则称 B \rm B B满足 A \rm A A
  3. 如果 X ⊆ I \rm X \subseteq I XI, 则称 X X X项集
  4. 形式如: X ⟹ Y \rm X \Longrightarrow Y XY, X \rm X X Y \rm Y Y 都是项集, 且 X ∩ Y = ∅ \rm X \cap Y=\emptyset XY= 被称作关联规则
  5. X \rm X X为项集, 支持度是T中满足X的事务的比例。它的计算公式如下:
    S u p p o r t ( X ) = S i z e ( { t i ∣ t i ∈ T , X ⊆ t i } ) S i z e ( { t i ∣ t i ∈ T } ) Support(X)=\frac{Size(\left \{ t_i \mid ti\in T, X\subseteq ti\right \})}{Size(\left \{ ti \mid ti \in T \right \})} Support(X)=Size({ titiT})Size({ titiT,Xti})
  6. 置信度用于计算满足X同时满足Y的所有交易的百分比,计算公式如下:
    C o n f i d e n c e ( X ⟹ Y ) = S u p p o r t ( X ∪ Y ) S u p p o r t ( X ) Confidence\left ( X\Longrightarrow Y \right ) = \frac{Support(X\cup Y)}{Support(X)} Confidence(XY)=Support(X)Support(XY)
  7. 支持度大于或等于最小支持度阈值的项集被定义为频繁项集

       根据关联规则处理的的对象类型,可以将关联规则分为两种类型:

  1. 数量关联规则(quantitative association rules)
  2. 布尔关联规则(Boolean association rules)

        Apriori是布尔关联规则的著名算法之一,由R. Agrawal和R. Srikant在1994年给出了利用BFS和剪枝寻找频繁项集的算法,该算法的诞生还基于以下两个重要定理和一个定义:

  1. 如果一个项目集是频繁的,那么它的所有子集也必须是频繁的.
  2. 如果一个项集是非频繁集,那么它的所有超集也是非频繁集.
  3. 如果一个包含k个项目的项目集被定义为k-项目集。

这两个定理是集合定理的结论。我将用维恩图来证明它们。图1显示了项集X和项集Y之间的关联。红色圆圈包含所有满足项集X的事务,而那些包含项集Y的事务位于白色圆圈中。任何满足X和Y的交易都位于粉色区域。换句话说,粉色部分是红色和白色的交集。根据数学集合的属性,粉色区域包含的事务数小于或等于红色和白色区域包含的最小事务数。给定相同的事务总数,一个集合的支持度与该集合包含的事务数量之间存在线性正相关。因此,粉色的支持度小于或等于红色和白色的最小支持度。假设有一个项集 X ∪ Y \rm X \cup Y

评论 19
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值