关于时序实验室
时序实验室专门处理时间序列数据。和影像实验室不同,这里的数据是随时间变化的序列,处理方法和模型都不一样。
常见的时序数据包括:股票价格、电力负荷、传感器信号、心电图、交通流量、气象数据等。学完这个实验室,你就能独立完成时序预测、异常检测、时序分类这些任务了。
点击图片可放大查看完整课程结构
第一节:时序数据基础
这节课讲什么
让你理解时序数据的特点,学会时序数据的预处理方法。时序数据和图像数据有很大不同,处理方式也完全不一样,这节课帮你建立正确的认知。
时序数据的基本概念
- 什么是时间序列:按时间顺序排列的一系列数据点
- 时间戳、采样频率、时间窗口这些概念
- 单变量时序vs多变量时序
时序数据的特点
- 趋势性:数据长期的上升或下降趋势
- 季节性:周期性的重复模式,比如电力负荷的日周期、周周期
- 周期性:不固定周期的波动
- 平稳性:统计特性是否随时间变化,很多模型要求数据平稳
- 自相关性:当前值和历史值的相关程度
数据预处理
- 缺失值处理:前向填充、后向填充、插值、删除
- 异常值处理:3σ原则、IQR方法、滑动窗口检测
- 数据平滑:移动平均、指数平滑
- 归一化/标准化:MinMaxScaler、StandardScaler
- 差分操作:让非平稳序列变平稳
特征工程
- 滑动窗口特征:历史N个时间步的值作为特征
- 滞后特征:lag_1, lag_2, ...等
- 统计特征:窗口内的均值、方差、最大最小值
- 时间特征:小时、星期几、月份、是否节假日
数据划分
重要提醒
时序数据的划分和图像数据不一样,不能随机打乱!必须按时间顺序划分,前面的做训练集,后面的做测试集。否则会造成数据泄露,测试结果不可信。
怎么学这节课
找一个公开的时序数据集(比如股票数据、电力负荷数据、气温数据),动手做一遍数据探索和预处理。画出时序图,观察数据的趋势和周期特点。尝试不同的预处理方法,看对数据的影响。
第二节:传统时序模型
这节课讲什么
教你传统的时序分析方法。这些方法虽然不是深度学习,但在很多场景下依然有效,而且经常作为baseline使用。写论文的时候,通常要和这些传统方法做对比。
ARIMA模型
- AR(自回归):用历史值预测当前值
- I(差分):通过差分让序列平稳
- MA(移动平均):用历史误差预测当前值
- 参数p、d、q的含义和确定方法
- 用ACF和PACF图辅助定阶
- SARIMA:带季节性的ARIMA
Prophet模型
- Facebook开源的时序预测工具
- 适合有明显趋势和季节性的数据
- 可以方便地加入节假日效应
- 对缺失值和异常值比较鲁棒
- 使用简单,几行代码就能出结果
指数平滑法
- 简单指数平滑:适合无趋势无季节性的数据
- Holt线性趋势:适合有趋势无季节性的数据
- Holt-Winters:适合有趋势有季节性的数据
评估指标
- MAE(平均绝对误差):直观,和原始数据单位相同
- MSE(均方误差):对大误差惩罚更重
- RMSE(均方根误差):MSE开根号,单位和原始数据相同
- MAPE(平均绝对百分比误差):百分比形式,便于比较
怎么学这节课
在真实数据集上把这些方法都跑一遍,对比效果。理解每种方法的适用场景和局限性。ARIMA要手动调参比较麻烦,Prophet用起来简单,两个都要会。
第三节:深度学习时序模型
这节课讲什么
这是时序实验室的核心内容,教你用深度学习处理时序数据。深度学习模型可以自动学习复杂的时序模式,在很多任务上效果比传统方法好。
RNN系列
- RNN原理:通过隐藏状态传递历史信息
- RNN的问题:梯度消失,难以学习长期依赖
- LSTM:通过门控机制(遗忘门、输入门、输出门)解决长期依赖问题。时序预测的基础模型,必须掌握
- GRU:LSTM的简化版,参数更少,效果相近
- 双向LSTM:同时利用过去和未来的信息(仅用于分类任务)
Seq2Seq结构
- 编码器-解码器结构
- 编码器把历史序列编码成向量
- 解码器基于这个向量生成预测序列
- 适合多步预测任务
- 可以加入注意力机制提升效果
Transformer时序模型
- Informer:稀疏自注意力,处理长序列效率更高
- Autoformer:自相关机制,更好地捕捉周期性
- FEDformer:频域增强,利用傅里叶变换
- PatchTST:把时序切成patch处理
- 这些是现在论文常用的baseline,建议都了解一下
TCN(时序卷积网络)
- 用一维因果卷积处理时序
- 膨胀卷积扩大感受野
- 并行计算,训练速度比RNN快
时空模型(处理多变量+空间关系)
- ST-GCN:图卷积+时序建模
- 适合交通预测等有空间结构的数据
怎么学这节课
先把LSTM搞懂,在一个预测任务上跑通,理解输入输出的shape。然后学Transformer时序模型,对比和LSTM的区别。每个模型都要知道怎么准备数据、怎么构建模型、怎么训练和预测。
数据准备要点
- 输入shape通常是 (batch_size, seq_len, features)
- 要正确构建滑动窗口数据集
- 注意区分输入窗口长度和预测窗口长度
第四节:时序任务实战
时序预测任务
根据历史数据预测未来的值,是最常见的时序任务。
- 单步预测vs多步预测:预测下一个时刻还是预测未来多个时刻
- 单变量预测vs多变量预测:用单个变量的历史还是多个变量的历史
- 直接预测vs递归预测:多步预测的两种策略
- 常见应用:股票预测、电力负荷预测、销量预测、天气预测
异常检测任务
识别时序数据中的异常点或异常片段。
- 基于重构的方法:用AutoEncoder重构,重构误差大的就是异常
- 基于预测的方法:预测值和真实值差异大的就是异常
- 基于聚类的方法:偏离聚类中心的点是异常
- 评估指标:时序异常检测的F1计算方式和普通分类不同,要用Point-Adjust或PA%K
- 常见应用:设备故障检测、网络入侵检测、心电异常检测
时序分类任务
把整个序列分到某个类别。
- 可以用RNN、1D-CNN、Transformer
- 常见应用:心电图分类、手势识别、活动识别
- UCR时序分类数据集:128个数据集,常用benchmark
怎么学这节课
选一个你感兴趣的任务(比如电力负荷预测或者心电图分类),从数据处理到模型训练到结果分析,完整做一遍。建议先做单步预测,再做多步预测,循序渐进。
第五节:模型改进
这节课讲什么
教你怎么在基础时序模型上做改进,找到论文的创新点。
常见改进方向
- 引入注意力机制:让模型关注重要的时间步,学会哪些历史时刻对预测更重要
- 多尺度建模:同时捕捉短期和长期依赖,比如用不同大小的卷积核
- 引入外部知识:加入领域特征、节假日信息、天气信息等
- 结合图神经网络:处理多变量时序的空间关系,比如多个传感器之间的关系
- 频域方法:用傅里叶变换或小波变换提取频域特征
- 分解方法:把序列分解成趋势、季节性、残差分别建模
损失函数改进
- 加权损失:对重要时间步或重要变量给更大权重
- 多任务损失:同时预测多个目标
- 对抗损失:用GAN的思想提升生成质量
训练策略改进
- Teacher Forcing:训练时用真实值还是预测值作为下一步输入
- Scheduled Sampling:逐渐从真实值过渡到预测值
- 课程学习:从简单样本到困难样本
论文常见套路
- XXX + 注意力机制 → 提升对关键时间步的关注
- XXX + 多尺度特征 → 捕捉多粒度时序模式
- XXX + 图神经网络 → 建模变量间的空间关系
- XXX + 领域知识 → 融合专业知识提升预测效果
时序实验室学完之后
到这里,时序实验室的核心内容就学完了。接下来你可以:
1. 根据自己的论文方向,深入学习对应的任务(预测/异常检测/分类)
2. 找一个公开数据集(ETT、ECL、Weather等),完整做一个项目练手
3. 如果需要更高级的技术,可以去学习前沿技术部分(强化学习等)