时间序列的归一化方法

在机器学习、模式识别的模型训练之前,通常需要对数据进行预处理工作,在哪种情况下选用哪种预处理方法,仍然是很多工作人员比较头疼的事情。本人前面的两篇博客总结了一些比较常用的数据归一化方法:

数据预处理之归一化

再谈机器学习中的归一化方法

这两篇博客介绍的都是针对非时间序列的数据进行的一些常规操作。由于时间序列的特殊性(1、相邻序列之间的模式相关性,2、在时间维度上数据是不断产生的),因此其归一化方法也有别于非时间序列的归一化方法。通常时间序列分析的立足点在于发现异常模式或者异常值。在归一化方法的选用上,也应该尽可能的利于后续算法/模型工作。在此篇博客中,将对时间序列的归一化方法进行简单的介绍。

一、传统的归一化方法通常是进行全局归一化,比如利用全局范围内的最大值最小值对数据进行约束:


这种方法简单易于理解,缺点是最大值最小值通常是噪声造成的,特别是时间序列,由于涉及时间范围广,数据的测量设备可能中途更换、测量条件不同,导致同一信号的幅值差异巨大,采用此种方法将导致部分时间序列失真、同时不利于不同时段不同模式的对比。

二、在全局归一化的基础上、结合小波/傅里叶变换中加窗的思想,产生了加窗归一化。

利用窗口内序列的极大值、极小值对该窗口内的时间序列进行归一化,这种方法一定程度上解决了时间跨度多大时不同测量条件下序列幅值差异的问题,不过由噪声引起的极大值极小值仍然严重影响了归一化的效果。

单纯的利用最大值最小值、极大值极小值尽管可以将数据进行约束,但是无法满足时间序列的分析要求。在此介绍一种时间序列的自适应归一化方法:
给定时间序列S,对S加窗分段后S共由n段窗口长度为L的序列构成:

对S进行自适应归一化,归一化后序列为

算法描述如下:

1、该算法在归一化的同时由于考虑到了相邻时间序列的相关性(相邻时间序列的关系因子由参数控制),因此归一化成败的关键在于参数的选取。具体需要结合自己的需要和时间序列特征进行控制,由于算法简单、计算量小的特点,初次使用时对这两个参数进行简单的遍历搜索是个不错的选择;2、由于该算法中极大值极小值对归一化效果并不占支配地位,通常归一化后的时间序列中正常值在-1至+1之间,而异常值的幅值将远远大于1,因此该算法对发现极端值是非常有效的,比如对某地的近半个世纪的降雨情况进行归一化处理,部分年份中极端的降雨情况将更加容易发现。

最后,数据预处理的方法仁者见仁、智者见智,实际运用时更多的是需要结合业务和使用的模型这些方面进行考量。

原文地址:https://www.cnblogs.com/cl1024cl/p/6205050.html