序列挖掘
与时间序列分析还是有不同的。序列挖掘一般是指相对时间或者其他顺序出现的序列的高频率子序列的发现,典型的应用还是限于离散型的序列。
序列模式挖掘的一般步骤:
(1) 排序阶段:即将原始的数据库转换成序列数据库。
(2) 大项集阶段:中暗处所有频繁的项集(即大项集)组成的集合L。实际上,也同步得到所有大1-序列组成的集合。
(3) 转换阶段:在寻找序列模式的过程中,要不断地检测一个给定的大序列集合是否包含于一个客户序列中。为了使这个过程尽量的快,转换阶段就是将每条记录被所包含的所有最大项目集所取代。如果一条交易不包含任何大项集,在转换完成的序列中它不会被保留。
(4) 序列阶段:利用转换后的数据库寻找频繁的序列,即大序列
(5) 选最大阶段:在大序列集中找出最长序列
AprioriAll算法
AprioriAll算法与Apriori算法的执行过程是一样的,不同点在于候选集的产生,具体候选者的产生如下:
候选集生成的时候需要区分最后两个元素的前后,因此就有<p.item1,p.item2,…,p. ,q. >和<p.item1,p.item2,…, q. ,p. >两个元素。
AprioriSome算法
AprioriSome算法可以看做是AprioriAll算法的改进,具体可以分为两个阶段:
(1) Forward阶段:找出置顶长度的所有大序列,在产生Li后,根据判断函数j=next(last),此时last=i,j>i,下个阶段不产生i+1的候选项,而是产生j的候选项,如果j=i+1,那么就根据Li生成Cj,如果j>i+1,那么Cj就有Cj-1产生。然后扫描数据库计算Cj的支持度。
(2) Backward阶段:根据Lj中的大项集,去掉Ci(i<j)中出现的Lj项,然后计算Ci中的支持度,判断那些在Forward阶段被漏判的项集。
AprioriAll算法和AprioriSome算法的比较:
(1) AprioriAll用 去计算出所有的候选Ck,而AprioriSome会直接用 去计算所有的候选 ,因为 包含 ,所以AprioriSome会产生比较多的候选。
(2) 虽然AprioriSome跳跃式计算候选,但因为它所产生的候选比较多,可能在回溯阶段前就占满内存。
(3) 如果内存占满了,AprioriSome就会被迫去计算最后一组的候选。
(4) 对于较低的支持度,有较长的大序列,AprioriSome算法要好些。
GSP算法
GSP(Generalized Sequential Patterns)算法,类似于Apriori算法大体分为候选集产生、候选集计数以及扩展分类三个阶段。与AprioriAll算法相比,GSP算法统计较少的候选集,并且在数据转换过程中不需要事先计算频繁集。
GSP的计算步骤与Apriori类似,但是主要不同在于产生候选序列模式,GSP产生候选序列模式可以分成如下两个步骤:
(1) 连接阶段:如果去掉序列模式S1的第一个项目与去掉序列模式S2的最后一个项目所得到的序列相同,则可以将S1和S2进行连接,即将S2的最后一个项目添加到S1中去。
(2) 剪枝阶段:若某候选序列模式的某个子集不是序列模式,则此候选序列模式不可能是序列模式,将它从候选序列模式中删除。
算法分析:
(1) 如果序列数据库的规模比较大,则可能会产生大量的候选序列模式
(2) 需要对序列数据库进行循环扫描
(3) 对序列模式很长的情况,由于其对应的短的序列模式规模太大,算法很难处理。