作者:知乎用户
链接:https://www.zhihu.com/question/304796104/answer/547001050
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
其实时间序列预测的思路并不是很多,常见的就是ARIMA,当然也可以做神经网络,马尔可夫链之类的。这些其实只需要基于之前的状态来做预测,特征就是之前滑窗内各时间点的实际数值,这个是由模型限定的。当然你也可以把这个问题转换一下,不要局限在常规的时间序列模型中,就认为是一种回归模型或者二分类模型,模型预测目标就是下一个时间点的数值或者是否异常(0/1变量)。那所有的模型都通用了,这个时候就可以去做特征工程了。思路主要有以下几类:
1.从时域出发,历史一段时间点的值都可以纳入。可以去加窗,在窗口内做各样的统计,例如均值、方差、斜率等,这个其实可以参考时间序列的表示方法,如何去压缩时间序列,那些方法都可以用来做特征工程。既然加窗了,窗口内还可以做一些自相关分析啊之类的,也可以弄一个滑动窗,把一段区间内的自相关系数都计算出来作为特征。也可以做类似SVD,稀疏自编码器之类的,在时域上做时间序列的拆分。
2.从频域出发,去做STFT之类的,拿到频域特征。但是看问题了,你是要对整个时间序列进行分析,还是对未来时间点进行预测。频域特征最大的问题就是对时间的不敏感,而且还存在边缘效应,所以在预测未来时间点的场景下,基本没有什么作用。
3.时频结合,去做希尔伯特黄变换,拿到时频特征。这个会优于频域分析,但是如果时间序列构成较为复杂或杂乱无章,效果也一般。在预测未来时间点的场景下,也会存在边缘效应,导致预测滞后。
其实时间序列预测最大的障碍是去噪了,否则在异常检查等领域难度就小多了。去噪是个很大的坑,方法很多,上面说的频域分析和时频分析都是,还有很多弱信号检测的方法,比如盲解卷积,随机共振,小波变化之类的,每种方法还有很多变化,都有各自的领域限制,需要根据实际情况进行评估。