4种序列模式挖掘算法的比较分析
2015-08-15 20:49
387 查看
http://fpcheng.blog.51cto.com/2549627/829527
算法简介
AprioriAll算法属于Apriori类算法,其基本思想为首先遍历序列数据库生成候选序列并利用Apriori性质进行剪枝得到频繁序列。每次遍历都是通过连接上次得到的频繁序列生成新的长度加1的候选序列,然后扫描每个候选序列验证其是否为频繁序列。
GSP(generalized sequential pattern)算法是AprioriAll算法的扩展算法,其算法的执行过程和AprioriAll类似,最大的不同在于GSP引入了时间约束、滑动时间窗和分类层次技术,增加了扫描的约束条件,有效地减少了需要扫描的候选序列的数量。此外GSP利用哈希树来存储候选序列,减少了需要扫描的序列数量。
FreeSpan算法是基于模式投影的序列挖掘算法,其基本思想:利用当前挖掘的频繁序列集将序列数据库递归地投影到一组更小的投影数据库上,分别在每个投影数据库上增长子序列。这一过程对数据和待检验的频繁模式集都进行了分割,并且每一次检验限制在与其相符合的更小投影数据库中。
PrefixSpan是FreeSpan的改进算法,即通过前缀投影挖掘序列模式。其基本思想:投影时不考虑所有可能出现的频繁子序列,只检查前缀序列,然后把相应的后缀投影成投影数据库。每个投影数据库中,只检查局部频繁模式,在整个过程中不需要生成候选序列。
2. 算法的定性比较
表1.算法的分类比较
3. 算法的时空执行效率比较
4. 算法的适用范围分析
通常数据集可分为稠密数据集和稀疏数据集。稠密数据集有大量的长尺度和高支持度的频繁模式,在这样的数据集中,许多事件是相似的,例如DNA分析或者股票序列分析。稀疏数据集主要由短模式组成,长模式也存在,但相应的支持度很小,例如超级市场的交易数据集,用户在网站中的浏览页面序列等。
Apriori类算法在稀疏数据集的应用中比较合适,不适合稠密数据集的应用。对于有约束条件(例如相邻事务的时间间隔约束)序列模式挖掘,GSP更适用。
FreeSpan和PrefixSpan在两种数据集中都适用,而且在稠密数据集中它们的优势更加明显。两者相比,PrefixSpan的性能更好一些。
在实际应用中,在挖掘过程的不同阶段,数据集的特点,数据规模等因素可能不同,如果根据各阶段的特点,选择与之相应的算法,则序列模式挖掘能达到更好的效果。
此外由于Apriori类算法使用较简单,FreeSpan和PrefixSpan虽然效率高,但实现起来难度大。所以,现在大多数应用都是采用Apriori类算法的改进算法,以克服Apriori类算法执行效率不高的缺点。
算法简介
AprioriAll算法属于Apriori类算法,其基本思想为首先遍历序列数据库生成候选序列并利用Apriori性质进行剪枝得到频繁序列。每次遍历都是通过连接上次得到的频繁序列生成新的长度加1的候选序列,然后扫描每个候选序列验证其是否为频繁序列。
GSP(generalized sequential pattern)算法是AprioriAll算法的扩展算法,其算法的执行过程和AprioriAll类似,最大的不同在于GSP引入了时间约束、滑动时间窗和分类层次技术,增加了扫描的约束条件,有效地减少了需要扫描的候选序列的数量。此外GSP利用哈希树来存储候选序列,减少了需要扫描的序列数量。
FreeSpan算法是基于模式投影的序列挖掘算法,其基本思想:利用当前挖掘的频繁序列集将序列数据库递归地投影到一组更小的投影数据库上,分别在每个投影数据库上增长子序列。这一过程对数据和待检验的频繁模式集都进行了分割,并且每一次检验限制在与其相符合的更小投影数据库中。
PrefixSpan是FreeSpan的改进算法,即通过前缀投影挖掘序列模式。其基本思想:投影时不考虑所有可能出现的频繁子序列,只检查前缀序列,然后把相应的后缀投影成投影数据库。每个投影数据库中,只检查局部频繁模式,在整个过程中不需要生成候选序列。
2. 算法的定性比较
表1.算法的分类比较
属性 | Apriori类算法 | 模式增长算法 | ||
AprioriAll | GSP | FreeSpan | PrefixSpan | |
候选序列 | 产生 | 产生 | 不产生 | 不产生 |
数据结构 | Hash树 | Hash树 | Hash树 | WAP树 |
数据库分割 | 否 | 否 | 是 | 是 |
数据库的扫描次数 | 反复多次 | 反复多次 | 3次 | 2次 |
算法执行 | 循环 | 循环 | 递归 | 递归 |
Apriori All算法 | 这两种算法都属于Apriori类算法,都要产生大量的候选序列,需要有足够的存贮空间。同时还需要反复扫描数据库,需要占用很多运行时间。该类算法的执行效率比较低,特别是在支持度比较低的情况下,其执行效率将会大大下降。和AprioriAll相比,GSP的执行效率比较高,总体来说要比AprioriAll高2~20倍。 |
GSP算法 | |
FreeSpan算法 | 这两种算法都属于模式增长算法,它们的查找更加集中和有效。由于该类算法不生成大量的候选序列以及不需要反复扫描原数据库,和Apriori类算法相比该类算法要快且更有效,特别是在支持度比较低的情况下更明显。此外,在时空的执行效率上,PrefixSpan比FreeSpan更优。 |
PrefixSpan算法 |
通常数据集可分为稠密数据集和稀疏数据集。稠密数据集有大量的长尺度和高支持度的频繁模式,在这样的数据集中,许多事件是相似的,例如DNA分析或者股票序列分析。稀疏数据集主要由短模式组成,长模式也存在,但相应的支持度很小,例如超级市场的交易数据集,用户在网站中的浏览页面序列等。
Apriori类算法在稀疏数据集的应用中比较合适,不适合稠密数据集的应用。对于有约束条件(例如相邻事务的时间间隔约束)序列模式挖掘,GSP更适用。
FreeSpan和PrefixSpan在两种数据集中都适用,而且在稠密数据集中它们的优势更加明显。两者相比,PrefixSpan的性能更好一些。
在实际应用中,在挖掘过程的不同阶段,数据集的特点,数据规模等因素可能不同,如果根据各阶段的特点,选择与之相应的算法,则序列模式挖掘能达到更好的效果。
此外由于Apriori类算法使用较简单,FreeSpan和PrefixSpan虽然效率高,但实现起来难度大。所以,现在大多数应用都是采用Apriori类算法的改进算法,以克服Apriori类算法执行效率不高的缺点。
相关文章推荐
- JS自定义data-*属性与jquery的data()方法的使用
- HTML/CSS/JavaScript学习总结(转)
- JAVA二进制转换
- 迷宫问题bfs+打印路径
- SkyEye硬件模拟平台, 第一部分: SkyEye 介绍
- [LeetCode][JavaScript]Subsets
- poj 3264 & poj 3468(线段树)
- LeetCode(169)Majority Element
- poj 3264 & poj 3468(线段树)
- zoj 2672 Fibonacci Subsequence(hash + dp)
- 关于 Windows 8.1 虚拟光驱问题
- 数据结构 学习之图
- 测试对象销毁后指针是否还可以使用
- Codeforces Round #FF (Div. 2)
- 测试对象销毁后指针是否还可以使用
- LeetCode(169)Majority Element
- gulp实例
- Java功底篇系列-02-如何理解实际开发中与“排序”相关的问题
- UINavigationControl
- 【React】初识React