更多的时间预测,参考
https://github.com/qingsongedu/awesome-AI-for-time-series-papers#AI4TS-Tutorials
1. 周期检测模块
可能存在的情况,
- 单周期
- 多周期
- 无周期;
Robust Period 检测 该时间序列,是否有周期 以及周期的长度,
主要包含 3个大模块
1.1 趋势 去除模块:
如果信号有趋势的变化, 放到和周期信号一起, 直接检测会有影响;
为了使得,提取出的 趋势分量项具有如下特点:
-
能够包含具有突变情况, 引入了一阶差分矩阵的 L1 正则项, 同时避免阶梯效应, 引入了二阶差分, 使得整体趋势项平滑 ;
-
不会将 outlier 异类点 带入趋势项中, 引入 huber 损失, g γ ( x i ) g_{\gamma}(x_{i}) gγ(xi)
1.2 优化的小波变化
为了处理 多周期 信号的 这种情况,使用优化的小波变换,将多周期的信号进行解耦,
MODWT
: 该优化的小波变换, 对输入的 时间序列 信号,
分解成 多个 时间序列 信号,
此时,每个时间序列信号就是 一层小波系数;
优势在于:
-
得到的每一层小波系数的 长度 = 原始时间序列信号的长度;而传统的 小波变换,每分解一次长度会减半;
-
算出每一小波系数的方差, 方差反应出 本层的小波能量, 如果该层 小波含有一个周期信号,则该层能量往往较高 , 从而可以得出每一层小波系数的方差在整体中能量占比是否较高;
-
基于上述事实, 对小波系数的方差进行排序, 只针对较高方差的 前几层,进行单周期检测;
想请问一下, 这里的 MODWT 这种分解出来的多个 子信号,
和 使用EMD 经验模式 或者 TQWT 分解出来的多个子信号 的区别是什么?
1.3. 单周期检测算法
分开之后, 针对 每一个小波系数 做一个 单周期检测算法;
最后将所有的结果 综合起来;
2. 信号分解
在判断时间序列 是否具有周期, 以及周期的长度,
在完成之后, 使用该周期检测的结果, 对信号进行分解。
- 将异常 放到 残差项中,
- 将 趋势突变 放到 趋势项中;
2.1 无周期信号分解
如果周期检测的结果表明该信号是没有周期的,
则只需要对该信号进行 趋势 + 残差 分解;
分解成 趋势项 + 残差项;
2.2 周期信号分解
如果检测结果,表明该信号是一个周期信号;
则进行 周期 趋势分解;
分解成 趋势项 + 周期项 + 残差项, 如图中的下半部分;
此时, 在各个 分量上进行 异常检测, 从而更加 容易检测出异常;
提出三种方法:
-
单周期的趋势信号, 将周期 和趋势分解开来;
-
多周期的分解;
-
由于现实存储中, 前期存储的密度角度(每秒存储一次), 后期的存储密度减少(每个小时存储一次), 多尺度的周期趋势 分解方式;
这里着重介绍, 多周期信号的分解;
双边滤波 --> 趋势项 提取 --> 周期项提取 --> 多趋势分解
3. 时序检测的应用
- 时序信号的异常检测
- 时序 预测
- 其他时序任务应用, 故障定位,
3.1 异常检测
注意这里 使用了 unet 去进行 捕获时间序列;
2. loss 优化成 时序 loss ;
不同的异常检测 情况,
有的任务 在时序上 容易检测出来,
有的在频域中容易检测出来;
必要的预处理,
3.2 时域预测
FED former:
时域,频域成分 同时加入;
3.3 多周期的 时序预测
quatformer;