首页 > 代码库 > 增量关联规则挖掘—FUP算法
增量关联规则挖掘—FUP算法
一、背景介绍
关联规则( Association rule)概念最初由Agrawal提出,是数据挖掘的一个重要研究领域, 其目的是发现数据集中有用的频繁模式。
静态关联规则挖掘,是在固定数据集和支持度下,发现数据集中的频繁项集,如 Apriori、FP-Growth、Ecalt等。现实问题中,多数时候,支持度和数据集是会发生变化的,Cheung提出了FUP (Fast UPdate)算法,主要针对数据集增大的情况,FUP算法是第一个增量关联规则挖掘算法。
二、相关定义
数据集DB = {T1,T2,T3,…,Tn},数据集的大小N = |DB|,Ti是其中一条事务,I = {I1,I2,…,Im}是事务的项集,Ti是I的子集。项集 X,Y( X,Y是I的子集) 且 X∩Y = Φ, X=〉Y 为关联规则. X在数据集中出现的次数为 count( X) ,其支持度为: support( X)= count( X) /D ,对于最小支持度 minsup, 若support ( X) ≥minsup,称为频繁项.
增量关联规则挖掘是指数据集变化或者支持度变化时的关联规则挖掘。数据集增加时新增数据集为db,增量数据集的大小d = |db|
频繁项集挖掘的重要性质:频繁项集的非空子集也是频繁项集,非频繁项集的超集也是非频繁项集。
三、算法描述
(1)输入
DB 原数据集;
L k 为 DB 上的 k 项集;
db 新增数据集;
s支持度阈值
(2)输出
DB + db 上的频繁项集 L‘ k
(3)算法
a)频繁1项集挖掘
扫描 db,获得 db 上的候选集 C; 对原 1 项集在 DB + db的频繁项加到 L‘1 中; 扫描 DB,统计 C 在 DB 上的支持度, 频繁项加入到 L‘1 中,C中的非频繁项加入到P中,扫描事务数据库时,从所有事物数据中将在P中的项移 除(减少扫描数据的大小),返回频繁1项集L‘1。
b)频繁2项集挖掘(同理:频繁多项集挖掘)
对原频繁2项集中的频繁项,若其子集属于L1 – L’1,则直接淘汰,扫描db,统计将L2中剩余的项集在DB+db中任是频繁项集的部分加入到L’2。C2由L’1规约得到,去掉和L2中重复的项,剩下的项集统计在db中支持度,过 滤掉不可能成为频繁项集的部分,扫描DB,将新增的频繁项集加入到L’2中,非频繁项集加入到p中,过滤事务数据中属于p的项。依次挖掘,直到找到所有频繁项集即可。
四、例子
D = 1000 d = 100 s = 3%。I1,12,I3, I4 是事务的项.
I1,12是频繁1项集
I1.supportD = 32 I2.supportD = 31
I3.supporitD= 28
扫描db
I1.supportd = 4 I2.supportd = 1
I3.supportd = 6 I4.supportd = 2
I1.supportUD = 36 >1100*3% I2.supportUD = 32 < 1100 * 3 %
I1加入到L’1中
I3、I4不在L1中,I3.supportd = 6>100*3% I4.supportd = 2<100*3%
I3加入到C1中,I4加入到P中
扫描DB(过滤掉P中的非频繁项集)
I3.supportUD = 34 >1100*3% I3加入到L’1中
输出L’1 ={ I1 ,I3}
增量关联规则挖掘—FUP算法