使用 Deep Learning 做时间序列分析
本文介绍了哪些数据是时间序列数据,以及如何使用深度学习做时间序列分析。
- 时间序列数据可以是来自外太空的能量信号,也可以是股票,销售数据等等。人体本身也是产生时间序列数据的很好的数据源:心跳,体温等等。
- Classic Approach:测量时间序列如何基于时间发生值的大小变化,频率变化,邻近时间点数据变化,(S)AR(I)MA(X) models(基于linear self-dependence计算相关度),非线性变化等等。
- Deep Learning:从操作上来说,堆叠几个喜欢的 Framework 层层计算,小心 overfitting。(近年来的使用发现这种方法适用非常多的场景,包括时间序列分析)
- Recurrent neural nets: 这个方法这一找出时间序列中的隐藏状态,并给予时间找到它们的依赖。缺点是只适合短时间序列(10-100 time steps)
- Convolutional neural nets: 一般它用于寻找 3D 或图像数据的 pattern,但它也可以用于处理 1D 数据(时间序列),只需要把 ResNet,DenseNet 的 2D convolutions 替换出 1D 即可。这个方法性能不错,算得快,能并行优化,能归类能回归。作者认为它当下的基线模型就是 Logistic regression and 2-3 layers CNN
- CNN+RNN:
- Autoregressive neural nets: 简化 RNN,使用最近 N steps dilated convolutions。
- Clustering: 聚类算法诸如 k-means 性能不太好。
- Anomaly detection: 从数据中找到预期不应该看到的pattern。可以用 GANs,也可以用 autoencoders 把数据埋进一个新的 space。
- Hybrid: 混合 https://eng.uber.com/neural-networks/
结论:对于sequantial modeling,Autoregressive CNN > CNN > RNN, 结合 DL 和数学模型。