logo资料库

GSP算法及源代码.pdf

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
算法简介 算法简介 算法简介算法简介 序列模式定义:给定一个由不同序列组成的集合,其中,每个序列由不同的 元素按顺序有序排列,每个元素由不同项目组成,同时给定一个用户指定的最小 支持度阈值,序列模式挖掘就是找出所有的频繁子序列,即该子序列在序列集中 的出现频率不低于用户指定的最小支持度阈值。 GSP 是序列模式挖掘的一种算法。其主要描述如下:  根据长度为 i 的种子集 Li 通过连接操作和剪 切操作生成长度为 i+1 的候选序列模式 Ci+1; 然后扫描序列数据库,计算每个候选序列模式 的支持数,产生长度为 i+1 的序列模式 Li+1, 并将 Li+1 作为新的种子集。  重复第二步,直到没有新的序列模式或新的 候选序列模式产生为止。  扫描序列数据库,得到长度为 1 的序列模式 L1,作为初始的种子集 L1⇒ C2 ⇒ L2 ⇒ C3 ⇒ L3 ⇒ C4 ⇒ L4 ⇒ …… 产生候选序列模式主要分两步 候选序列模式的支持度计算:对于给定的候选序列模式集合 C,扫描序列数 据库,对于其中的每一条序列 d,找出集合 C 中被 d 所包含的所有候选序列模式, 并增加其支持度计数。 列模式,将它从候选序列模式中删除。 不是序列模式,则此候选序列模式不可能是序  剪切阶段:若某候选序列模式的某个子序列 目与去掉序列模式 s2 的最后一个项目所得到 的序列相同,则可以将 s1 于 s2 进行连接,即 将 s2 的最后一个项目添加到 s1 中。  连接阶段:如果去掉序列模式 s1 的第一个项 二二二二、、、、 算法的设计和实现 本算法采用 Java 实现,主要根据序列模式的情况, 序列模式挖掘中共涉及到这样个 3 对象,序列、元 素和项目,这样算法共有 5 个类: GSP 类:算法核心类,GSP 算法的核心操作:连 接和剪枝操作都在这里实现,在使用该算法时,也 是需要通过使用该类的方法来实现 GSP 算法。 Sequence 类:序列类,该类封装了序列的基本信息 算法的设计和实现 算法的设计和实现 算法的设计和实现 和基本操作,实现了对序列间的比较以及序列中的 项目集操作。 Element 类:元素类,在序列模式中元素也就是项 目集,项目集中包含了项目,在本算法实现中,元 素类中含有一个项目集属性,用于表示项目集,在 使用时也是使用该属性来表示项目集,另外,在该 类中还封装了对项目的操作以及一些其他操作。
SeqDB 类:该类用于从数据库中扫描获取序列, 本算法主要用于模拟实现,所以在程序中已经初始 化了序列。 GSPTest 类:测试类,使用 JUnit 对算法进行单元 测试,本文附的代码只含有对于实现 GSP 算法的 方法测试。 由于程序中附带了对方法的注释,这里对各个方法 的原理和实现就不作介绍。 三三三三、、、、 实验结果 实验结果 实验结果实验结果 <{1 5}{2}{3}{4}> <{1}{3}{4}{3 5}> <{1}{2}{3}{4}> <{1}{3}{5}> <{4}{5}> ((((一一一一))))实验数据实验数据实验数据实验数据 ((((二二二二))))程序输出程序输出程序输出程序输出 2 L(1) 最小支持度计数为: 输入的序列集合为: 序列模式 为: 剪枝前候选集的大小为: 剪枝后候选集的大小为: 序列模式 为: 剪枝前候选集的大小为: 剪枝后候选集的大小为: 序列模式 为: 5>, <3 5>] <1 3 5>] 为: 为: 为: 为: 候选集 候选集 候选集 候选集 [<(1,5) 2 3 4>, <1 3 4 (3,5)>, <1 2 3 4>, <1 3 5>, <4 (4,5)>] ................................................. [<2>, <4>, <1>, <3>, <5>] 40 c [<(2,2)>, <2 2>, <(2,4)>, <2 4>, <4 2>, <(1,2)>, <2 1>, <1 2>, <(2,3)>, <2 3>, <3 2>, <(2,5)>, <2 5>, <5 2>, <(4,4)>, <4 4>, <(1,4)>, <4 1>, <1 4>, <(3,4)>, <4 3>, <3 4>, <(4,5)>, <4 5>, <5 4>, <(1,1)>, <1 1>, <(1,3)>, <1 3>, <3 1>, <(1,5)>, <1 5>, <5 1>, <(3,3)>, <3 3>, <(3,5)>, <3 5>, <5 3>, <(5,5)>, <5 5>] 40 c [<(2,2)>, <2 2>, <(2,4)>, <2 4>, <4 2>, <(1,2)>, <2 1>, <1 2>, <(2,3)>, <2 3>, <3 2>, <(2,5)>, <2 5>, <5 2>, <(4,4)>, <4 4>, <(1,4)>, <4 1>, <1 4>, <(3,4)>, <4 3>, <3 4>, <(4,5)>, <4 5>, <5 4>, <(1,1)>, <1 1>, <(1,3)>, <1 3>, <3 1>, <(1,5)>, <1 5>, <5 1>, <(3,3)>, <3 3>, <(3,5)>, <3 5>, <5 3>, <(5,5)>, <5 5>] L(2) [<2 4>, <1 2>, <2 3>, <1 4>, <3 4>, <4 5>, <1 3>, <1 ................................................. 18 c [<1 (2,4)>, <1 2 4>, <2 (4,5)>, <2 4 5>, <1 (2,3)>, <1 2 3>, <2 (3,4)>, <2 3 4>, <2 (3,5)>, <2 3 5>, <1 (4,5)>, <1 4 5>, <3 (4,5)>, <3 4 5>, <1 (3,4)>, <1 3 4>, <1 (3,5)>, 7 c [<1 2 4>, <1 2 3>, <2 3 4>, <1 4 5>, <3 4 5>, <1 3 4>, <1 3 5>] L(3) [<1 2 4>, <1 2 3>, <2 3 4>, <1 3 4>, <1 3 5>]
................................................. 2 1 c c [<1 2 (3,4)>, <1 2 3 4>] [<1 2 3 4>] ................................................. [<1 2 3 4>] 候选集 候选集 为: 为: package gsp; ! 60 L(4) 剪枝前候选集的大小为: 剪枝后候选集的大小为: 为: 序列模式 计算花费时间 毫秒 四四四四、、、、程序源代码 程序源代码 程序源代码 程序源代码 ((((一一一一))))GSP 类类类类 import java.util.ArrayList; import java.util.Map; import java.util.HashMap; /** * GSP 算法实现类 * 本类为核心类,在本类中实现了 GSP 算法 * @author guangqingzhong * 列模式 选序列模式 */ public class GSP { private ArrayList c; //长度为 i 的候 private ArrayList l; //长度为 i 的序 private ArrayList result; private SeqDB db; private int support; /** * 构造方法 * 在实例化 GSP 对象时,同时赋值支持度 * 并获取序列集和初始化序列模式结果 * @param support 支持度 */ public GSP(int support) { this.support = support; //赋值支持度 this.db = new SeqDB(); //从 SeqDB 类中获取设置好的序列集
分享到:
收藏