一种非易失性存储器时序数据压缩的量化方法与流程

文档序号:13421213阅读:523来源:国知局
一种非易失性存储器时序数据压缩的量化方法与流程

本发明属于数据存储技术领域,具体涉及一种非易失性存储器的时序数据压缩。



背景技术:

随着半导体技术的发展,非易失存储器(nvm)包括相变存储器(pcm)和忆阻器(memristor)正在受到越来越广泛的关注。由这些新型nvm所产生的ram有pcram、stt-ram和rram等,保存在nvm里的数据具有掉电不丢失的特性,即非易失性。与dram相比,nvm具有有限的擦写次数。为了延长nvm的使用寿命,现有的技术可以分为两类:减少写和损耗均衡;减少对nvm的写能延长使用寿命。

目前,许多应用领域都会产生时间序列数据,如无线传感器网络、监控系统以及物联网场景等。同时,在许多应用领域都需要及时存储这些时间序列数据,并保证断电不丢失,这就使得非易失性存储器与时间序列数据的结合成为必然。

在容量一定的情况下,非易失性存储器的寿命会随着数据量的增加而缩短,为了保证数据存储过程的正常进行需要对大量的时间序列数据进行压缩处理,压缩处理需要发现时间序列数据的隐藏趋势或相似之处,发掘隐藏趋势的技术手段能应用于经济预测,天气预报以及物理或环境科学等领域。

欧氏距离是目前使用最广泛的量化两个时间序列数据之间差异的方法,如图1所示,横坐标表示时间戳,纵坐标表示数据值,两条曲线分别表示两条时间序列数据。欧氏距离能在线性时间内(线性时间表示为欧式距离运行时间与数据量成比例)准确地度量时间序列数据之间差异,但是,欧氏距离不能随时间轴自适应地对数据进行位移,即它对时间失真也是非常敏感。这就使得欧氏距离在对时间失真问题等常见的领域(如语音识别)不适用。此外,欧氏距离不能在两个不同长度的时间序列上使用。

动态时间扭曲算法(dtw)可以克服欧式距离的局限性并且正确解决时间序列数据中的时间失真问题。与欧氏距离仅考虑两个时间序列中配对数据点之间的距离不同,动态时间扭曲算法(dtw)可以在另一个时间序列中搜索距离本时间序列中数据点x最近的数据点并计算距离。此外,在添加约束条件之后,dtw可以容忍不同程度的时间失真,或者排除不合理的情况来减少搜索时间。由于其弹性匹配能力和实现的简单性,dtw算法被广泛应用于指纹验证系统,文字识别,色谱数据预处理和面部识别等不同领域。

随着dtw在特定场景的应用,dtw占用的空间很大。例如,dtw用于语音识别时,在参考数据库中必须保持大量的时间序列数据,其中每个时间序列数据包含目标语言中特定单词或短语的声音波形。虽然可以降低时间序列的采样率(即下采样)来减小参考数据库的大小,但这会使语音识别的精度降低。由于非易失性存储器内存空间通常是有限制的,不能承受动态时间扭曲算法(dtw)的内存空间耗用量。



技术实现要素:

本发明所要解决的技术问题就是提供一种非易失性存储器时序数据压缩的量化方法,它能高效压缩并快速重构时间序列,并确保压缩数据与原始数据的差异处于可接受范围内,减少非易失性存储器的写入数据量,从而提高基于非易失性存储器的内存数据分析平台的空间效率。

本发明所要解决的技术问题是通过这样的技术方案实现的,它包括以下步骤:

步骤1、设置一个平滑窗口宽度,并对待压缩的时间序列数据s进行平滑处理,得到平滑时间序列数据s',提取平滑时间序列数据s'中的特征点,记录原始时间序列数据s中对应位置的值;

步骤2、根据步骤1保存的特征点,利用线性插值法对平滑时间序列数据s'进行时间序列数据重构,得到重构时间序列数据t;

步骤3、利用动态时间扭曲算法,求出时间序列数据s与重构时间序列数据t之间的距离;设定一个距离阈值,若是两个时间序列数据之间的距离大于此阈值,这两个时间序列数据不相似,则重新调节平滑窗口宽度,直到选取出合适的平滑窗口宽度使得所求距离小于距离阈值。

本发明的技术效果是:当存储原始时间序列数据前,压缩了原始时间序列数据,实现了快速重构时间序列数据,且在确保压缩数据与原始数据的差异处于可接受范围内的同时,减少了非易失性存储器的写入数据量。

附图说明

本发明的附图说明如下:

图1为欧式距离量化的示意图;

图2为本发明的流程图;

图3为实施例的时序数据压缩结果图。

具体实施方式

下面结合附图和实施例对本发明作进一步说明:

本发明的运行环境是:一台电脑设备,它包含cpu,nvram等必要的硬件设备,能够运行基于linuxkernel的操作系统。

依次读取数据集的时间序列数据,将其保存到数组s中,每个元素依次为时间戳对应的数据点。如图2所示,本发明的流程包括以下步骤:

在步骤s01,选取平滑窗口长度ω,从时间序列数据s=(d1,d2…dn)的第一个数据点开始执行步骤s02;

假设时间序列数据s共有n个数据点,且n>>ω,ω初始值为1。

在步骤s02,通过求平滑窗口中所有数据点的平均值,依次计算时间序列数据s中各个数据点的值,计算方法如公式(1):

式(1)中,d′i表示时间序列数据s中第i个时间点平滑后得到的新值,dk表示时间序列数据s中第k个时间点的值,并将求得到新的时间序列数据保存到平滑时间序列数据s'中;

平滑后的序列相对原始时间序列消除了轻微的噪声,对每个原始时间序列进行平滑处理,以消除数据点中的局部变化。

在步骤s03,依次读取平滑时间序列数据s'各点的值,判断是否为特征点,特征点选择符合以下四个条件中的一个,&&表示“与”:

(d′(i-1)<d′i&&d′i≥d′(i+1))

(d′(i-1)≤d′i&&d′i>d′(i+1))

(d′(i-1)>d′i&&d′i≤d′(i+1))

(d′(i-1)>d′i&&d′i≤d′(i+1))

若为特征点,则执行步骤s04,若不是,则继续选取点判断;

由本步骤可以看出,特征点为平滑时间序列数据s'中的波峰或者波谷点。

在步骤s04,将特征点的时间戳和数值记录到元组(t,dt)中;

其中t为特征点对应的原始时间序列数据的时间戳,dt为时间戳对应的原始时间序列数据s值。

在步骤s05,根据记录的特征点,利用线性插值法进行时间序列数据重构,得到重构时间序列数据t;

假设两个相邻特征点(t1,dt1)与(t2,dt2),其中,t2>t1,dt2>dt1。因此,在这两个特征点间,需要对t2-t1-1(t1、t2是整数)个丢失的数据进行重构。

采用线性插值对第q个丢失的数据点进行重构,则重构后时间戳为t1+q的数据点的值为计算方法如公式(2):

式(2)中,dt1为原始时间序列数据s在t1时刻的值,dt2为原始时间序列数据s在t2时刻的值;

式(2)中1≤q≤(t2-t1-1),依次读取任意两个相邻特征点进行重构,得到完整的重构时间序列数据t;

在步骤s06,计算欧式距离,将重构时间序列数据t与原始时间序列数据s间的序列点两两相减,获得一个序列距离矩阵m,m中的每个元素计算如下:

式(3)中,m(k,l)表示矩阵m中位于第k行第l列的元素,表示时间序列数据t中的第k个元素的值,表示时间序列数据s中的第l个元素的值;

在步骤s07,根据距离矩阵m生成损失矩阵m'(又称为累积距离矩阵),损失矩阵中各元素(m'(a,b))的值则需要逐步计算,具体值的计算式如下:

m'(a,b)=min[m'(a-1,b-1),m'(a-1,b),m'(a,b-1)]+m(a,b)………(4)

其中,a为损失矩阵m'行坐标,b为损失矩阵m'列坐标;

得到损失矩阵后,矩阵m'的最后一个元素为重构时间序列数据t与时间序列数据s间的距离,记为cm;

在步骤s08,判断cm是否大于距离阈值c,c与待压缩的原始时间序列数据相关,不同数据有不同的c,若大于c,则认为此时两序列不相似,则执行步骤s09;否则认为两序列相似,并将特征点存入非易失性存储器中;

在步骤s09,滑动窗口长度增加1,即ω=ω+1,再次执行步骤s01。

实施例

本实施例所用数据为心电图时间序列数据数据集,参见yanpingchen,eamonnkeogh,binghu,nurjahanbegum,anthonybagnall,abdullahmueenandgustavobatista(2015).theucrtimeseriesclassificationarchive.url(ucr时间序列数据的分类存档)www.cs.ucr.edu/~eamonn/time_series_data/。

该时间序列数据集包括一段时间内人类心跳的电活动,共有300条时间序列数据,每条时间序列数据表示一个心跳周期。本实施例以该数据集的第一个心跳周期为例进行说明,整个数据集需要重复执行此实施例300次。

1、选取平滑窗口长度ω=1,从心跳周期数据s=(d1,d2…dn)的第一个数据点开始执行步骤s02;其中,n=140,即s中共有140个心跳采样数据;

2、通过公式(1),利用平滑窗口依次计算140个心跳采样数据的平滑值;

3、依次读取平滑处理后的140个心跳采样数据,选择特征点;

4、将特征点的时间戳和数值记录到元组(t,dt)中;

5、根据记录的特征点,利用公式(2)的线性插值法进行重构,得到重构后的心跳周期数据t;

6、计算欧式距离,将重构心跳周期数据t与原始心跳周期数据s间的140个心跳采样数据根据公式(3)进行计算,获得一个距离矩阵m,其中m为一个140*140的矩阵;

7、根据公式(4),将的距离矩阵m转换成损失矩阵,得到损失矩阵后,矩阵的最后一个元素为重构后的心跳周期数据t与原始心跳周期数据s间的距离,记为cm;

8、判断cm是否大于距离阈值c,本实施例中取c=0;若是,则心跳周期数据t与原始心跳周期数据s不相似,则执行下一步9;否则两序列相似,将特征点存入非易失性存储器中;

9、滑动窗口长度增加1,即ω=ω+1,再次回到第1步执行。

本实施例时序数据压缩结果图3所示,横坐标为平滑窗口宽度,纵坐标为压缩率,由图3看出,随着平滑窗口长度ω的增加,需要存储的特征点个数不断减少,压缩率也在不断提高。

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