时间序列中频繁序列模式挖掘方法与流程

文档序号:12157877阅读:2229来源:国知局
时间序列中频繁序列模式挖掘方法与流程

本发明涉及时间序列挖掘技术领域,适用于金融、营销、生物医疗等领域,用于挖掘海量时间序列中连续出现的频繁序列模式。



背景技术:

时间序列(Time Series)泛指那些随时间或空间有序变化的数据集合,这些数据集合往往采用等时间或空间间隔的方法进行度量,如金融股票价格、商品销售数据、气象数据以及生物医疗的电图过程监控数据等,时间序列挖掘在这些领域有着巨大的应用和研究价值。以金融领域举例来说,金融市场的海量时间序列挖掘,在客户分析、欺诈检测、金融投资组合研究、股票趋势预测以及证券投资公司分析导向等方向有着指导性的意义。

时间序列数据挖掘的目的就是从时间序列中检测出用户感兴趣或者具有潜在知识的模式,这些模式可以帮我们更好的发现到其中蕴含的规律,进而为创造更大价值提供支持。

近年来,随着存储技术和互联网的发展,各个行业的时间序列数据有着海量、密集的发展趋势,目前经典的频繁模式挖掘方法有Apriori算法和FP-Growth算法、以及基于它们的一些变种算法,都存在运行时间长、内存使用量大的问题,无法满足日益增长的数据处理要求。

针对以上传统方法的不足,实现对海量时间序列中频繁序列地高效挖掘,包括较少的运行时间和内存占用,而且方法必须支持弹性的扩展,如分布式扩展等,本发明提出一种新型的时间序列挖掘方法。



技术实现要素:

本发明要解决的技术问题是:从海量的时间序列中挖掘频繁出现的序列,这些序列是最简表示模式:不相互包含、重复。为此,提出一种针对时间序列的频繁序列挖掘方法,实现时间序列中高效的模式发现。

为达到上述目的,本发明采用如下的技术方案:

步骤a:将长度为n时间序列依次左移n次,每移动一次形成一个序列,按顺序垂直排列,构成n阶矩阵M1;

步骤b:将步骤a得到的这n个序列,按照字典顺序依次垂直排列,构成输出矩阵M2,使相似的前缀序列在矩阵中相邻,并且定义M2第1列为F,最后一列为L;

步骤c:对步骤b得到的输出矩阵M2的L列建立区段频次索引,区段频次索引是为了快速地定位F中元素的下一个元素,并将得到索引信息写入区段频次索引文件中去,从而能够很快定位L中某元素的位置;

步骤d:对F列中的元素依次进行FN操作(即快速找到某元素在原时间序列中的下一元素以及该元素在F列中的位置),将得到的元素集合按照元素值进行分组,相同值的元素被分到同一组;

步骤e:若某个组内的元素个数大于或等于频繁支持度(人为规定的频繁序列必须达到的次数),则对该组元素递归地进行步骤d操作,直到组内元素个数小于频繁支持度为止;

步骤f:对步骤e得到的频繁序列进行去重操作,即判断由步骤c得出的序列之间是否存在包含与被包含的关系,若存在,则将被包含的元素去掉即可。

基于上述技术方案,更进一步,对时间序列中的频繁序列挖掘的详细步骤描述如下:

步骤a 详细说明如下:

第一步、先对要转换的序列(即原本的时间序列,记为S)进行循环移动(Rotate),每次循环左移一位,每左移1位可生成一个长度为n的序列,循环n次后,得到n个长度为n的序列;

第二步、将每个序列当做矩阵的一行,依先后顺序可以构成一个n阶矩阵,记为M1。

步骤b 详细说明如下:

第一步、将第一步得到的这n个长度为n的序列按字典顺序进行排序(Sort),即将这n个序列按首字符字典顺序排序,首字符相同的按第二个字符字典顺序排列,以此类推。再将每个序列当做矩阵的一行,依先后顺序构成一个n阶输出矩阵记为M2;

第二步、记矩阵M2的第一列为F列,最后一列为L列,形成的n阶矩阵M2有如下性质,

1)任意查找的序列T在原时间序列中出现的个数为:以T为前缀出现在M2 方阵中的行数;

2)在M2中出现相同前缀的两行必然是上下相邻的;

3)在M2中F列的相同的元素间次序在L列中保持不变;

4)在M2中F列元素是同行L列元素在原时间序列中的下一个元素。

由上述4条性质可以得出F列中任意元素x在原时间序列中的下一个元素y在F中的位置,其中x,y的位置关系如附图2所示。

步骤c 详细说明如下:

第一步、对步骤b得到的矩阵M2的L列分段,段大小固定,记每一个区段为 BLOCK;

第二步、假设待操作序列被分成s段BLOCK,从待操作序列首部开始,统计第1个到第i(1≤i≤s)个BLOCK组成的子序列中各元素出现的次数,以此类推,直到序列结束,最后得到s个元素频次的统计结果(如附图4所示),并保存到区段索引文件中;

第三步、这样通过第一步和第二步,当我们查找M2方阵的L列中某元素时,会方便很多,索引的用处就体现在这里,减少了从头查找的时间。

步骤d 详细说明如下:

第一步、依次遍历矩阵M2中的F列的元素,首先查看该元素(如m)在F列中的个数是否达到频繁支持度,若达不到,则遍历F列中的下一元素;若达到,由区段频次索引文件快速判断出m元素在L的位置,继而找到同行的F元素m’以及m’在F中的位置,将上述由元素m快速查找到元素m’的过程称之为FN操作;

第二步、若m’元素在F列的若m’次数达不到,则遍历F列中的下一元素;若m’次数大于或等于支持度,则递归地对m’运用FN操作,找到m’在原序列中的下一元素的元素m’’以及m’’在F中的位置。以此类推,直到遍历完F中所有字典元素为止。

步骤e 详细说明如下:

针对步骤d的第二步,由m,m’,m’’...(假设m,m’,m’’...达到支持度)所构成了频繁序列。

步骤f 详细说明如下:

第一步、将所有待选频繁序列使用一个特殊字符(如#)连接成一个长的新序列,记为P。 如步骤C得到的频繁序列有ab,b,则P为ab#b;

第二步、再次将新序列进行如上的a,b,c,d,e步骤,得到频繁序列的频繁次数,在如序列P(ab#b) 中,ab的频繁次数为1,b的频繁次数为2,大于1,则b在其他序列中出现过是重复序列,应去除b,得到ab为最终频繁序列。

本发明具有以下优点和积极效果:

a) 弥补了频繁模式挖掘上的空白:频繁序列模式挖掘。

b) 本发明的方法时间效率和内存使用效率高,对于亿级别长度的时间序列,能够在分布式环境下,可以在1~2s内处理完毕,且内存使用量大约为3.5G左右。

c) 本发明的方法是完全可并行的,分布式可扩展性好。

附图说明

图1. babcab的矩阵变换结果。

图2. F与L列中元素的对应关系。

图3.寻找以a开头的频繁序列。

图4.区段频次索引。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合附图并举实施实例,对本发明中所用到的方法及算法进一步详细说明。,设时间序列为babcab,设置频繁支持度为2。

步骤a:

1)依次左移1位,移动6次,得到6个序列,依次为:abcabb,bcabba,cabbab,abbabc,bbabca,babcab;

2)将这6个序列依照形成的先后顺序,构成矩阵M1(如附图1所示)。

步骤b:

1)将步骤a得到的6个序列按照字典顺序构成矩阵M2(如附图1所示);

2)得到矩阵M2的F列和L列,即F:aabbbc,L:cbbaab(如附图1所示);

步骤c:

1)对M2的L列进行分段,设置BLOCK的大小为3;

2)可知第1段BLOCK(0-2)内各字典元素为a:0,b:2,c:1 ;第2段BLOCK(3-5)的内各字典元素为a:2,b:1,c:0;则第1段计数为a:0,b:2,c:1;第2段计数为a:2,b:3,c:1;

3)这样我们就可以快速确定第几个元素的位置,如确定第1个a,和第2个a均会落在第一BLOCK段内,而第3个b会落在第二BLOCK段内。

步骤d:

1)对于F列 aabbbc 中,首先遍历a,a有2个,达到频繁支持度,则对a进行FN操作,2个元素a在原时间序列中的下一个元素均为元素b,且元素b在F中的位置(如附图3所示);

2)由于2个a后面的均为元素b,达到频繁支持度,故继续对这2个元素b进行递归地FN操作,发现这2个元素b在原序列中的下一个元素分别是a和b(如附图3所示),元素a,b均没有达到频繁支持度,故以c开头的频繁序列是ab;

3)前2步完成对元素a的遍历,继续对元素b遍历,F列中b有3个,达到频繁支持度,则对b进行FN操作,知在原时间序列3个b元素后分别是a,b,c,元素a,b,c均没有达到频繁支持度,故以c开头的频繁序列是b;

4)前3步完成对元素a和b的遍历,继续对元素c遍历,c只有1个,未达到频繁支持度。

步骤e:

1)遍历结束,得到频繁序列有2个,即ab和b。

步骤f:

1)将ab和b用连接字符(如#)连接起来,即 ab#b;

2)将 ab#b 作为一个新序列,并再次进行如上的a,b,c,d,e步骤,可以得到以a开头的序列频繁次数为1(ab出现1次),以b开头的序列频繁次数为2(b出现2次),故应该将b去除掉;

3)频繁次数大于1的序列都去除掉,留下频繁次数为1的序列,即最终保留频繁序列为ab。

上述实例用于解释说明本发明,而并非对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明做出任何的修改和改变,都落入本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1