频繁模式的增量挖掘

         假设 DB 表示原数据库,s 表示最小支持度阈值,FPDB 表示 DB 中对应 s 的 频繁模式集。假设有一批新事务构成的增量数据库 db 被追加到 DB 中,U=DB ∪db 表示整个更新后的新数据库。根据相同的支持度阈值 s,如果一个模式 X 在 U 中满足 Support(X)≥s×|U|,则 X 在 U 中是频繁的。假设新的频繁模式集为 FPU。

        频繁模式的增量挖掘,就是通过已获得的频繁模式和更新后的数据库,按 照与原来相同的最小支持度阈值 s,高效发现新的频繁模式集 FPU。注意由于数 据库的改变,即使支持度阈值没有变化,DB 中的频繁模式未必是 U 中的频繁模 式,另一方面,原来在 DB 中不频繁的模式,有可能成为 U 中的频繁模式。假设 NFPDB 表示 DB 中不频繁的模式,NFPdb 表示 db 中不频繁的模式。对于所有 的模式,可以分成四类:

(1) C1 = FPDB ∩ FPdb,即在 DB 中频繁,在 db 中也频繁的模式;

(2) C2 = FPDB - FPdb,即在 DB 中频繁,在 db 中不频繁的模式;

(3) C3 = FPdb - FPDB,即在 db 中频繁,在 DB 中不频繁的模式;

(4) C4 = NFPDB ∩ NFPdb,即在 DB 中不频繁,在 db 中也不频繁的模式。

        C1 中的模式肯定是 U 中的频繁 模式。

        C4 中的模式肯定不是 U 中的频 繁模式。

        C2 和 C3 中的模式在 U 中有可能是频繁的,也可能是不频繁的,它们需要分别带入 db 和 DB 中去计算它们的频度信息。

        一种完全不依赖上次挖掘方法的增量挖掘策略: 采用任何一种挖掘方法挖掘原始数据库 DB,得到频繁模式集 FPDB。在增量数据 库 db 到来后,对增量数据库 db 进行挖掘(可采用任何一种挖掘方法),得到 db 中的频繁模式集 FPdb;挖掘的同时更新 FPDB 中的模式(C1和 C2)的支持度,可以 确定在更新后的频繁情况。对于在 FPdb 中,但不在 FPDB 中的模式(C3),检验原 始数据库 DB,确定其是否是 U 中的频繁模式。

        这样,通过已获得的频繁模式和更新后的数据库,按照与原来相同的最小 支持度阈值 s,可以高效地发现新的频繁模式集 FPU。可以看出,由于该方法完全不依赖上次挖掘所采用的方法,伸缩性较强。

扫描二维码关注公众号,回复: 13187243 查看本文章
Input: DB, db, s, FPDB
Output: FPU
Method: Call IM-FPM (DB, db, s, FPDB) 
Procedure IM-FPM (DB, db, s, UFPDB) { 
    call Share-struct-Construction (db, s, SΦ); 
    FPdb = Share-FPM (SΦ,Φ, s); 
    C1 = FPDB ∩ FPdb; 
    C2 = FPDB - FPdb; 
    C3 = FPdb - FPDB; 
    for each transaction Ti ∈ DB 
        for each candidate c ∈ C3
            if (c ∈ Ti) 
                c.support ++; 
    for each transaction ti ∈ db 
        for each candidate c ∈ C2
            if (c ∈ ti) 
                c.support ++; 
    FPU = C1 {c ∪ ∈C2 ∨ c∈C3 | c.support ≥ s}; 
    return FPU; 
} 

猜你喜欢

转载自blog.csdn.net/weixin_48419914/article/details/121359049