FreeSpan算法

paper: https://www.researchgate.net/publication/221654035_FreeSpan_Frequent_pattern-projected_sequential_pattern_mining
FreeSpan: Frequent pattern projected sequential pattern mining

基于频繁模式投影的序列模式挖掘

FreeSpan算法

基于频繁模式投影的序列模式挖掘算法,该算法主要利用投影,每次选出长度为2的频繁序列,再递归的对其产生的投影进行挖掘,最终挖掘出所有的序列模式。
算法流程:

(1)生成频繁项

给定序列数据库S,以及最小支持度sup。第一扫描S找到其中所有的频繁1项,按照降序排列。
比如如下的S,可以生成频繁1项集 b : 5 , c : 4 , a : 3 , d : 3 , e : 3 , f : 3 \langle b : 5, c : 4, a : 3, d : 3, e : 3, f :3\rangle
在这里插入图片描述

(2) 生成频繁矩阵

扫描S,构建频繁项矩阵,是一个三角矩阵
在这里插入图片描述
F [ x , y ] F[x,y] (其中x, y为频繁项)由一个三元组(A,B,C), A表示x发生在y前面的次数(一条数据为1次),如 x y xy B表示y发生在x前面的次数,如 y x yx , C表示x和y发生在同一个项集的次数,比如 ( x y ) (xy) .

这个矩阵是按行看的。

个人理解在扫描每条数据的时候,对于每条数据应该是 O ( n 2 ) O(n^2) 的时间复杂度,才能找到所有可能的组合。
在这里插入图片描述

(3)生成长度为2的序列模式项

,因为 F [ x , y ] F[x,y] 包含了由x 和y组成的三个序列序列模式项,首先根据计数值和最小支持度筛选小于支持度的组合,然后将这些组合写出来,比如 F [ b , e ] F[b,e] 对应的三个项为 b e , e b , ( b e ) be,eb,(be)
这一步生成的是table3中的第二列,其中第一列是跟根据频繁一项集的支持度来进排序的。

(4)生成重复项标记

重复项标记是根据第二列的结果生成的符号标记,第二列中不包含重复的例如 b b bb 这样的项, 如果 F [ b , b ] F[b,b] 支持度也满足条件,那就要在对应符号标记中记为 b + b^+ .
注意符号标记项中的 { } \{\} < > <> 表示意义不同, < > <> 类的标记是不可变的,而 { } \{\} 是可以任意组合的,比如 { b + f + } \{b^+f^+\} 可以表示为 b b f , f b f , ( b f ) b , ( b f ) f , ( b f ) b f ) bbf,fbf,(bf)b,(bf)f,(bf)bf) (根据重复模式生成pattern需要扫描数据集)。标记项为了将重复的和非重复的模式项都找出来。

(5)生成投影数据库

对于第一列中有2-sequence,求其前缀投影得到第四列,如果没有前缀,那么其对应的序列模式在第三部就已经被求出来了。
否则对第四列进行递归操作得到,每次将投影数据库的项与已求出的频繁序列进行拼接,进行递归操作。

上述过程中一共就扫描了三次数据集,第一次生成的频繁1项集,第二次生成频繁矩阵,第三次生成重复模式和投影数据库。

猜你喜欢

转载自blog.csdn.net/dpengwang/article/details/93365815