Task01. 时序数据与 PyPOTS 介绍
- Task01. 时序数据与 PyPOTS 介绍
-
- 1. 时间序列数据介绍
-
- 1.1 时间序列数据的类型
- 1.2 常见时间序列数据示例
- 1.3 时间序列研究与应用方向
-
- 主要任务:
-
- 1. 预测(Forecasting)
- 2. 分类(Classification)
- 3. 聚类(Clustering)
- 4. 异常检测(Anomaly Detection)
- 5. 时间序列生成(Generation)
- 6. 插补(Imputation)
- 2. PyPOTS 介绍
-
- 2.1 什么是 PyPOTS?
- 2.2 PyPOTS 支持的核心任务
- 具体任务详解:
-
- 1. 缺失值填补(Imputation)
- 2. 预测(Forecasting)
- 3. ️ 分类(Classification)
- 4. 聚类(Clustering)
- 5. ⚠️ 异常检测(Anomaly Detection)
- ✅ 总结
Task01. 时序数据与 PyPOTS 介绍
1. 时间序列数据介绍
时间序列(Time Series) 是指按照时间顺序排列的一组观测数据,通常以固定的时间间隔进行记录(如每秒、每小时、每天等)。每一个数据点不仅包含一个观测值,还伴随着一个时间戳。
️ 举例:
- 每天记录城市气温
- 每天股市的收盘价
- 每分钟记录用户的心率(智能手表)
与 i.i.d 数据的区别
- 时间序列具有时间依赖性
- “过去影响现在”,甚至“过去影响未来”
示例:
- 昨天下雨 → 今天湿度高
- 前几天行情波动 → 影响今天股市
- 运动后心率上升而不是瞬间变化
因此,时间序列需要专门的建模方法,如预测、分类、异常检测等。
1.1 时间序列数据的类型
类型 |
描述 |
示例 |
单变量时间序列 |
仅包含一个变量的取值 |
每日温度、股价、AQI |
多变量时间序列 |
同一时间点多个变量 |
温度+湿度+压力;多支股票 |
等间隔 / 非等间隔 |
时间间隔是否规律 |
心跳 vs. 发帖时间 |
周期性 / 非周期性 |
是否有重复模式 |
每周气温 vs. 用户在线时间 |
趋势 / 无趋势 |
是否存在变化趋势 |
上升气温 vs. 随机行为 |
季节性 / 非季节性 |
是否特定周期有规律 |
每周变化 vs. 无规律 |
缺失值 / 完整数据 |
是否存在缺失记录 |
发帖记录 vs. 在线记录 |
静态 / 动态序列 |
数据是否变化 |
气象站数据 vs. 用户记录 |
1.2 常见时间序列数据示例
- 金融:股价、汇率、指数、交易量
- 医疗:ECG、EEG、血糖、ICU监测
- 环境:气象数据、污染物、地震、海啸
- 交通:车流量、出入站人数、共享单车
- 互联网行为:点击、搜索、停留时间
- 工业 IoT:设备温度、电流、压力
- 零售物流:销量、库存、运输轨迹
- 能源系统:发电量、用电量、智能电表
- 音频视频流:语音识别、行为分析
- 体育与人体数据:加速度、步频、肌电图
1.3 时间序列研究与应用方向
主要任务:
1. 预测(Forecasting)
- 目标:预测未来时间点值
- 方法:ARIMA, LSTM, Transformer, TimesNet
- 应用:电力负载预测、股价预测、疫情趋势
2. 分类(Classification)
- 目标:将序列分到不同类别
- 方法:1-NN+DTW, LSTM, InceptionTime, ROCKET
- 应用:心电图诊断、动作识别、兴趣推荐
3. 聚类(Clustering)
- 目标:无监督分组
- 方法:K-Means+DTW, TICC, Deep Temporal Clustering
- 应用:群体行为、气候分区、设备运行状态
4. 异常检测(Anomaly Detection)
- 目标:识别异常行为或故障
- 方法:AutoEncoder, GAN, GP, KLD
- 应用:信用卡欺诈、设备故障、网络攻击
5. 时间序列生成(Generation)
- 目标:生成相似序列
- 方法:TimeGAN, Diffusion Models
- 应用:合成医疗数据、数据增强
6. 插补(Imputation)
- 目标:填补缺失数据
- 方法:
- 传统:前向/后向填充、线性插值
- ML:BRITS、GRU-D、SAITS、CSDI、GRIN
- 统计:KNN、EM、Kalman滤波
- 应用:ICU数据、气象监测、IoT设备、金融数据
预测 vs 插补:预测是推断未来;插补是填补历史/当前缺失。
2. PyPOTS 介绍
2.1 什么是 PyPOTS?
PyPOTS 是一个专门处理**部分观测时间序列(POTS)**的开源 Python 工具包,支持缺失值插补、预测、分类、聚类、异常检测等任务。
目标:
- 专注于 POTS 数据的建模
- 提供经典与先进算法
- 提供统一 API、学习指南和应用示例
2.2 PyPOTS 支持的核心任务
任务类型 |
支持算法数量 |
代表算法 |
缺失值填补 |
48+ |
SAITS, BRITS, GRU-D, BTTF |
预测 |
13+ |
LSTM, Transformer, SAITS |
分类 |
10+ |
GRU Classifier, TCN, RNN |
聚类 |
4+ |
K-Means、AutoEncoder |
异常检测 |
22+ |
Reconstruction, Transformer |
具体任务详解:
1. 缺失值填补(Imputation)
-
传统方法:
- 前向填充(Forward Fill)
- 后向填充(Backward Fill)
- 线性插值
-
深度学习方法:
- SAITS(Transformer风格)
- BRITS(双向RNN)
- GRU-D(时间衰减机制)
- MRNN、CSDI、Transformer-DAE
-
概率方法:
2. 预测(Forecasting)
- 方式:
- 先插补后预测(如 SAITS + LSTM)
- 端到端预测模型(Transformer、GRU)
3. ️ 分类(Classification)
- 深度模型(RNN, Transformer)
- 可结合插补模块
- 支持多任务学习(分类+预测/插补)
4. 聚类(Clustering)
- 方式:
- 插补后 + KMeans/DBSCAN
- 表征学习 + 聚类(如 Transformer 编码器)
- 支持评估指标:
5. ⚠️ 异常检测(Anomaly Detection)
- 方法:
- 插补 + 重建误差
- 统计阈值法
- Transformer 模型(可结合 CSDI)
✅ 总结
PyPOTS 是一个模块化、扩展性强的时间序列工具包,特别适用于存在缺失值的多变量时间序列数据分析场景。其支持的五大任务涵盖了时间序列挖掘中的主流应用,配合 Benchmark 工具箱和丰富模型库,为研究与工程实践提供了强有力的支持。