paper: https://www.researchgate.net/publication/221654035_FreeSpan_Frequent_pattern-projected_sequential_pattern_mining
FreeSpan: Frequent pattern projected sequential pattern mining
基于频繁模式投影的序列模式挖掘
基于频繁模式投影的序列模式挖掘算法,该算法主要利用投影,每次选出长度为2的频繁序列,再递归的对其产生的投影进行挖掘,最终挖掘出所有的序列模式。
算法流程:
给定序列数据库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 ⟨b:5,c:4,a:3,d:3,e:3,f:3⟩
扫描S,构建频繁项矩阵,是一个三角矩阵
F [ x , y ] F[x,y] F[x,y](其中x, y为频繁项)由一个三元组(A,B,C), A表示x发生在y前面的次数(一条数据为1次),如 x y xy xyB表示y发生在x前面的次数,如 y x yx yx, C表示x和y发生在同一个项集的次数,比如 ( x y ) (xy) (xy).
这个矩阵是按行看的。
个人理解在扫描每条数据的时候,对于每条数据应该是 O ( n 2 ) O(n^2) O(n2)的时间复杂度,才能找到所有可能的组合。
,因为 F [ x , y ] F[x,y] F[x,y]包含了由x 和y组成的三个序列序列模式项,首先根据计数值和最小支持度筛选小于支持度的组合,然后将这些组合写出来,比如 F [ b , e ] F[b,e] F[b,e] 对应的三个项为 b e , e b , ( b e ) be,eb,(be) be,eb,(be)。
这一步生成的是table3中的第二列,其中第一列是跟根据频繁一项集的支持度来进排序的。
重复项标记是根据第二列的结果生成的符号标记,第二列中不包含重复的例如 b b bb bb这样的项, 如果 F [ b , b ] F[b,b] F[b,b]支持度也满足条件,那就要在对应符号标记中记为 b + b^+ b+.
注意符号标记项中的 { } \{\} {}和 < > <> <>表示意义不同, < > <> <>类的标记是不可变的,而 { } \{\} {}是可以任意组合的,比如 { b + f + } \{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) bbf,fbf,(bf)b,(bf)f,(bf)bf)(根据重复模式生成pattern需要扫描数据集)。标记项为了将重复的和非重复的模式项都找出来。
对于第一列中有2-sequence,求其前缀投影得到第四列,如果没有前缀,那么其对应的序列模式在第三部就已经被求出来了。
否则对第四列进行递归操作得到,每次将投影数据库的项与已求出的频繁序列进行拼接,进行递归操作。
上述过程中一共就扫描了三次数据集,第一次生成的频繁1项集,第二次生成频繁矩阵,第三次生成重复模式和投影数据库。