经典序列模式挖掘算法综述

基本的序列模式挖掘:主要包括一些经典算法,分为以下几类:

  • 基于Apriori特性的算法:Apriori算法、AprioriSome算法、AprioriAll算法、DynamicSome算法等等
  • 基于垂直格子的算法:SPADE算法
  • 增量式序列模式挖掘:用来研究当序列增加时,如何维护序列模式,提高数据挖掘效率的问题,典型算法有:ISM算法、ISE算法、IUS算法。
  • 多维序列模式挖掘:它是将多维有价值的信息融合到单位序列中,进而挖掘出最优价值的信息。典型算法有三种Uni-Seq、Seq-Dim,Dim-Seq。
  • 基于约束的序列模式挖掘:目前的序列模式挖掘算法产生了大量的无用信息或者冗余信息,降低了挖掘的效率,因此提出了约束序列模式挖掘,通过添加约束条件,挖掘用户最感兴趣、最优价值的序列模式。

序列模式挖掘的发展方向:并行序列模式挖掘、周期序列模式挖掘、分布式序列模式挖掘、图序列模式挖掘。

1 AprioriAll算法

基本思想
每当扫描数据库时,计算上一次扫描生成的候选序列的support,如果support不小于min_sup,就将其当做大序列

算法描述

  1. 排序阶段,主要是根据交易时间和ID进行排序
  2. 频繁项目集挖掘阶段,执行一次Apriori算法,找到所有support不小于min_sup的频繁项目集,这个阶段主要是为下一步的转换做铺垫工作
  3. 转化阶段,根据上一步产生的频繁项集,扫描交易序列数据,根据MAP映射得到新的序列项集
  4. 序列阶段,根据上一步得到的新序列项集,再次执行Apriori算法,找到新的频繁项集
  5. 最大化序列阶段,从挖掘的新的频繁序项集中,找出长度最长的序列模式

算法分析

  • AprioriAll算法是对Apriori算法的进一步改进,主要区别是在产生候选项集和频繁序列模式方面需要考虑序列元素的顺序。

存在的问题

  1. 容易生成大量的候选项集
  2. 需要对数据库进行多次扫描
  3. 很难找到长序列模式
  4. 在转换阶段产生巨大的开销

2 GSP算法

基于Apriori理论,首先产生较短的候选项集,然后将短候选项集进行剪枝,接着通过连接生成长候选序列模式,最后计算其支持度。

基本思想

GSP 算法有两个方面的改进:第一,对冗余候选模式进行剪枝。第二,采用哈希树来存储候选模式。

算法描述

  1. 除此扫描序列数据库,得到所有长度为1的序列即为F1,作为种子集
    2.对长度为i的种子集Fi进行连接和剪枝,生成长度为i+1的候选序列C_i+1,再次扫描序列数据库,统计每个候选序support,然后产生长度为i+1的序列F_i+1,并将F_i+1作为新种子集
  2. 重复第二步,直到没有新的序列模式产生为止。

算法分析

  • 与AprioriAll算法对比,GSP算法统计较少的候选集,并且在数据转化过程中不需要事先计算频繁集。GSP算法的时间复杂度与序列中的元素个数成线性比例关系,执行时间随数据序列中字段的增加而增加,但增加不明显。

存在的问题

  1. 当序列数据库比较大时,容易生成庞大的候选序列
  2. 需要对数据库进行多次扫描
  3. 对长序列模式的处理效率比较低

3 FreeSpan算法

基本思想

该算法基于分而治之的思想,将原始数据集进行划分,同时在分割的过程中动态地进行序列模式挖掘,并将产生的序列模式作为新的划分集。

算法描述

  1. 扫描序列数据库S,找到S中的所有的长度为1的频繁项集,并且按照字母表的顺序生成f_list列表
  2. 按照f_list列表将序列数据库划分成若干个子集
  3. 首次扫描序列数据库S,找到所有的频繁项然后与前一项连接组成候选序列 ,计算该候选序列在序列数据库中的支持度,对于support小于min_sup的项进行剪枝
  4. 递归的挖掘长度更长的序列,直到挖掘出所有长度的频繁序列

算法分析

  • 从性能上分析,FreeSpan算法要由于类Apriori算法,它不仅能够高效的挖掘到所有长度的频繁序列,而且能够大大减少候选项集的数量

存在的问题

在挖掘过程中会产生大量的投影数据库,而且投影数据库一般不会缩减,另外,候选序列很多,需要考虑每一个的候选序列的组合情况

4 PrefixSpan算法

基本思想

采用分而治之的思想,首先扫描序列数据库,找到所有长度为1的序列模式,把这些序列模式作为前缀,将序列数据库划分为多个小投影数据库,然后在各个投影数据库上进行递归的序列模式挖掘,效果如图所示,首先有一个序列数据库S,根据前缀划分,产生多个投影数据库,然后分别在这多个投影数据库中进行递归的挖掘,直到找到所有的频繁序列模式为止。

算法描述

  1. 首次扫描序列数据库,找到长度为1的所有频繁序列;、
  2. 按照(a)中得到频繁序列划分为n个不同前缀;
  3. 根据n个不同的前缀,构造相应的投影数据库,并递归的挖掘频繁序列的子集,直到不能产生长度为1的频繁序列模式为止

存在的问题

尽管PrefixSpan算法能够提升挖掘的效率,但该算法仍存在一些不足,第一:该算法需要构造大量的投影数据库,并且构造投影数据库的开销较大;第二,该算法需要递归的扫描投影数据库,耗费大量的时空代价,同时也大大降低了算法的挖掘效率;第三,该算法挖掘出的频繁序列模式,都是按照字典序进行排列,不能满足实际的需求。

5 经典序列挖掘算法实现与包

an open-source data mining mining library written in Java
http://www.philippe-fournier-viger.com/spmf/

FP-Growth、FPtorules、BPSO-HD、CLT、ARMGA by C++
https://github.com/DMDarkness/Data-mining

18种经典数据挖掘算法实现 https://github.com/linyiqun/DataMiningAlgorithm

orange3-associate 算法包,Association Rules、
Frequent Itemsets

https://orange3-associate.readthedocs.io/en/latest/

mlxtend 算法包,apriori、association_rules、fpgrowth、fpmax
https://rasbt.github.io/mlxtend/api_subpackages/mlxtend.frequent_patterns/


参考论文下载:

序列模式挖掘算法综述:https://download.csdn.net/download/aseri_ldn/11647891

你可能感兴趣的:(数据挖掘,序列模式挖掘,综述,数据挖掘算法)