APP下载

基于能量过滤的不确定时间序列数据清洗方法

2019-09-12孙纪舟李建中

智能计算机与应用 2019年4期

孙纪舟 李建中

摘 要: 精确度是数据科学领域研究的重要方面,对后续数据处理等过程都有至关重要的影响。利用多个传感器返回的多个时间序列可提升时间序列数据的精确度,称为不确定时间序列,这多个时间序列样本在真实数据上下随机波动。已有关于时间序列的研究大多直接在不确定时间序列上提出新算法,其缺点是算法复杂度通常较高,直接对不确定时间序列进行清洗,获得尽可能接近真实的数据有重要意义。本文提出基于能量过滤的方法对不确定时间序列进行清洗,实验结果表明与已有方法相比,本文方法在效果和效率上都更优。

关键词: 不确定时间序列;能量过滤;数据清洗

文章编号:2095-2163(2019)04-0001-06 中图分类号:TP391.41 文献标志码:A

0 引 言

时间序列数据在日常生活和工业生产中无处不在,例如气象学中的温度、湿度、风速、PM2.5;医学中的心跳、血压、体温;以及经济学中的股票指数、恩格尔系数以及其它描述宏观经济形势的指数等。这些数据都是随时间变化的数值型数据。由于环境干扰、传感器的精度不够、获取数据时的舍入等原因,时间序列数据通常是不精确的,距离真实数据总有一些误差。而这些误差往往给人们的日常生活、医疗中的病情诊断及监控以及政府部门的决策等带来负面影响。

为了尽可能降低误差带来的影响,常用的解决方法就是对同一时间序列数据采集多个样本,每个样本都在真实数据周围随机的上下波动,对这些样本求平均值,或者直接在这些样本上设计新算法,都能在一定程度上解决误差带来的影响。求平均值的方法最简单快速,但结果精确度不够高;设计新算法的思路能够获得更高的精度,但往往有着很高的时间复杂度。

结合时间序列平滑的特性以及随机噪声的波动特性,本文给出一种基于能量过滤的时间序列清洗算法。根据给定的时间序列样本,计算出数据中噪声所占能量的比重,根据这个比重找出一个频率阈值,并将傅里叶变换之后高于该阈值的部分过滤掉,所得结果更加平滑且接近真实数据,在Top-k查询问题上和已有算法做了实验对比,结果显示在效果上本文算法较好,而时间效率上本文算法远远优于已有算法。

1 问题描述

1.1 时间序列

1.2 不确定时间序列

在很多实际情况中,收集到的数据往往是不精确的,比如采集温度数据的传感器,本身有一定的误差,为降低误差,对同一时刻的数据收集多个数据样本,以提高测量精度。 因此本文给出的不确定时间序列模型描述如下:

(1)不同时刻值的误差是独立同分布的随机变量;

1.3 不确定时间序列的清洗

关于不确定时间序列的已有研究中,都致力于提出新的模型和算法对不确定时间序列数据进行搜索、聚类和Top-k查询等。而相关问题在确定时间序列上的研究已经十分成熟,为了使这些方法能够直接用在不确定时序数据上,本文主要研究如何对不确定数据进行清洗(或者还原),使之变为尽可能接近真实数据的确定时间序列。下面给出不确定时间序列的清洗问题。

2 基于能量过滤的清洗方法

由于数据点之间的相关性在频域表现比较明显,因此本文考虑在频域进行降维,从而达到清洗数据的目的。其直观思想是,时间序列数据在频域上分布极不均匀。即有些频率上的数据分布很集中(高能区域),而有些频率上只有很少数据信息(低能区域),而不确定数据中的噪声在各个频率上的分布相对均匀。因此,在低能区域,噪声数据占据主导地位,直接将其舍弃掉虽然会丢失一部分有用信息,但同时丢掉了更多的垃圾信息,使得整体的数据质量得到提升。 该方法的优点主要包括:

(1)大大减少了数据量,每个时间点的数据由m维降低到1维,并且在频域上只需要保留很少的数据(例如在实验中,长度为2 k的数据在频率域只需要保留100个左右的数据点);

(2)大大提升了数据质量,通过自适应的选取一个能量阈值,本文的方法能够去掉尽可能多的噪声,保留尽可能多的有用信息,从而使最终的估计结果尽可能地接近真实数据,实验部分也对此进行了验证。

2.1 离散傅里叶变换

即在某个频率上,脏数据的能量的期望等于真实数据能量期望与噪声能量期望之和。

2.3 噪声能量的估计

由于不同时刻的数据都是由同一个传感器收集的,因此不同时刻的随机噪声也是独立同分布的。每个时刻有m个样本,均由随机变量s+Ns中采样得到,其中s是真实值但未知,随机变量Ns是传感器的随机误差。由于s是常数不影响方差,因此s+Ns和Ns的方差相等,由概率论知识可知,m个样本的样本方差是对s+Ns方差的无偏估计,即是对Ns方差的无偏估计。 由于时间序列很长,因此在每个时间点上的数据估计Ns并求平均,根据大数定律容易得出,如此求得的方差几乎等于传感器随机误差的方差:

2.4 算法

至此,可给出基于能量过滤的时间序列清洗算法:

3 实验验证

最后在真实数据集和合成数据集上对本文算法和其它算法做一对比。

3.1 实验环境

本文算法代码用JAVA语言实现,硬件环境是主频3.60GHz的8核Intel i7處理器,内存大小为8GB,硬盘大小1TB的台式机,底层操作系统是Windows 7。

3.2 实验数据

本实验采用的数据集为UCR数据集,UCR是时间序列数据研究中最常用的数据集,样本及噪声的生成均采用文献[1]中的方法。

3.3 算法对比

本实验主要与一个最近的关于不确定时间序列数据上Top-k查询的算法[1]Holistc-PkNN做对比。该算法解决的问题是,给定一个不确定时间序列数据集,研究如何从该数据集中快速找出与查询序列Q距离最近的不确定时间序列。该方法是针对不确定时间序列上的老问题设计的新算法,其最大缺点是虽然设计了很多提高性能的优化技术,但时间开销依然很高。