一、引言
  时间序列是指按时间顺序排列的一组数据,是一类重要的复杂数据对象。作为数据库中的一种数据形式,它广泛存在于各种大型的商业、医学、工程和社会科学等数据库中,如股票价格、各种汇率、销售数量、产品的生产能力、天气数据等。大量时间序列数据真实地记录了系统在各个时刻的所有重要信息,若能改进某种高效的数据处理方法,发现其中各时间序列之间的相互关系,必将大大提高人们对这类系统的认识和理解,进而进行有效的预测和控制。
  时间序列数据挖掘(Time Series Data Mining,TSDM) 就是要从大量的时间序列数据中提取人们事先不知道的、与时间属性相关的有用信息和知识,用于指导人们的社会、经济、军事和生活等活动。时间序列挖掘对人类社会、科技和经济的发展具有重大意义,正逐渐成为数据挖掘的研究热点之一。
  本文内容组织如下:在第二部分中,简要地分析和比较了时间序列分析和数据挖掘中对时间序列数据处理方法的异同;第三部分讨论了时间序列数据挖掘的建模过程,接着在第四部分简单介绍了时间序列数据的预处理;第五部分介绍了时间序列数据挖掘的方法,包括相似性检索和时间序列分割等。第六部分叙述了时间序列挖掘系统的组成,最后进行了总结。
  二、从时间序列分析到时间序列挖掘
  时间序列分析是统计学研究的一个重要分支,它直接以事物在不同时刻的状态所形成的数据为研究对象,通过对时间序列数据的特征进行分析和研究,揭示事物的发展变化规律。经典的时间序列分析方法有图表法、指标法和模型法,其中模型法是目前对时间序列进行深层次分析和刻画的主要方法,一些经典的时间序列分析模型如AR、MA、ARMA、ARCH 和GARCH 等已被广泛应用于自然和社会科学领域。美国经济学家罗伯特·恩格尔和克莱夫·格兰杰因在时间序列分析方面的主要理论贡献———协整理论和自回归条件异方差(ARCH) 模型,荣获2003 年度诺贝尔经济学奖。
  人们为了从汪洋大海般的数据中将许多隐藏的有决策意义的信息挖掘出来,于1989 年提出了数据挖掘(Data Mining) 的概念。它是从大量的、不完全的、有噪声的、模糊的、随机的数据中,提取隐含在其中的、人们事先不知道的、但是又潜在有用的信息和知识的过程。时间序列数据是一类常见而重要的数据,对其挖掘分析研究引起了国内外很多学者的兴趣和注意,目前已成为数据挖掘研究的一个重要分支和研究热点,其成果已应用于金融、生物医学、天文、气象等领域。
  时间序列的模型分析法和挖掘方法有很多共性和联系。主要体现在:都认为时间序列蕴含着系统的历史行为和特征信息;都要从数据中找出规律和特征,进而对客观事物进行描述或预测;采用一些共同的方法:统计理论和方法。
  然而,由于经典模型分析法和挖掘方法所基于的方法和思路明显不同,因而二者所找出的规律形式以及效果也就存在很大差异。
  模型法中理论模型的建立是在数学理论和假设基础上通过演绎推理的方法建立起来的。实际模型的参数求解都基于坚实的数学基础,因此只要假设合理,所得出的结论肯定是合理的。模型法中模型的形式通常是一个或一组数学方程,不但表达简洁,而且可解释性、可理解性也都很好,为进一步地处理、推导和应用提供了极大的方便。但是,如果所提出的假设不合理,那么模型法将会严重失真。模型的构建也存在困难,如果对系统认识不够和不具备良好的建模技巧,是很难构建出一个好的模型的。另外,模型法反映的是序列的总体上的特征,对序列中隐含的一些局部、细节的特征是很难表现出来的。
  而在时间序列挖掘中,“规则”之所以被发现是因为有足够多的数据支持。因此时间序列的挖掘方法具有广泛的“经验”基础,但缺乏严格的理论基础。同时由于各种干扰因素的影响,数据中会存在一些“假”规则,因此发现的“规则”一般需要进行验证。由于挖掘方法基于归纳的思想,直接由数据驱动,因而它常常可以撇开一些假设条件,如不需正态假设、平稳假设、线性假设等。最后,如何表达挖掘出来的知识也是需要考虑的。目前主要的表达方法有If-Then规则、决策树、贝叶斯网络以及神经网络等。除了If-Then规则之外,其它表达方法的可理解性都较差。由于挖掘方法是基于数据的,因此它对数据样本的数量和质量要求也比较高。否则就会造成“垃圾进垃圾出”。随着时间的变化,时间序列的内部特征也会发生一些变化,基于历史数据的模型可能并不适应现在的数据,因此动态更新挖掘出来的模型是必须的。
  由此可见,时间序列的经典模型分析方法和数据挖掘方法由于解决问题的思路存在本质上区别,因而对时间序列的特征规律的提取形式和效果都不同,各有其特点。时间序列挖掘并不能完全代替时间序列的模型分析方法,两者是相互补充的。例如ARMA、ARCH 以及一些非线性建模方法都已被利用在挖掘方法中。
  三、时间序列挖掘及其建模过程
  时间序列挖掘的基本思路为: 针对实际的大量序列数据,根据应用目的,选用相应的挖掘方法,从序列数据中发现隐含的规则,再以这些规则对序列未来的变化进行预测或描述。
时间序列挖掘的一般方法是,首先对序列先进行分割并抽取各个子序列的特征,根据这些特征进行聚类,得到少数几个模式,将模式进行符号替换,然后采用序列模式发现算法实现(关联)规则的发现。
  实现时间序列挖掘的方法有很多,包括统计学、决策树、模糊集、粗糙集、神经网络和遗传算法等,以及上述方法的综合,从各个角度、各个层面去发掘知识。时间序列挖掘的建模过程本质上是一个归纳推理过程,只要序列数据中的某种模式达到设定的置信度、兴趣度、支持度阈值要求,就会输出规则。因此,时间序列挖掘方法可能会建立多个模型,它们分别反映了序列某些方面的特征。
  例如对深沪两市的股票回报率序列进行关联模式挖掘,其过程可简述为: (1)先对序列进行分割,例如采用一种线性化分段的方法,将深市时间序列分割成许多斜率和时间跨度不同的线段;(2)由于线段的种类太多,因此根据斜率和时间跨度相似的原则,再对各种线段形态进行聚类,从而得到少数几个线段形态类别;(3)给每个形态类别赋予不同的符号,从而将时间序列转换为符号序列;(4) 按照频繁关联模式的发现算法,对两个符号序列进行关联挖掘,可得到类似这样的规则:“当深市持续3天的小幅上升时,沪市会出现一个持续约5天的上升”、“当深市持续1天的大幅下跌时,沪市会出现持续约2天的大幅下跌”等。
  四、时间序列数据预处理
  现实世界的数据往往是带有很多噪声的,因此,在挖掘之前,对数据进行预处理是必不可少的。以股票市场为例,股票每天的收盘价格受日常的各种因素的影响,使观察长时期的特征变得十分困难。因此,对原始数据进行预处理,并让挖掘算法工作在预处理后的数据上具有明显的益处。
  时间序列数据的预处理可以采用数字滤波、傅立叶变换和小波变换等方法。与原始的时间序列相比,预处理后的时间序列具有下列优点:
  (1) 保留了原始序列的整体变化趋势;
  (2) 滤除高频成分(通常被认为是噪音);
  (3) 减少了数据,增强了每个数据的信息量;
  五、时间序列挖掘模式
  时间序列挖掘目前的研究主要集中在相似性检索、序列分割、频繁模式发现、多粒度结构模式发现、异常数据检测等方面。
  1、相似性检索
  数据挖掘应用需要数据库具备相似查找能力,即如何在几兆甚至几十兆的时间序列数据库中发现两个模式相似的序列。显然,手工处理是不能完成此类任务的。
  时间序列的相似性检索就是在时间序列数据库中发现与给定序列的模式相似的序列,在进行序列的相似性查找之前要给定一个相似性评价函数和一个阈值ε,如果函数值大于等于ε,则表明序列相似。通常用序列X 与序列Y之间的距离函数D(X,Y)来作为序列X 与Y 的相似性评价函数。然而基于距离函数比较方法的致命弱点是对噪音太敏感,而且一般情况下,序列都很长,因此计算距离需要很长的时间。
  因此,若能从序列中抽取少量的、主要的特征,可以大大提高序列的查找速度。基于此,人们已经将自回归滑动平均模型(ARMA)、离散傅立叶变换(DFT)和小波变换(DWT)用于时间序列的匹配。 
  上述方法的出发点是:两个时间序列是相似的,如果两个序列的形状相似。但时间序列数据可以看作是具有一定动态特性的系统的外在表现形式,因此具有同样动态特性的时间序列也应该是相似性的,例如基于统计特性描述(一阶统计量和高阶统计量)。
  根据Parseval理论,对任一时间序列,其在时域的能量等同于其在频域的能量。Parseval理论将时域与频域有效地连接起来。由于大量实践中感兴趣的时间序列,当变换到频域时只有少量的系数具有较大的振幅,因此,许多方法通常将原始的时间序列从时域变换到频域,然后用这些具有较大振幅的频率系数来建立空间索引以加快搜索过程。 
  从实际应用的角度来看,一个好的相似模式匹配(或搜索) 方法应该满足这样一些要求: 算法应该是有效的,且算法不受查询序列长度变化的影响,与序列的相对位置无关,支持幅度伸缩等。
  2、分割
  从时间序列数据抽取模式的关键问题之一是如何分割时间序列数据。时间序列分割主要有两个应用:(1)系统模型变化检测,即当产生时间序列的系统(参数)发生变化时,应用分割算法可以检测到这种变化是何时发生的;(2)应用分割算法创建时间序列的高级数据表示,以便对时间序列进行索引、聚类和分类。时间序列分割算法的研究已成为时间序列数据挖掘研究的主要任务之一。基本的方法是采用分段直线表示(piecewise linear representation,PLR)方法分割时间序列。PLR法比较符合人们的直观经验,而且通常索引结构维数低、计算速度较快,所以被较多人采用。在此基础上,已经发展出了许多种实用的分割算法。
  3、其他
  时间序列挖掘中的频繁模式发现、多粒度结构模式发现、异常数据检测等方法也已取得了不少成果,有些已经用于实际系统中,在此不再赘述,可以参考有关文献。
  4、时间序列挖掘系统
  时间序列挖掘系统一般由五个部分组成:时间序列数据的可视化、数据预处理、数据约简、模式挖掘算法和结果模式可视化。其中模式挖掘算法是时间序列数据挖掘引擎的核心。下面分别对其功能进行简单介绍。
  1)时间序列数据的可视化 
  通过原始数据的可视化这个过程可以看出数据是如何分布的,以便判断序列的趋势。
  2)数据预处理
  数据预处理将原始数据转换成挖掘算法需要的数据格式,包括数据标准化、空缺值处理、噪声过滤和数值离散化等。
  3)数据约简
  去除一些冗余数据和无意义数据,或由于时间复杂性或内存的能力,选择一小部分数据表示整个集合,对原始数据进行数据变换和特征提取。
  4)模式挖掘
  使用挖掘算法从大数据集中挖掘,可借助可视化技术,调整挖掘过程的阈值和参数。
  5)模式可视化
  将发现的模式在屏幕上可视化输出。协助用户通过观察分析模式的意义。
  结论
  世界上的许多事物、现象的发展变化都离不开时间,所以时间序列数据库的分布相当广泛。因而时间序列数据挖掘领域的任何进展都可能带来广泛的社会效益。例如在证券行业,通过分析股票市场历史走势的变化特点,我们可以对未来走势进行预测;商品销售中,通过对销售数据的分析,可以预测未来的市场需求状况,从而指导生产计划的制定;电力部门可以通过对用电量分析,指导电力分配;在医学领域,医生通过对药物疗效的数据分析,掌握药物的特性等。
  对时间序列研究已经有很长的时间了,也有了相当多的成果。但应用人工智能、机器学习等学科的最新成果在信息科学范畴中对时间序列进行数据挖掘的研究才刚刚起步。总的来说,未来工作可以有以下几个方面:
  1、针对不同的应用背景和数据特点,给出合理的时间序列相似性定义,并且开发在对应相似性定义下进行快速有效的查询、搜索等数据挖掘基础算法。
  2、研究时间序列基于概念层次的分类、聚类等方面的算法及进一步应用的可能性。
  3、研究时间序列数据挖掘原语,为时间序列数据挖掘的标准化和商品化打下良好基础。