第6章 频繁模式挖掘
分析包括频繁模式挖掘,序列模式挖掘

分析包括频繁模式挖掘,序列模式挖掘近年来,数据挖掘技术在各行各业得到了广泛的应用,为各类企业提供了重要的决策支持。
在众多的数据挖掘技术中,频繁模式挖掘和序列模式挖掘是非常重要的应用。
本文分析了这两种数据挖掘技术的原理以及实际应用。
一、频繁模式挖掘频繁模式挖掘是数据挖掘中最重要也是最常用的技术,它通过分析数据中的特定规则,找出具有某种特定频率的项集,即能够很好地表明某些事件发生之间存在着某种关联,从而更好地理解结果。
频繁模式挖掘利用支持度(Support)和置信度(Confidence)这两个重要的概念来衡量模式的可信度。
支持度指的是一个项集在数据库中出现的次数占数据库总次数的比例,而置信度指的是某一个项集发生的条件概率。
通过不断的比对,可以找出满足最小支持度和最小置信度的频繁项集,从而发现相应的模式。
频繁模式挖掘技术主要应用于电子商务等行业中。
比如,在电子商务中,可以将客户购买的一系列商品之间的关联性作为模式进行分析,从而预测客户的需求,为其定制合适的商品组合,以提高客户的购物体验。
二、序列模式挖掘序列模式挖掘是一种特殊的数据挖掘技术,它可以从给定数据库中自动挖掘出一系列定义为“序列”的模式,也称之为“活动序列”或“时间序列”。
这种技术可以分析大量的事件信息,以发现可能存在的某种规律,这种规律可以用来预测未来的事件发生可能性。
序列模式挖掘技术通常计算序列中各个活动出现的频率,基于此可以分析不同的活动之间的相应关系,根据计算得出的相关结果,可以更好地理解未来可能发生的情况,并做出合理的业务决策。
序列模式挖掘技术在推荐系统、社交网络分析、金融分析等行业中被广泛应用。
比如,在推荐系统中,可以分析用户的点击行为,以发现用户最有可能购买某种商品的特征,做出个性化推荐;在社交网络分析中,可以分析不同网络节点之间的序列关系,从而发现社交网络中的社群结构;在金融分析中,可以对股票价格、汇率等金融数据进行分析,以发现金融市场的趋势,为决策者提供参考。
频繁模式及关联规则挖掘技术

{A} {B}
2 3
L1
{C}
3
{D}
1
{E}
3
Itemset sup
{A}
2
{B}
3
{C}
3
{E}
3
40
B, E
L2 Itemset sup
{A, C} 2 {B, C} 2 {B, E} 3 {C, E} 2
C2 Itemset sup
{A, B} 1 {A, C} 2 {A, E} 1 {B, C} 2 {B, E} 3 {C, E} 2
基本思想分而治之用fptree递归增长频繁集方法对每个项生成它的条件模式库然后是它的条件fptree对每个新生成的条件fptree重复这个步骤直到结果fptree为空或只含唯一的一个路径此路径的每个子路径对应的项集都是频繁集fptree其临床表现为持续性进行性的多个智能功能域障碍的临床综合征包括记忆语言视空间能力应用辨认执行功能及计算力等认知功能的损害
关联规则的性质:
性质1:频繁项集的子集必为频繁项集。 性质2:非频繁项集的超集一定是非频繁的。 Apriori算法运用性质1,通过已知的频繁项集构成
长度更大的项集,并将其称为潜在频繁项集。潜在 频繁k项集的集合Ck 是指由有可能成为频繁k项集的 项集组成的集合。以后只需计算潜在频繁项集的支 持度,而不必计算所有不同项集的支持度,因此在 一定程度上减少了计算量。
PARTITION,FPGrowth。
挖掘频繁集 不用生成候选集
用Frequent-Pattern tree (FP-tree) 结构压缩数据库, 高度浓缩,同时对频繁集的挖掘又完备的 避免代价较高的数据库扫描
开发一种高效的基于FP-tree的频繁集挖掘算法 采用分而治之的方法学:分解数据挖掘任务为 小任务 避免生成关联规则: 只使用部分数据库!
第6章 数据挖掘技术2(关联规则挖掘)

求L3。比较候选支持度计数与最小支持度计数得: 项集 I1,I2,I3 I1,I2,I5 支持度计数 2 2
所以 L3=C3 求C4= L3 ∞ L3={I1,I2,I3,I5} 子集{I2,I3,I5} L3,故剪去; 故C4=,算法终止。 结果为L=L1 U L2 U L3
24
19:40
定义5:强关联规则。同时满足最小支持度(min_sup) 和最小可信度(min_conf)的规则称之为强关联规 则 定义6:如果项集满足最小支持度,则它称之为频繁项 集(Frequent Itemset)。
19:40 9
2. 关联规则挖掘过程
关联规则的挖掘一般分为两个过程: (1)找出所有的频繁项集:找出支持度大于 最小支持度的项集,即频繁项集。
由L1 产生C2
项集 支持度 计数 {I1} {I2} {I3} {I4} {I5} 6 7 6 2 2
19:40
19
C2
C2
比较候 支持度 选支持 度计数 4 与最小 4 支持度 1 计数 2
4 2 2 0 1 0
L2
项集 支持度
{I1,I4} {I1,I5} {I2,I3} {I2,I4} {I2,I5} {I3,I4} {I3,I5} {I4,I5}
Apriori是挖掘关联规则的一个重要方法。 算法分为两个子问题: 找到所有支持度大于最小支持度的项集 (Itemset),这些项集称为频繁集 (Frequent Itemset)。 使用第1步找到的频繁集产生规则。
19:40
14
Apriori 使用一种称作逐层搜索的迭代方法, “K-项集”用于探索“K+1-项集”。 1.首先,找出频繁“1-项集”的集合。该集合 记作L1。L1用于找频繁“2-项集”的集合L2, 而L2用于找L3, 如此下去,直到不能找到“K-项集”。找每个 LK需要一次数据库扫描。
模式识别与数据挖掘期末总结

模式识别与数据挖掘期末总结第一章概述1.数据分析是指采用适当的统计分析方法对收集到的数据进行分析、概括和总结,对数据进行恰当地描述,提取出有用的信息的过程。
2.数据挖掘(Data Mining,DM) 是指从海量的数据中通过相关的算法来发现隐藏在数据中的规律和知识的过程。
3.数据挖掘技术的基本任务主要体现在:分类与回归、聚类、关联规则发现、时序模式、异常检测4.数据挖掘的方法:数据泛化、关联与相关分析、分类与回归、聚类分析、异常检测、离群点分析、5.数据挖掘流程:(1)明确问题:数据挖掘的首要工作是研究发现何种知识。
(2)数据准备(数据收集和数据预处理):数据选取、确定操作对象,即目标数据,一般是从原始数据库中抽取的组数据;数据预处理一般包括:消除噪声、推导计算缺值数据、消除重复记录、完成数据类型转换。
(3)数据挖掘:确定数据挖掘的任务,例如:分类、聚类、关联规则发现或序列模式发现等。
确定了挖掘任务后,就要决定使用什么样的算法。
(4)结果解释和评估:对于数据挖掘出来的模式,要进行评估,删除冗余或无关的模式。
如果模式不满足要求,需要重复先前的过程。
6.分类(Classification)是构造一个分类函数(分类模型),把具有某些特征的数据项映射到某个给定的类别上。
7.分类过程由两步构成:模型创建和模型使用。
8.分类典型方法:决策树,朴素贝叶斯分类,支持向量机,神经网络,规则分类器,基于模式的分类,逻辑回归9.聚类就是将数据划分或分割成相交或者不相交的群组的过程,通过确定数据之间在预先指定的属性上的相似性就可以完成聚类任务。
划分的原则是保持最大的组内相似性和最小的组间相似性10.机器学习主要包括监督学习、无监督学习、半监督学习等1.(1)标称属性(nominal attribute):类别,状态或事物的名字(2):布尔属性(3)序数属性(ordinal attribute):尺寸={小,中,大},军衔,职称【前面三种都是定性的】(4)数值属性(numeric attribute): 定量度量,用整数或实数值表示●区间标度(interval-scaled)属性:温度●比率标度(ratio-scaled)属性:度量重量、高度、速度和货币量●离散属性●连续属性2.数据的基本统计描述三个主要方面:中心趋势度量、数据分散度量、基本统计图●中心趋势度量:均值、加权算数平均数、中位数、众数、中列数(最大和最小值的平均值)●数据分散度量:极差(最大值与最小值之间的差距)、分位数(小于x的数据值最多为k/q,而大于x的数据值最多为(q-k)/q)、说明(特征化,区分,关联,分类,聚类,趋势/跑偏,异常值分析等)、四分位数、五数概括、离群点、盒图、方差、标准差●基本统计图:五数概括、箱图、直方图、饼图、散点图3.数据的相似性与相异性相异性:●标称属性:d(i,j)=1−m【p为涉及属性个数,m:若两个对象匹配为1否则p为0】●二元属性:d(i,j)=p+nm+n+p+q●数值属性:欧几里得距离:曼哈顿距离:闵可夫斯基距离:切比雪夫距离:●序数属性:【r是排名的值,M是排序的最大值】●余弦相似性:第三章数据预处理1.噪声数据:数据中存在着错误或异常(偏离期望值),如:血压和身高为0就是明显的错误。
高效频繁模式挖掘算法研究与优化

高效频繁模式挖掘算法研究与优化概述:频繁模式挖掘是数据挖掘领域的一个重要任务,旨在从大规模数据集中发现频繁出现的模式或项集。
这些频繁模式可以帮助我们理解数据集中的关联性,为决策支持、市场分析和资源管理提供支持。
然而,对于大规模数据集,挖掘频繁模式需要耗费大量的计算资源和时间。
因此,研究高效的频繁模式挖掘算法并进行优化是至关重要的。
一、频繁模式挖掘算法的基本原理频繁模式挖掘算法的核心思想是通过扫描数据集,统计每个项集的支持度,并筛选出频繁项集。
常用的频繁模式挖掘算法包括Apriori算法、FP-growth算法和Eclat算法。
1. Apriori算法Apriori算法是一种基于候选生成和剪枝策略的频繁模式挖掘算法。
该算法通过迭代的方式生成候选项集,并利用Apriori性质进行剪枝。
具体而言,Apriori算法首先扫描数据集获取候选1-项集,然后迭代生成候选k-项集,并利用Apriori原理进行剪枝。
最后,计算每个候选项集的支持度,筛选出频繁项集。
2. FP-growth算法FP-growth算法是一种基于前缀树和条件模式基的频繁模式挖掘算法。
该算法通过构建FP树(频繁模式树)来表示数据集。
通过建立FP树,可以快速获取频繁项集及其支持度。
FP-growth算法的主要步骤包括:构建FP树、从FP树中挖掘频繁项集。
3. Eclat算法Eclat算法是一种基于垂直数据格式的频繁模式挖掘算法。
该算法将事务数据库垂直化,对每个项构建条件垂直项目集索引,然后通过交集操作获取频繁项集。
Eclat算法的主要步骤包括:垂直化数据集、构建条件垂直项目集索引、交互操作获取频繁项集。
二、高效频繁模式挖掘算法的优化方法针对大规模数据集的频繁模式挖掘需要解决计算资源消耗大、时间复杂度高的问题,研究者们提出了一系列的优化方法,以提高算法的效率和性能。
1. 基于分布式计算的优化针对大规模数据集,可以将计算任务分布到多个计算节点上进行并行计算,以提高频繁模式挖掘的效率。
数据挖掘 第6章--挖掘频繁模式、关联和相关性ppt课件

con (A fiB ) d P ( e B |A n ) s cu p ep _ o cr o (A t u B )nt su pp _ o cr o (A t)unt
每个关联规则可由如下过程产生
➢ 对于每个频繁项集L,产生L的所有非空子集
➢ 对于每个非空子集s,如果 suppo_rctou(l)ntmin co_nf则输出规则
最新编辑ppt
4
购物篮分析
关联规则表示
➢ 如果问题的全域是商店中所有商品的集合,则对每种商品都可以用一个布尔量来 表示该商品是否被顾客购买,则每个购物篮都可以用一个布尔向量表示;而通过 分析布尔向量则可以得到商品被频繁关联或被同时购买的模式,这些模式就可以 用关联规则表示(0001001100,这种方法丢失了什么信息?)
最新编辑ppt
13
• 频繁项集挖掘方法
最新编辑ppt
Apriori算法:通过限制候选产生发现频繁项集
Apriori算法是挖掘布尔关联规则频繁项集的算法
Apriori算法利用的是Apriori性质
➢ 频繁项集的所有非空子集也必须是频繁的
如果 {beer, diaper, nuts} 是频繁的, {beer, diaper}也是
关联规则的两个兴趣度度量
➢ 支持度 bu(X y,"scom")p u btue(X yr,"ssoft"w ) are ➢ 置信度 [su pp or2% tc,onfid 6% e 0n]ce
最新编辑ppt
5
频繁项集、闭项集和关联规则
频繁项集、闭项集基本概念
➢ k-项集:包含k个项的集合。例如:{牛奶,面包,黄油}是个3-项集 ➢ 项集的频率是指包含项集的事务数 ➢ 如果项集的频率大于最小支持度×D中的事务总数,则称该项集为频繁项集 ➢ 项集X在数据集D中是闭的,即不存在真超项集Y,使得Y与X在D中具有相同的
频繁模式挖掘算法(Apriori)

实验一频繁模式挖掘算法(Apriori)一、实验目的1、理解频繁模式和关联规则2、掌握频繁模式挖掘算法Apriori3、为改进Apriori打下基础二、实验内容1、选定一个数据集(可以参考教学中使用的数据集)2、选择合适的实现环境和工具实现算法,本次试验采用的是C++3、根据设置的最小支持度和置信度,给出数据集的频繁模式集三、实验原理该算法的基本思想是:Apriori使用一种称作逐层搜索的迭代方法,k项集用于探索(k+1)项集。
首先,通过扫描数据库,累积每个项的计数,并收集满足最小支持度的项,找出频繁1项集的集合。
该集合记作L1.然后,L1用于找频繁2项集的集合L2,L2用于找L3,如此迭代,直到不能再找到频繁k项集。
找每个Lk需要一次数据库全扫描。
Apriori性质:频繁项集的所有非空子集也必是频繁的。
Apriori算法主要包括连接步和剪枝步两步组成。
在连接步和剪枝步中采用Apriori性质可以提高算法的效率。
四、实验要求1、数据集具有一定的代表性,可以使用数据库技术管理2、最小支持度和置信度可以设置3、实现界面友好4、提交实验报告:实验题目、目的、数据集描述、实验环境、过程、结果和分析等。
五、实验步骤1、所采用的数据集对于数据集,取最小支持度min_sup=2,最小置信度min_conf=0.8。
2、算法步骤①首先单趟扫描数据集,计算各个一项集的支持度,根据给定的最小支持度闵值,得到一项频繁集L1。
②然后通过连接运算,得到二项候选集,对每个候选集再次扫描数据集,得出每个候选集的支持度,再与最小支持度比较。
得到二项频繁集L2。
③如此进行下去,直到不能连接产生新的候选集为止。
④由频繁项集产生关联规则,关联规则产生步骤如下:1)对于每个频繁项集l,产生其所有非空真子集;2)对于每个非空真子集s,如果support_count(l)/support_count(s)>=min_conf,则输出 s->(l-s),其中,min_conf是最小置信度阈值。
数据挖掘与分析学习笔记(频繁模式挖掘-项集挖掘)

项集挖掘
频繁项集挖掘算法
2.支撑计算:
生成候选项集后,就要进一步的计算每个候选模式X的支撑,以便判断该候选模式X是否为频繁项集。计算方法如下:
BruteForce(D,I,minsup) //I为项集,D为由项集I及其子集和事务标识符集合构成的事务数据集,minsup为最小支撑阈值。
F ← ∅ //初始化频繁项集集合为空集;
规则的相对支撑为:rsup( → ) =
sup
一个项集规则的置信度是一个事务中即包含项集X,也包含项集Y的条件概率,
即 = → = =
()
()
=
sup
sup()
如果一个项集规则的支撑大于等于预先设定的阈值,即sup ≥ minsup(minsup为预定阈值),则称这个规则是频繁
的,如果一个项集规则的置信度大于等于预先设定的阈值,即 → ≥ minconf,则称这个项集规则为强规则。
5.项集和规则挖掘
项集和规则挖掘的目的就是通过枚举所有的频繁项集及其置信度,获取频繁且高置信度的规则。
项集挖掘
频繁项集挖掘算法
1.候选生成:项集I中的每个子集也被称作候选,因为每个项集都可能是一个候选的频繁模式。
子集一定也是频繁的;反之如果一个项集是不频繁的,则这个项集的所有超集集也一定是不频繁的。Apriori算法利用了项
集的这一特性,采用逐层宽度优先算法来搜索项集空间,并修剪掉所有的不频繁的候选的超集。
Apriori(D,I,minsup):
← ∅ //初始化频繁项集集合为空集
(1) ← ሼ∅ሽ //单个项集的初始化前缀树
(+1) ← ( () ) //展开前缀树
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.3 FP-growth算法
频繁模式增长(frequent-pattern growth FP-Growth) • 将提供频繁项集的数据库压缩到FP-
22
树,但仍保持项集关联信息;
• 压缩后的数据库分成一组条件数据 库,每个数据库关联一个频繁项,
Header Table Item frequency head f 4 c 4 a 3 b 3 m 3 p 3
6.3 FP-growth算法
测试数据集
TID 1 2 3 4 5 6 7 8 9 Items 面包、可乐、麦片 牛奶、可乐 牛奶、面包、麦片 牛奶、可乐 面包、鸡蛋、麦片 牛奶、面包、可乐 牛奶、面包、鸡蛋、麦片 牛奶、面包、可乐 面包、可乐
24
例6.8 FP-growth算法
该数据集具有9个事务,设最小支持度为2,频繁项集的极 大长度为3。试使用FP-growth算法挖掘表6-2的事务数据中 的频繁项集。
C3
生成2项候选集 的集合C3
项集 牛奶,面包,可乐 牛奶,面包,麦片 面包,鸡蛋,麦片 支持度计数 2 2 2
L3
项集 支持度计数 生成频繁1项集 2 牛奶,面包,可乐 的集合L3 牛奶,面包,麦片 面包,鸡蛋,麦片 2 2
6.2 Apriori算法
关联规则的生成过程包括以下步骤:
15
6.2 Apriori算法
鸡蛋:1
6.3 FP-growth算法
NULL
28
面包:7
项集 面包 牛奶 可乐 麦片 鸡蛋 支持度记数 7 6 6 4 2
6.1 频繁模式概述
5
面包和牛奶共同出现在购 物车中,这代表了什么?
购买了油、牛奶、面包、 香蕉、洗衣液、还应该有 哪些商品?
买了这么多的鱼子酱,是 因为促销吗?
上图能挖掘出哪些有趣的模式?
6.1 频繁模式概述
6
Transaction-id
事务
Items bought
A, B, D A, C, D A, D, E B, E, F B, C, D, E, F
令最小置信度为70%,则得到的强关联规则有:
6.2 Apriori算法
17
6.2 Apriori算法
18
TID 1 2 3 4 5 6 7 8 9
Items 面包、可乐、麦片 牛奶、可乐 牛奶、面包、麦片 牛奶、可乐 面包、鸡蛋、麦片 牛奶、面包、可乐 牛奶、面包、鸡蛋、麦片 牛奶、面包、可乐 面包、可乐
令最小置信度为70%,则得到的强关联规则有:
6.2 Apriori算法
关联规则挖掘中重要的基础理论:
19
Chapter 6.3
FP-growth算法
6.3 FP-growth算法
Apriori算法的优缺点 • 优点
21
– 算法原理简单,抑郁理解。
• 缺点: – 需要多次扫描数据集 • 如果频繁项集最多包含10个项,需要扫描事务数据集10次,这需要很大的 I/O负载 – 产生大量频繁项集 • 如数据集有100项,可能产生的候选项个数为1.27*1030
牛奶:2
面包:2
麦片:1 可乐:2 牛奶:4 可乐:2
麦片:2
图6-12 {鸡蛋}的条件FP-tree
鸡蛋:1 麦片:1 麦片:2 可乐:2
对于项集{鸡蛋},开始向上找出所有 前缀路径,找出其中的频繁模式:
{面包,鸡蛋:2} {麦片,鸡蛋:2} {面包,麦片,鸡蛋:2}
鸡蛋:1
6.3 FP-growth算法
L2
项集 牛奶,面包 支持度计数 4 4 2 4 2 4 2
生成2项候选集 的集合C2
生成频繁1项集 的集合L2
牛奶,可乐 牛奶,麦片 面包,可乐 面包,鸡蛋 面包,麦片 鸡蛋,麦片
L={{牛奶}:6,{面包}:7,{可乐}:6, {鸡蛋}:2,{麦片}:4,{牛奶,面包}:4, {牛奶,可乐}:4,{牛奶,麦片}:2, {面包,可乐}:4,{面包,鸡蛋}:2, {面包,麦片}:4,{鸡蛋,麦片}:2, {牛奶,面包,可乐}:2, {牛奶,面包,麦片}:2, {面包,鸡蛋,麦片}7 8 9
Items 面包、可乐、麦片 牛奶、可乐 牛奶、面包、麦片 牛奶、可乐 面包、鸡蛋、麦片 牛奶、面包、可乐 牛奶、面包、鸡蛋、麦片 牛奶、面包、可乐 面包、可乐
对于上例6中L中的频繁3项集{牛奶,面包,麦片},可以 推导出非空子集: {{牛奶},{面包},{麦片},{牛奶,面包},{牛奶,麦片}, {面包,麦片}}。 可以构造的关联规则及置信度如下: {牛奶} {面包,麦片},置信度=2/6=33% {面包} {牛奶,麦片},置信度=2/7=29% {麦片} {牛奶,面包},置信度=2/4=50% {牛奶,面包} {麦片},置信度=2/4=50% {牛奶,麦片} {面包},置信度=2/2=100% {面包,麦片} {牛奶},置信度=2/2=100%
强关联规则
– 先验性质
如果一个项集是频繁的,那么它的所有非空子集也是频繁的。
Chapter 6.2
Apriori算法
6.2 Apriori算法
关联规则挖掘的步骤
9
1.找出所有频繁项集,即大于或等于最小支持度阈值的项集 2.由频繁项集产生强关联规则,这些规则必须大于或等于最小支 持度阈值和最小置信度阈值。
NULL
27
面包:7
项集 面包 牛奶 可乐 麦片 鸡蛋 支持度记数 7 6 6 4 2
牛奶:2
麦片:1 可乐:2 牛奶:4 可乐:2
对于项集{麦片},开始向上找出所有前 缀路径,找出其中的频繁模式:
{面包,麦片:4} {牛奶,麦片:2} {面包,牛奶,麦片:2}
鸡蛋:1 麦片:1 麦片:2 可乐:2
对于上例6中L中的频繁3项集{牛奶,面包,麦片},可以推导 出非空子集: {{牛奶},{面包},{麦片},{牛奶,面包},{牛奶,麦片},{面 包,麦片}}。 可以构造的后件只包含一个项的关联规则及置信度如下: {牛奶,面包} {麦片},置信度=2/4=50% {牛奶,麦片} {面包},置信度=2/2=100% {面包,麦片} {牛奶},置信度=2/2=100%
6.2 Apriori算法
C1
项集 支持度计数 6 7 6 2 4 项集
14
L1
支持度计数 6 7 6 2 4 牛奶 面包 可乐 鸡蛋 麦片
找到1项候选集 的集合C1
牛奶 面包 可乐 鸡蛋 麦片
生成频繁1项集 的集合L1
C2
项集 牛奶,面包 牛奶,可乐 牛奶,鸡蛋 牛奶,麦片 面包,可乐 面包,鸡蛋 面包,麦片 可乐,鸡蛋 可乐,麦片 鸡蛋,麦片 支持度计数 4 4 1 2 4 2 4 0 1 2
项集(5项集)
– 项集 包含0个或者多个项的集合 – 支持度s
10 20 30 40 50
事务中同时包含集合A和集合B的百分比
– 置信度c 事务中同时包含集合A和集合B的事务数 与包含集合A的事务数的百分比
6.1 频繁模式概述
– 频繁模式
支持度满足了最小支持度阈值的项集 设最小支持度阈值为30% 项集{A,D}的支持度为3/5=60%>30% ∴{������,������}是频繁项集。 事务ID 10 事务项 A, B, D
6.2 Apriori算法
测试数据集
13
TID 1 2 3 4 5 6 7 8 9
Items 面包、可乐、麦片 牛奶、可乐 牛奶、面包、麦片 牛奶、可乐 面包、鸡蛋、麦片 牛奶、面包、可乐 牛奶、面包、鸡蛋、麦片 牛奶、面包、可乐 面包、可乐
例6.7 Apriori算法
假设使用表中的事务数据,该数据库具有9 个事务,设最小支持度为2,试使用Apriori 算法挖掘表6-3的事务数据中的频繁项集。
{}
f:4
c:3 a:3 m:2 p:2 b:1 m:1 b:1
c:1
b:1 p:1
并分别挖掘每个条件数据库;
6.3 FP-growth算法
FP-growth算法实现步骤
23
①第一次扫描事务数据集D,确定每个1项集的支持度计数,将频繁1项集按照支持度计数降序排序, 得到排序后的频繁1项集集合L。 ②第二次扫描事务数据集D,读出每个事务并构建根结点为null的FP-tree。 i. 创建FP-tree的根结点,用null标记; ii. 将事务数据集D中的每个事务中的集,删除非频繁项,将频繁项按照L中的顺序重新排列事务中项的 顺序,并对每个事务创建一个分支; iii. 当为一个事务考虑增加分支时,沿共同前缀上的每个结点的计数加1,为跟随前缀后的项创建结点 并连接; iv. 创建一个项头表,以方便遍历,每个项通过一个结点链指向它在树中的出现。 ③从1项集的频繁项集中支持度最低的项开始,从项头表的结点链头指针,沿循每个频繁项的链接来 遍历FP-tree,找出该频繁项的所有前缀路径,构造该频繁项的条件模式基,并计算这些条件模式基中 每一项的支持度; ④通过条件模式基构造条件FP-tree,删除其中支持度低于最小支持度阈值的部分,满足最小支持度阈 值的部分则是频繁项集; ⑤递归地挖掘每个条件FP-tree,直到找到FP-tree为空或者FP-tree只有一条路径,该路径上的所有项的 组合都是频繁项集。
6.2 Apriori算法
Apriori算法
10
是布尔关联规则挖掘频繁项集的原创性算法,算法使用频繁项集性质的先 验知识。 • Apriori算法使用一种称为 逐层搜索的迭代方法 ,其中k 项集用于搜 索(k+1)项集。 • 首先,通过扫描数据库,累计每个项的个数,并收集满足最小支持 度的项,找出频繁1项集的集合。该集合记为L1,使用L1找出频繁2 项集的集合L2,使用L2找出L3,如此下去,直到不能再找到频繁k项
7
20
30 40 50