Page 453 - 《软件学报》2025年第5期
P. 453

王少鹏 等: 面向时间有序事务数据的聚簇频繁模式挖掘                                                      2353


                                                                                                   {f}
                 换为如图    1  所示  ICFPM-list, 并得到如图  2  所示  bvTimeMap, minCF=2.1. 将  1  项集{f}对应  ICFPM-list 通过
                                   {f}
                                                                                                {f}
                                                                      {f}
                 bvTimeMap  映射得到  TS =[12,13,13,14,14,18,19,20,20], 计算得到  Sup =9/15=0.6>minSup. 接下来对  TS 根据  Eps
                                                      {f}
                                                                                            {f}
                 和  minPts 使用  DBSCAN  算法进行划分, 得到    C ={c 1,  c 2 }={[12,13,13,14,14],[18,19,20,20]}, Noi =[]. 计算得到
                 NR =0<maxNR, 所以, {f}是一个聚簇频繁模式, 计算得到           L ={l 1 ,l 2 }={[12,14],[18,20]}并输出{f}和  L . 由于
                                                                                                  {f}
                   {f}
                                                                {f}
                  {f}
                                                                          {f}
                 |C |>minCF, 根据定理  1, {f}是一个聚簇频繁模式候选项集, 将         ICFPM-list 存储到  new-Candidate 1 中. 同理, 对其
                 他项做聚簇频繁模式判断, 得到          1  项集{e}和{f}是聚簇频繁模式且都可以作为聚簇频繁模式候选项集; {b}和{d}不
                 是聚簇频繁模式但可以作为聚簇频繁模式候选项集. 将                   new-Candidate 1 复制到  new-Candidates 中, 由于|new-
                 Candidates|>1, 所以, 调用  new-Generate (算法  4).
                    接下来进入     new-Generate 后, 首先初始化  new-Candidate 2 为空, 通过  new-Candidates 得到  itemsets={b, d, e, f}.
                 由于{d}和{e}有相同前缀        {∅}  , 且  d≻e, 所以, 可组合为  2  项集{d,e}. 将对应  new-Candidates({d}) 和  new-
                 Candidates({e}) 取交集得到  bitvec {d,e} =000000111100010, 映射得到  TS {d,e} =[13,14,14,15,20]. 由于{d,e}的所有长度
                 为  1  的子集{d}和{e}都在  itemsets 中, 根据定理  2, {d,e}及其超集有可能是聚簇频繁模式, 可以继续向下判断. 接下
                 来, 计算得到   Sup  {d,e} =0.3>minSup, 对  TS {d,e} 使用  DBSCAN  算法划分得到  C  {d,e} ={c 1 }={[13,14,14,15]}, Noi {d,e} =
                 [20], NR {d,e} =0.1<maxNR. 所以, {d,e}是一个聚簇频繁模式, 计算  L {d,e} 并输出. 由于  C {d,e} ≥minCF, 根据定理  1, {d,e}
                 是一个聚簇频繁模式候选项集, 将{d,e}和          bitvec {d,e} 组合为  ICFPM-list {d,e} 并加入  new-Candidate 2 中. 同理, 对其他
                 1  项集进行组合, 对得到     2  项集并做聚簇频繁模式判断. 最后, 得到{d,e}和{b,f}是聚簇频繁模式且都可以作为聚簇
                 频繁模式候选项集; {b,e}和{e, f}不是聚簇频繁模式但可以作为聚簇频繁模式候选项集加入                           new-Candidate 2
                 中. 最后, 将  new-Candidate 2 作为返回值. 根据  new-Generate 得到  new-Candidate 2 并复制到  new-Candidates, 由于
                 |new-Candidates|>1, 根据算法  3 (第  16  行), 继续调用  new-Generate 与上述过程相同. 最后, 得到只有{b,e,f}是聚簇
                 频繁模式且可以作为聚簇频繁模式候选项集, 由于|new-Candidates|=1≯1, 根据算法               3 (第  14  行), 算法结束.

                 3.3.3    算法复杂度分析
                    在第  3.1.2  节中定义了一些变量用于复杂度分析, 这些变量将在本节继续使用.
                    (1) 时间复杂度
                    ICFPM  算法首先将包含      m  个事务的时间事务数据集        TDS  转换为  ICFPM-list, 对应的时间复杂度为     O(m×w),
                 与  Naive 算法中得到  R  的时间复杂度相同. 之后, 对      TDS  中每个  1  项集做聚簇频繁模式判断. 对项集         x  ∈ itemsets,
                                                           x
                 由于  x 对应的  ICFPM-list(x) 长度为  m, 所以, 映射为  TS 的时间复杂度为    O(m). 由第  3.1.2  节可知  Naive 算法使用
                 R  结构做映射时对应的时间复杂度为            O(r), 且  r≤m, 所以, 使用  ICFPM-list 结构做映射时的时间复杂度要多于
                                             x
                 Naive 算法的  R  结构. 接下来, 求  Sup 对应的时间复杂度为      O(1). 如果项集满足频繁, 则可继续向下判断, DBSCAN
                 算法在最坏情况下的时间复杂度为             O(r ); 由于计算  L 须遍历  1  遍  C , 对应时间复杂度为   O(s). 综上, 对每个  1  项
                                               2
                                                          x
                                                                      x
                                                     2
                 集做聚簇频繁模式判断的时间复杂度为              O(m+r +s). 之后调用  new-Generate 算法生成  (k+1) 项集, 直到无法生成更
                 多项集. 如果   itemsets 中包含  g  个  k 项集, 那么所有  g  个  k 项集将组合为  (g×(g–1))/2  对项集以生成  (k+1) 项集. 对
                 每一对项集    Px 和  Py, 将其对应的  new-Candidates (Px) 和  new-Candidates (Py) 取交集得到  bitvec Pxy , 由于使用向量
                                                                                                    2
                 的位与操作, 对应的时间复杂度为           O(m). 由第  3.1.2  节可知  Naive-Generate 算法做交集的时间复杂度为     O(r ), 当
                                                                      2
                 new-Candidates(Px) 和  new-Candidates(Py) 长度较长时, 使  O(m)≤O(r ), 这时, 使用  ICFPM-list 结构要好于  R  结构.
                                                                                                 2
                 接下来的判断过程与       1  项集类似, 可得对每个     (k+1) 项集做聚簇频繁模式判断的时间复杂度为              O(m+m+r +s).
                    在最坏情况下, 所有      1  项集及生成的    (k+1) 项集都满足频繁, Naive 算法最终会生成       2 (n–1)  个项集. 然而, ICFPM
                 算法在   Naive 算法基础上使用了     2  种优化策略. 首先, 在频繁条件的基础上, 使用定理            1  过滤了更多不可能是聚簇
                 频繁模式的项集, 减少了候选项集数量, 即            new-Candidates, 进而减少了搜索空间和时间复杂度; 其次, 定理          2  通过
                 参考  (n –1) 项集的判别结果, 减少了     new-Generate 算法中对项集做聚簇频繁模式判断操作, 进而减少了时间复杂
                 度. 综上, 2  种优化策都减少了      Naive 算法时间复杂度. 同时使用       ICFPM-list 结构减少了项集对应事务       ID  集合做
                                                                                                    2
                 交集的时间复杂度, 但增加了做映射时的时间复杂度. 所以, ICFPM                 算法总的时间复杂度为         O(m×w+n×(m+r +s)+
   448   449   450   451   452   453   454   455   456   457   458