GSP算法
来源:互联网 发布:免费的u盘数据恢复软件 编辑:程序博客网 时间:2024/06/05 07:00
GSP算法(Generalized Sequential Pattern mining algorithm)
https://wenku.baidu.com/view/19ee9abd960590c69ec376c6.html
http://www.doc88.com/p-999957186220.html
Mining Sequential Patterns: Generalizations and Performance Improvements(参考文献)
一、算法基本思想
给定一个事务数据库,GSP算法需要对事务数据库进行多遍扫描,GSP算法挖掘序列模式的基本架构如下:
第一遍扫描确定该数据库中每一项的支持度,即确定该事务数据库中包含每一项的数据序列的数目。在第一遍扫描结束后,该算法知道哪些项是频繁的,即产生了频繁1项集,而每个频繁1项集即形成了频繁1序列。由频繁k序列集合Lk可产生候选(k+1)序列集合Ck+1,候选(k+1)序列集合中的每条候选序列均包含相同个数的项,且其项的个数均比其对应的种子频繁序列集合Lk中项的个数大1。在产生每一条候选(k+1)序列的同时对其计数,当所有的候选(k+1)序列均已产生后,算法根据每条候选(k+1)序列的计数确定哪些候选(k+1)序列形成频繁(k+1)序列,并作为下一步的种子集合。当由某个种子集合Lk产生的候选序列集合为空时,算法结束。
GSP算法在原有aporiori的基础上,引入3个新的概念来定义频繁模式子序列:
1) 加入时间约束,指定模式中相邻元素之间的最小和最大时间间隔,使得原有的apriori关注的连续变成了只要满足min_gap和max_gap约束的序列,都算是连续的。2) 加入time_window_size。放宽了序列模式元素中项必须来自同一个事务的限制,而是允许项存在事务时间在用户指定的时间窗内的一组事务中。使得transaction有新的定义,只要在window_size内的item,都可以认为是在同一个itemset。3) 加入分类标准。
GSP算法是一个典型的序列模式挖掘算法,它通过采用产生并检测一个候选序列的方法,是基于优先级原则的一个算法。
类似于树的广度优先搜索。
二、算法原理
1)根据所输入的序列,找出所有的单项集,即1频繁模式,这里会经过最小支持度阈值的判断。2)根据1频繁模式进行连接运算,产生2频繁模式,这里会有进行最小阈值的判断。3)根据2频繁模式连接产生3频繁模式,会经过最小支持度判断和剪枝操作,剪枝操作的原理在于判断他的所有子集是否也全是频繁模式。4)3频繁模式不断的挖掘直到不能够产生出候选集为止。
三、产生候选序列模式的步骤
1)连接阶段:如果去掉序列模式S1的第一个项目与去掉序列模式S2的最后一个项目所得到的序列相同,则可以将S1与S2进行连接,即将S2的最后一个项目添加到S1中。2)剪切阶段:若某候选序列模式的某个子序列不是序列模式,则此候选序列不可能是序列模式,将它从候选序列模式中删除。
在连接步中,种子序列<(1,2) 3>和<2 (3,4)>连接可产生候选4序列<(1,2) (3,4)>;种子序列<2 3 5>连接可产生候选4序列<(1,2) 3 5>。其余的序列均不满足连接条件。在剪枝步中,候选4序列<(1,2) 3 5>被剪去,因为其连续子序列<1,3,5>不包含在频繁3序列集合L3中。
四、后选集计数
对于事务数据库中的每个数据序列,需对其每一项进行哈希,从而确定应该考察哈希树那些叶子节点中的候选k序列。对于叶子节点中的每个候选k序列,需考察其是否包含在该数据序列中;对每个包含在该数据序列中的候选序列,其计数值加1。在考察某个数据序列d是否包含某个候选k序列时,需分成两个阶段:
1)向前阶段:在d中寻找从s的首项开始的连续子序列xi-xj(j>i)直至time(xj)-time(xi)>maxgap,此时转入向后阶段;否则,如在d中不能找到s的某个元素,则s不是d的子序列。2)向后阶段:由于此时time(xj)-time(xi)>maxgap,故此时应从时间值为time(xj)-maxgap后重新搜索xj-1,但同时应保持xj-2位置不变。当新找到的xj-1仍不满足time(xj)-time(xi)<=maxgap时,从时间值为time(xj)-maxgap后重新搜索xj-2,同时保持xi-3位置不变,直至某位置元素xj-i满足条件或x1不能保持位置不变,此时,返回前向阶段。 A.当xj-1满足time(xj-i)-time(xj-(i+1))<=maxgap时(此时,x1保持位置不变),向前阶段应从xj-i位置后重新搜索xj-i+1及后续元素; B.当x1不能保持位置不变时,先前阶段应从原x1位置后重新搜索x1及后续元素。 在考察某个数据序列d是否包含某个候选k序列s的两个阶段中,需要在数据序列d中不断寻找候选序列s中的单个元素。故将数据序列d作如下转换:对d中的每一项建立一个此项出现时间的链表。此时,若欲寻找某些x在事务时间t后的第一次出现位置对应的事务时间,只需对x的事务时间链表遍历直至出现某个大于t的事务时间。若欲找出候选序列s的某个元素Si=(X1...Xn)在事务时间t后的第一次出现,只需遍历其中每项Xi(1<=i<=n)的事务时间链表以找出Xi在事务时间t后第一次出现的事务时间;若time(Xn)-time(X1)<=ws,则已经在数据序列d中找到Si,可以继续在d中寻找s的下一个元素;否则,令t=time(Xn)- ws并重复此过程。
五、案例分析
现假设最大事务时间间隔maxgap=30,最小事务时间间隔mingap=5,滑动时间窗口ws=0,考察候选数据序列s=<(1,2)(3)(4)>是否包含在该数据序列中。
解析过程:
首先寻找s的第一个元素(1,2)在该数据序列中第一次出现的位置,对应的事务时间为10。由于最小事务时间间隔mingap=5,故应在事务时间15之后寻找s的下一个元素(3)。由表2看出,45-10>30,故转入向后阶段,重新寻找元素(1,2)第一次的出现位置,则事务时间为50,故下一步应该在事务时间55后寻找元素(3),时间65,满足约束。此时寻找(3)的下一个元素(4),时间90,90-65=25<=30,满足约束,考察结束。
六、GSP算法分析
与AprioriAll算法相比,GSP算法计算较少的候选集,并且在数据转换中不需要事先计算频繁集。GSP算法时间复杂度与序列中的元素个数成线性比例关系,执行时间随数据序列中字段的增加而增加,但增加不明显。
七、GSP算法问题
1)如果序列数据库规模较大,则有可能产生大量的候选序列模式;2)需要对序列数据库进行循环扫描;3)对于序列模式的长度比较长的情况,算法难以处理。
- GSP算法
- GSP序列模式分析算法
- GSP序列模式分析算法
- GSP
- 序列模式分析算法GSP的实现
- 序列模式挖掘——GSP算法
- 时间序列频繁模式挖掘:GSP算法、SPADE算法
- 数据挖掘进阶之序列模式挖掘GSP算法
- 数据挖掘中的模式发现(七)GSP算法、SPADE算法、PrefixSpan算法
- gsp页面
- 数据挖掘进阶之序列模式分析算法GSP的实现
- 【广告算法工程师入门 20】机制设计-从GSP机制到VCG机制
- 【广告算法工程师入门 23】机制设计-GSP机制下的收入优化
- 【广告算法工程师入门 19】机制设计-GFP和GSP下的策略行为与均衡分析
- GSP中的XD命令
- HP UNIX GSP 介绍
- 纵观 psp GSP 软件
- GSP Algorithm: Sequence Mining.
- 颠倒字符串(整体,子串)
- Intellij IDEA 16激活方法
- centos安装MongoDB,并设置开机自启动
- android解析 ramdisk.img boot.img system.img
- RocketMQ Quick Start
- GSP算法
- 字体信息设置界面
- Javascript知识点总结(二)
- EasyUI笔记总结
- 【小白的CFD之旅】09 初识FLUENT
- 图的连通性问题
- Python 练习实例9
- Nginx简介
- ROS小车地盘4 PID算法