Datawhale组队学习 - 202505 - PyPOTS - Task01时序数据与PyPOTS

系列文章目录

Task01 - 时序数据与PyPOTS


文章目录

  • 系列文章目录
  • 前言
  • 1 时间序列数据
    • 1.1 时间序列数据的类型
    • 1.2 时间序列数据示例
    • 1.3 时间序列的研究与应用方向
      • 1.3.1 预测 Forecasting
      • 1.3.2 分类 Classification
      • 1.3.3 聚类 Clustering
      • 1.3.4 异常监测 Anomaly Detection
      • 1.3.5 时间序列生成 Generation
      • 1.3.6 插补 Imputation
  • 2 PyPOTS
    • 2.1 简介
    • 2.2 支持的核心任务
      • 2.2.1 缺失值填补
        • 传统方法
        • 深度学习方法
        • 概率模型
      • 2.2.2 预测
      • 2.2.3 分类
      • 2.2.4 聚类
      • 2.2.5 异常检测
      • 小结
    • 2.3 PyPOTS Ecosystem
      • 2.3.1 Time Series Data Beans TSDB
      • 2.3.2 PyGrinder
      • 2.3.3 BenchPOTS
      • 2.3.4 BrewPOTS
  • 总结


前言

  • Datawhale是一个专注于AI与数据科学的开源组织,汇集了众多领域院校和知名企业的优秀学习者,聚合了一群有开源精神和探索精神的团队成员
  • Datawhale 组队学习
  • PyPOTS组队学习教程

1 时间序列数据

Time Series, 按照时间顺序排列的一组观测数据。通常以固定的时间间隔进行记录,比如每秒、每小时、每天等。

  • 与传统的 独立同分布 i.i.d 数据不同, TS 有一个显著特点:时间依赖性。这意味着一个时刻的数据往往会受到前面时刻数据的影响,也会影响未来。

1.1 时间序列数据的类型

  • 根据特征分为以下几类:
特征 分类
变量 单变量: 如每日气温
多变量: 如每日温度、湿度、气压
时间间隔 等间隔:如每分钟记录一次心跳
非等间隔:如用户发帖记录
周期性 周期性: 如每周气温变化;
非周期性:如用户在线时间
趋势性 有趋势
无趋势
季节性 季节性
无季节性
完整性 包含缺失值
完整数据
状态 静态数据
动态数据

1.2 时间序列数据示例

  1. 金融数据
  2. 医疗监测
  3. 环境监测
  4. 交通数据
  5. 用户行为日志
  6. 工业传感器数据
  7. 零售与物流
  8. 能源系统
  9. 音频与视频流
  10. 体育与生物力学数据

1.3 时间序列的研究与应用方向

  • 数据科学和机器学习领域至关重要的研究方向:时间序列分析 Time Series Analysis建模 Modelling。由于时间序列数据具有时间依赖性顺序结构,传统机器学习方法往往无法直接适用,因此需要针对性的模型和算法设计。
  • 主要任务可以分为:

1.3.1 预测 Forecasting

目标: 根据已有的历史时间序列数据,预测未来一段时间的数值

  • 数学定义: 给定一个时间序列 x 1 , x 2 , ⋯   , x T {x_1, x_2, \cdots, x_T} x1,x2,,xT 预测未来 h h h 个时间步的值: x ^ T + 1 , x ^ T + 2 , ⋯   , x ^ T + h \hat x_{T+1}, \hat x_{T+2}, \cdots, \hat x_{T+h} x^T+1,x^T+2,,x^T+h
  • 常见方法ARIMAProphtLSTMTransformerInformerN-BEATSTimesNet
  • 应用示例:
    • 电力调度,预测未来几小时的用电负荷;
    • 量化金融,股票价格走势预测;
    • 公共卫生,疫情趋势预测;

1.3.2 分类 Classification

目标: 根据时间序列的整体形态或子序列模式,将其分到某一类中

  • 数学定义:给定一组时间序列 { X ( i ) } i = 1 N \{X^{(i)}\}_{i=1}^{N} {X(i)}i=1N,每个序列 X ( i ) = { x 1 ( i ) , … , x T ( i ) } X^{(i)} = \{x_1^{(i)}, \ldots, x_T^{(i)}\} X(i)={x1(i),,xT(i)},对应一个类别标签 y ( i ) ∈ { 1 , 2 , . . . , C } y^{(i)} \in \{1,2,...,C\} y(i){1,2,...,C},训练分类器 f f f 使得: f ( X ( i ) ) = y ( i ) f(X^{(i)}) = y^{(i)} f(X(i))=y(i)

  • 常见方法1-NN + DTWCNNLSTMInceptionTimeROCKETTSTMiniRocket

  • 应用示例:

    • 医学诊断,根据心电图判断是否存在心律不齐;
    • 人机交互,根据加速度序列识别人的动作;
    • 个性化推荐,根据用户的点击行为预测其兴趣偏好;

1.3.3 聚类 Clustering

目标:将一组时间序列按照其相似性自动分组,无需监督标签

  • 数学定义:给定时间序列集合 { X ( 1 ) , … , X ( N ) } \{X^{(1)}, \ldots, X^{(N)}\} {X(1),,X(N)},找出划分函数 g g g,将其划分为 K K K 个簇: g : X ( i ) ↦ { 1 , 2 , . . . , K } g: X^{(i)} \mapsto \{1, 2, ..., K\} g:X(i){1,2,...,K}
  • 常见方法K-Means + DTWSpectral ClusteringTICC(时间卷积聚类)Deep Temporal Clustering
  • 应用示例:
    • 将不同设备的运行曲线聚类以发现常见模式;
    • 将社交媒体用户行为轨迹聚类以发现群体偏好;
    • 聚类气象站点时间序列以识别气候区;

1.3.4 异常监测 Anomaly Detection

目标: 识别出不符合历史规律的时间点或时间段,可能代表系统故障或异常行为

  • 数学定义 : 给定时间序列 X = { x 1 , … , x T } X = \{x_1, \ldots, x_T\} X={x1,,xT},输出对应的异常得分序列 s = { s 1 , … , s T } s = \{s_1, \ldots, s_T\} s={s1,,sT},或标签序列 y ∈ { 0 , 1 } T y \in \{0,1\}^T y{0,1}T
    • 其中 1 表示异常。
  • 常见方法基于预测误差(如AutoEncoder、LSTM、GAN)基于重构误差基于概率建模(如Gaussian Process)基于分布距离(如KLD)
  • 应用示例:
    • 金融安全,信用卡欺诈交易检测;
    • 工业4.0,工业设备异常运行检测;
    • 网络安全,网络攻击行为检测;

1.3.5 时间序列生成 Generation

目标:学习时间序列的潜在分布,生成具有相似特征的"新"时间序列

  • 数学定义:目标是学得一个生成模型 G ( z ) G(z) G(z),从噪声 z ∼ N ( 0 , I ) z \sim \mathcal{N}(0, I) zN(0,I) 中生成具有相似统计特征的序列 x ~ = G ( z ) \tilde{x} = G(z) x~=G(z)
  • 常见方法TimeGANC-RNN-GANTTS-CNNDiffusion Models for Time Series
  • 应用示例:
    • 生成合成医疗数据用于隐私保护和模型训练
    • 生成设备运行数据以补充稀缺样本
    • 增强训练集以提高模型鲁棒性

1.3.6 插补 Imputation

目标: 在时间序列中存在缺失值情况下,准确地估计这些缺失位置上的数据,从而恢复完整的序列。

  • 数学定义:设原始时间序列为: X = { x 1 , x 2 , . . . , x T } X = \{x_1, x_2, ..., x_T\} X={x1,x2,...,xT} 其中存在缺失值的位置集合 M ⊆ { 1 , . . . , T } \mathcal{M} \subseteq \{1, ..., T\} M{1,...,T},任务是学习一个函数 f f f,估计缺失点的值: x ^ t = f ( X obs ) , ∀ t ∈ M \hat{x}_t = f(X_{\text{obs}}), \quad \forall t \in \mathcal{M} x^t=f(Xobs),tM 其中 X obs X_{\text{obs}} Xobs 表示可观测到的(非缺失的)部分数据。

  • 常见方法

    • 简单插值法前向填充后向填充线性插值样条插值
    • 统计建模方法K近邻(KNN)EM算法Kalman滤波
    • 机器学习方法
      • 回归/深度学习模型BRITSGRU-DSAITSTransformer-based模型(如TimesNet-Imputer)
      • 图神经网络方法基于节点依赖关系进行插补如GRIN、CSDI(使用扩散模型进行序列插补)
      • 概率建模方法Variational AutoEncoder(VAE)Gaussian Process(GP)
  • 插补与预测的区别: 预测是向未来推断,而插补主要关注已有数据内部的缺失部分。


2 PyPOTS

2.1 简介

PyPOTS 是一个专为处理部分观测时间序列(Partially-Observed Time Series, 简称 POTS) 而设计的开源 Python 工具箱。

2.2 支持的核心任务

2.2.1 缺失值填补

  • 主要目标是在数据中存在缺失的情况下,最大程度恢复原始信号。PyPOTS 实现了超过 12 种填补算法,既有传统方法,也有现代深度学习模型:
传统方法
  1. 前向填充 Forward Filling;
  2. 后向填充 Backward Filling;
  3. 线性插值 Linear Interpolation;
深度学习方法
  1. SAITS, Self-Attention based Imputation for Time Series。PyPOTS 自主实现的 Transformer 风格模型;
  2. BRITS,基于双向 RNN 的填补方法,兼顾因果一致性;
  3. GRU-D,引入时间衰减机制,特别适合处理医疗场景;
  4. MRNN、CSDI、Transformer-Denoising Autoencoder 等;
概率模型
  1. BTTF,Bayesian Temporal Tensor Factorization,使用贝叶斯推断的张量分解方法;

2.2.2 预测

  • Impute-then-Forecast 方法链:先填补再进行预测(支持组合 SAITS+LSTM 等);
  • 端到端预测模型:如 Transformer 与 GRU 基模型;
  • 与 Benchmark 模块结合,支持将任何模型进行标准化评估。

2.2.3 分类

  • 基于 RNN、Transformer 的深度分类模型;
  • 可结合填补模块预处理后的数据进行分类;
  • 支持多任务学习,将分类与预测或填补结合;

2.2.4 聚类

  • 填补 + 聚类:先使用 SAITS 等模型填补缺失,再进行 K-Means、DBSCAN 等聚类;
  • 特征提取 + 聚类:通过 Transformer 等模型提取潜在特征后进行聚类;
  • 支持对比学习风格的时间序列表示学习,用于后续聚类。
  • 该模块提供标准化聚类评估指标,如 Silhouette Score、NMI 等。

2.2.5 异常检测

  • 填补 + Reconstruction-Based 方法:如使用自动编码器重构序列,比较原始与预测误差;
  • 基于统计的方法:结合滑动窗口与动态阈值;
  • Transformer-based 模型:学习时间依赖与异常模式,例如结合 CSDI 等模型进行异常点估计;
  • 可与 BenchPOTS 一起评估各类异常检测算法的性能。

小结

任务类型 支持算法数量(当前) 代表算法示例
缺失值填补 48+ SAITS, BRITS, GRU-D, BTTF
预测 13+ LSTM, Transformer, SAITS
分类 10+ GRU Classifier, TCN, RNN
聚类 4+ 填补后 K-Means、AutoEncoder
异常检测 22+ Reconstruction, Transformer

2.3 PyPOTS Ecosystem

构建了一个围绕 POTS 建模的完整生态系统。

从原始数据准备、到缺失模拟、模型训练、结果评估再到实验复现,走完整个流程。

生态模块 比喻 作用
TSDB 咖啡豆 数据集加载,提供标准化原始数据
PyGrinder 研磨机 模拟缺失,构造真实世界中的数据挑战
BenchPOTS 评分系统 标准化评估流程,支持模型对比
BrewPOTS 冲泡指南 教程与使用示例,引导用户逐步掌握 POTS 建模流程

2.3.1 Time Series Data Beans TSDB

时间序列数据集仓库,提供标准化的、广泛使用的时间序列数据集。

  • 涵盖医疗、交通、气象、金融、能源等多个领域共 172 种数据集。

2.3.2 PyGrinder

缺失机制模拟器,可以对原始数据模拟不同类型的缺失模式,生成 POTS 数据。

  • 支持的缺失机制:
    • MCAR Missing Completely At Random
    • MAR Missing At Random
    • MNAR Missing Not At Random
    • Block Missing 连续缺失

2.3.3 BenchPOTS

一套完整、可复现的基准测试教程,对不同算法在相同数据、相同缺失条件下进行公平比较。

  • 支持的评估指标
    • 对填补任务:MAE、RMSE、MAPE
    • 对预测任务:MSE、SMAPE、R² 等
    • 对分类任务:Accuracy、F1 Score
    • 对异常检测:AUC、Precision@k

2.3.4 BrewPOTS

包含了大量经过精心设计的 Notebook 教程和真是案例代码

  • 安装与入门教程(安装 PyPOTS、加载数据)
  • 缺失填补案例(SAITS、BRITS 的使用)
  • 多任务演示(如填补+预测、填补+分类)
  • 自定义缺失模拟 + 基准测试
  • 与 Hugging Face Spaces 集成的在线 Demo
  • Github 上公开的训练脚本和超参数配置模板

总结

  • 初步了解时间序列数据和PyPOTS

你可能感兴趣的:(学习,python,人工智能)