在部分观察时间序列上用于机器学习的Python工具箱
⦿ Motivation :由于收集传感器失败,通信错误和意外故障等各种原因,缺失值是从现实世界环境中看到的时间序列。这使得部分观察到的时间序列(POTS)在开放世界建模中成为普遍的问题,并防止高级数据分析。尽管这个问题很重要,但锅上的机器学习领域仍然缺乏专用的工具包。创建PYPOTS以填充此空白。
⦿ Mission :PYPOTS(发音为“ Pie Pots”)天生成为一个方便的工具箱,它将使机器在锅上的学习变得容易而不是乏味,以帮助工程师和研究人员更多地关注他们手中的核心问题,而不是如何处理数据中缺少的零件。 Pypot将继续整合部分观察到的多元时间序列的经典和最新的机器学习算法。可以肯定的是,除了各种算法外,Pypot还将将统一的API以及跨算法的详细文档和交互式示例作为教程。
?如果您认为这是一个有用的工具包,请播放此存储库,以帮助其他人注意到Pypot。如果您有助于您的研究,请在您的出版物中引用Pypot。这确实对我们的开源研究意义重大。谢谢你!
该读数文件的其余部分是组织的: ❖可用的算法, ❖PYPOTS生态系统, ❖安装, ❖使用, ❖引用Pypots , ❖贡献, ❖社区。
PYPOTS在多变量部分观察的时间序列上支持插补,分类,聚类,预测和异常检测任务,而值缺失值。下表显示了针对不同任务的每种算法(按年份排序)的可用性。该符号✅表示该算法可用于相应的任务(请注意,将来将不断更新模型以处理当前不支持的任务。请注意。
?自v0.2以来,Pypot中的所有神经网络模型都获得了高参数优化的支持。此功能是通过Microsoft NNI框架实现的。您可能需要参考我们的时间序列插补调查回购库Awesome_imputation,以查看如何配置和调整超参数。
请注意,所有名称的模型??在表中(例如变压器,iTransformer,Informer等)最初不是作为论文中POTS数据的算法提出的,并且他们不能直接接受以缺失值作为输入的时间序列,更不用说推出了。为了使它们适用于POTS数据,我们专门应用了与SAITS论文1相同的嵌入策略和培训方法(ORT+MIT)。
任务类型的缩写如下: IMPU :插补; FORE :预测; CLAS :分类; CLUS :聚类; ANOD :异常检测。本文的参考文献和链接均在此文件的底部列出。
| 类型 | 算法 | impu | 前面 | 克拉斯 | clus | 阳极 | 年 - 场地 |
|---|---|---|---|---|---|---|---|
| LLM | 时间序列2 | ✅ | ✅ | ✅ | ✅ | ✅ | Later in 2024 |
| 神经网 | tefn?? 3 | ✅ | 2024 - arXiv | ||||
| 神经网 | 适合?? 4 | ✅ | 2024 - ICLR | ||||
| 神经网 | Timemixer 5 | ✅ | 2024 - ICLR | ||||
| 神经网 | itransformer?? 6 | ✅ | 2024 - ICLR | ||||
| 神经网 | ModernTCN 7 | ✅ | 2024 - ICLR | ||||
| 神经网 | 驱动器?? 8 | ✅ | 2024 - KDD | ||||
| 神经网 | SAITS 1 | ✅ | 2023 - ESWA | ||||
| 神经网 | frets?? 9 | ✅ | 2023 - NeurIPS | ||||
| 神经网 | koopa?? 10 | ✅ | 2023 - NeurIPS | ||||
| 神经网 | 交叉形式?? 11 | ✅ | 2023 - ICLR | ||||
| 神经网 | 时间网12 | ✅ | 2023 - ICLR | ||||
| 神经网 | Patchtst?? 13 | ✅ | 2023 - ICLR | ||||
| 神经网 | eTsformer?? 14 | ✅ | 2023 - ICLR | ||||
| 神经网 | 麦克风?? 15 | ✅ | 2023 - ICLR | ||||
| 神经网 | dlinear?? 16 | ✅ | 2023 - AAAI | ||||
| 神经网 | 潮? 17 | ✅ | 2023 - TMLR | ||||
| 神经网 | Csai 18 | ✅ | ✅ | 2023 - arXiv | |||
| 神经网 | segrnn?? 19 | ✅ | 2023 - arXiv | ||||
| 神经网 | scinet?? 20 | ✅ | 2022 - NeurIPS | ||||
| 神经网 | 非平稳tr.?? 21 | ✅ | 2022 - NeurIPS | ||||
| 神经网 | 电影? 22 | ✅ | 2022 - NeurIPS | ||||
| 神经网 | revin_scinet?? 23 | ✅ | 2022 - ICLR | ||||
| 神经网 | pyraformer?? 24 | ✅ | 2022 - ICLR | ||||
| 神经网 | 雨滴25 | ✅ | 2022 - ICLR | ||||
| 神经网 | FedFormer?? 26 | ✅ | 2022 - ICML | ||||
| 神经网 | 自动构造?? 27 | ✅ | 2021 - NeurIPS | ||||
| 神经网 | CSDI 28 | ✅ | ✅ | 2021 - NeurIPS | |||
| 神经网 | 告密者?? 29 | ✅ | 2021 - AAAI | ||||
| 神经网 | US-GAN 30 | ✅ | 2021 - AAAI | ||||
| 神经网 | CRLI 31 | ✅ | 2021 - AAAI | ||||
| 概率 | BTTF 32 | ✅ | 2021 - TPAMI | ||||
| 神经网 | stemgnn?? 33 | ✅ | 2020 - NeurIPS | ||||
| 神经网 | 改革者?? 34 | ✅ | 2020 - ICLR | ||||
| 神经网 | GP-VAE 35 | ✅ | 2020 - AISTATS | ||||
| 神经网 | 维达36 | ✅ | 2019 - GigaSci. | ||||
| 神经网 | M-RNN 37 | ✅ | 2019 - TBME | ||||
| 神经网 | 英国人38 | ✅ | ✅ | 2018 - NeurIPS | |||
| 神经网 | Gru-D 39 | ✅ | ✅ | 2018 - Sci. Rep. | |||
| 神经网 | TCN?? 40 | ✅ | 2018 - arXiv | ||||
| 神经网 | 变压器? 41 | ✅ | 2017 - NeurIPS | ||||
| 幼稚的 | LERP 42 | ✅ | |||||
| 幼稚的 | LOCF/NOCB | ✅ | |||||
| 幼稚的 | 意思是 | ✅ | |||||
| 幼稚的 | 中位数 | ✅ |
?立即贡献您的模型以增加您的研究影响! Pypots下载迅速增加(到目前为止,PYPI的总计300K+,每天为1K+ ),社区将广泛使用和引用您的工作。请参阅贡献指南,以查看如何将模型包括在Pypot中。
在Pypot,情况与我们熟悉的咖啡有关。是的,这是一个咖啡宇宙!如您所见,Pypots徽标中有一个咖啡壶。还有什么?请阅读;-)
?时间序列数据集在Pypot上作为咖啡豆,而POTS数据集则是不完整的咖啡豆,缺少零件具有其自身的含义。为了使用户易于使用各种公共时间序列数据集,创建了时间序列数据豆(TSDB),以使加载时间序列数据集超级简单!立即访问TSDB以了解有关此方便的工具的更多信息?现在总共支持172个开源数据集!
为了模拟缺少的现实世界数据豆,创建了生态系统库Pygrinder,一种工具包,有助于将咖啡豆磨碎成不完整的咖啡豆。根据Robin的理论43 :MCAR(完全随机失踪),MAR(随机缺失)和MNAR(并非随机缺失),缺失模式分为三类。 Pygrinder支持所有这些及其与缺失有关的其他功能。使用PYGRINGER,您可以使用一行代码将综合缺失值引入数据集。
?为了公平地评估PYPOTS算法的性能,创建了基准测试套件台器,该套件提供了标准和统一的数据预处理管道,以准备数据集,以测量各种任务上不同盆栽算法的性能。
现在,豆类,研磨机和锅已经准备好了,请在长凳上坐下,让我们考虑如何酿造一杯咖啡。教程是必要的!考虑到未来的工作量,Pypots教程将以单个存储库发布,您可以在Brewpots中找到它们。现在看一下,学习如何酿造POTS数据集!
☕️欢迎来到Pypot的宇宙。享受它,玩得开心!
您可以在Pypots文档中参考具有更多详细信息的指南。
Pypots在PYPI和Anaconda上都可以使用。您可以安装下面的PYPOTS以及TSDB,PYGRINDER,BENCHPOTS和AI4TS:
# via pip
pip install pypots # the first time installation
pip install pypots --upgrade # update pypots to the latest version
# install from the latest source code with the latest features but may be not officially released yet
pip install https://github.com/WenjieDu/PyPOTS/archive/main.zip
# via conda
conda install conda-forge::pypots # the first time installation
conda update conda-forge::pypots # update pypots to the latest version 除了Brewpots外,您还可以在Google Colab上找到一个简单,快速启动的教程笔记本。如果您有其他疑问,请参阅Pypots Documentation docs.pypots.com。您还可以在我们的社区中提出问题或询问。
我们向您介绍一个用法示例,即在下面使用PYPOTS中插入时间序列中的缺失值,您可以单击它查看。
# Data preprocessing. Tedious, but PyPOTS can help.
import numpy as np
from sklearn . preprocessing import StandardScaler
from pygrinder import mcar
from pypots . data import load_specific_dataset
data = load_specific_dataset ( 'physionet_2012' ) # PyPOTS will automatically download and extract it.
X = data [ 'X' ]
num_samples = len ( X [ 'RecordID' ]. unique ())
X = X . drop ([ 'RecordID' , 'Time' ], axis = 1 )
X = StandardScaler (). fit_transform ( X . to_numpy ())
X = X . reshape ( num_samples , 48 , - 1 )
X_ori = X # keep X_ori for validation
X = mcar ( X , 0.1 ) # randomly hold out 10% observed values as ground truth
dataset = { "X" : X } # X for model input
print ( X . shape ) # (11988, 48, 37), 11988 samples and each sample has 48 time steps, 37 features
# Model training. This is PyPOTS showtime.
from pypots . imputation import SAITS
from pypots . utils . metrics import calc_mae
saits = SAITS ( n_steps = 48 , n_features = 37 , n_layers = 2 , d_model = 256 , n_heads = 4 , d_k = 64 , d_v = 64 , d_ffn = 128 , dropout = 0.1 , epochs = 10 )
# Here I use the whole dataset as the training set because ground truth is not visible to the model, you can also split it into train/val/test sets
saits . fit ( dataset ) # train the model on the dataset
imputation = saits . impute ( dataset ) # impute the originally-missing values and artificially-missing values
indicating_mask = np . isnan ( X ) ^ np . isnan ( X_ori ) # indicating mask for imputation error calculation
mae = calc_mae ( imputation , np . nan_to_num ( X_ori ), indicating_mask ) # calculate mean absolute error on the ground truth (artificially-missing values)
saits . save ( "save_it_here/saits_physionet2012.pypots" ) # save the model for future use
saits . load ( "save_it_here/saits_physionet2012.pypots" ) # reload the serialized model file for following imputation or training 提示
[2024年6月的更新] ?第一个全面的时间表归档基准纸TSI基础:基准测试时间序列插补现已上市。该代码是repo Awesome_imputation中的开源。有了近35,000台实验,我们就28种插补方法,3种缺失模式(点,序列,块),各种缺失率和8个现实世界数据集提供了全面的基准测试研究。
[2024年2月的更新] ?我们的调查纸深度学习多元时间序列插补:ARXIV已发布了一项调查。我们全面回顾了时间序列的最先进的深度学习归纳方法的文献,为他们提供分类法,并讨论该领域的挑战和未来方向。
介绍Pypot的论文可在Arxiv上找到,它的简短版本被第9个SIGKDD International关于矿业和学习时间序列(Milets'23)的国际研讨会所接受。此外,Pypot被包括为Pytorch生态系统项目。我们正在追求将其发布在著名的学术场所,例如JMLR(机器学习开源软件的轨道)。如果您在工作中使用Pypot,请在下面引用它,然后?该存储库以使其他人注意此库。 ?
在其论文中有一些科学研究项目使用PYPOTS和参考。这是它们不完整的列表。
@article { du2023pypots ,
title = { {PyPOTS: a Python toolbox for data mining on Partially-Observed Time Series} } ,
author = { Wenjie Du } ,
journal = { arXiv preprint arXiv:2305.18811 } ,
year = { 2023 } ,
}或者
Wenjie Du。 PYPOTS:用于部分观察时间序列的数据挖掘的Python工具箱。 ARXIV,ABS/2305.18811,2023。
非常欢迎您为这个激动人心的项目做出贡献!
通过提交代码,您将
template夹快速启动;您还可以通过简单地凝视对Pypot做出贡献?此存储库可帮助更多的人注意到它。您的明星是您对Pypot的认可,这很重要!
?在此处,请在Pypots网站上查看我们用户隶属关系的完整列表!
我们关心用户的反馈,因此我们正在建立Pypots社区
如果您有任何建议或想贡献想法或分享时间序列相关的论文,请加入我们并告诉我们。 Pypots社区开放,透明且肯定是友好的。让我们一起构建和改善PYPOTS!
Du,W.,Cote,D。和Liu,Y。(2023)。 SAIT:基于自我注意力的时间序列的插补。具有应用的专家系统。 ↩2
全球1日LLM Project Gungnir用于时间序列多任务建模,很快就会与您会面。数据集中缺少值和可变长度?很难通过您的时间序列进行多任务学习?不再问题了。我们最近将打开公共Beta测试的申请;-)关注我们,并敬请期待!时间序列
Zhan,T.,He,Y.,Deng,Y.,Li,Z.,Du,W。,&Wen,Q。(2024)。时间证据融合网络:长期时间序列预测中的多源视图。 Arxiv 2024 。 ↩
Xu,Z.,Zeng,A。,&Xu,Q.(2024)。拟合:具有10K参数的建模时间序列。 ICLR 2024 。 ↩
Wang,S.,Wu,H.,Shi,X.,Hu,T.,Luo,H.,Ma,L。,...&Zhou,J。(2024)。 timemixer:时间序列预测的分解多尺度混合。 ICLR 2024 。 ↩
Liu,Y.,Hu,T.,Zhang,H.,Wu,H.,Wang,S.,Ma,L。,&Long,M。(2024)。 iTransformer:倒变压器对于时间序列预测有效。 ICLR 2024 。 ↩
Luo,D。和Wang X.(2024)。 ModernTCN:一般时间序列分析的现代纯卷积结构。 ICLR 2024 。 ↩
Nie,T.,Qin,G.,Mei,Y。,&Sun,J。(2024)。驱动器:可推广时空插补的低等级诱导的变压器。 KDD 2024 。 ↩
Yi,K.,Zhang Q.,Fan,W.,Wang,S.,Wang,P.,He,H.频域MLP是时间序列预测中更有效的学习者。神经2023 。 ↩
Liu,Y.,Li,C.,Wang,J。,&Long,M。(2023)。 Koopa:使用Koopman预测指标学习非平稳时间序列动力学。神经2023 。 ↩
Zhang,Y。,&Yan,J。(2023)。交叉形象:变压器利用多元时间序列预测的交叉维度依赖性。 ICLR 2023 。 ↩
Wu,H.,Hu,T.,Liu,Y.,Zhou,H.,Wang,J。,&Long,M。(2023)。时间网络:用于一般时间序列分析的时间2D变量建模。 ICLR 2023↩
Nie,Y.,Nguyen,NH,Sinthong,P。和Kalagnanam,J。(2023)。时间序列价值64个字:变压器的长期预测。 ICLR 2023↩
Woo,G.,Liu,C.,Sahoo,D.,Kumar,A。,&Hoi,S。(2023)。 ETSFORMER:预测时间序列的指数平滑变压器。 ICLR 2023↩
Wang,H.,Peng,J.,Huang,F.,Wang,J.,Chen,J。,&Xiao,Y。(2023)。 MICN:长期序列预测的多尺度本地和全球环境建模。 ICLR 2023 。 ↩
Zeng,A.,Chen,M.,Zhang,L。,&Xu,Q。(2023)。变压器有效时间序列预测吗? AAAI 2023↩
Das,A.,Kong,W.,Leach,A.,Mathur,S.,Sen,R。,&Yu,R。(2023)。潮汐的长期预测:时间序列密集编码器。 TMLR 2023 。 ↩
Qian,L.,Ibrahim,Z.,Ellis,HL,Zhang,A.,Zhang,Y.,Wang,T。,&Dobson,R。(2023)。知识增强了医疗保健时间序列的有条件归纳。 Arxiv 2023 。 ↩
Lin,S.,Lin,W.,Wu,W.,Zhao,F.,Mo,R。,&Zhang,H。(2023)。 Segrnn:长期时间序列预测的段反复神经网络。 Arxiv 2023 。 ↩
Liu,M.,Zeng,A.,Chen,M.,Xu,Z.,Lai,Q.,Ma,L。,&Xu,Q。(2022)。 Scinet:通过样品卷积和相互作用进行时间序列建模和预测。神经2022 。 ↩
Liu,Y.,Wu,H.,Wang,J。,&Long,M。(2022)。非平稳变压器:探索时间序列预测的平稳性。神经2022 。 ↩
Zhou,T.,Ma,Z.,Wen,Q.,Sun,L.,Yao,T.,Yin,W。,&Jin,R。(2022)。电影:长期时间序列预测的频率改进的Legendre内存模型。神经2022 。 ↩
Kim,T.,Kim,J.,Tae,Y.,Park,C.,Choi,JH,&Choo,J。(2022)。可逆实例归一化,以预测针对分布变化的准确时间序列。 ICLR 2022 。 ↩
Liu,S.,Yu,H.,Liao,C.,Li,J.,Lin,W.,Liu,Ax,&Dustdar,S。(2022)。 pyraformer:远程时间序列建模和预测的低复杂性金字塔关注。 ICLR 2022 。 ↩
Zhang,X.,Zeman,M.,Tsiligkaridis,T。,&Zitnik,M。(2022)。不规则采样多元时间序列的图形指导网络。 ICLR 2022 。 ↩
Zhou,T.,Ma,Z.,Wen,Q.,Wang,X.,Sun,L。,&Jin,R。(2022)。 FedFormer:长期序列预测的频率增强的分解变压器。 ICML 2022 。 ↩
Wu,H.,Xu,J.,Wang,J。,&Long,M。(2021)。自动成型:长期序列预测的自动相关的分解变压器。神经2021 。 ↩
Tashiro,Y.,Song,J。,Song,Y。,&Ermon,S。(2021)。 CSDI:概率时间序列插补的基于条件分数的扩散模型。神经2021 。 ↩
Zhou,H.,Zhang,S.,Peng,J.,Zhang,S.,Li,J.,Xiong,H。,&Zhang,W。(2021)。告密者:超出有效的变压器,用于长序列时间序列预测。 AAAI 2021 。 ↩
Miao,X.,Wu,Y.,Wang,J.,Gao,Y.,Mao,X。,&Yin,J。(2021)。多元时间序列插补的生成半监督学习。 AAAI 2021 。 ↩
MA,Q.,Chen,C.,Li,S。,&Cottrell,GW(2021)。不完整时间序列聚类的学习表示。 AAAI 2021 。 ↩
Chen,X。和Sun,L。(2021)。多维时间序列预测的贝叶斯时间分解。 IEEE关于模式分析和机器智能的交易。 ↩
Cao,D.,Wang,Y.,Duan,J.,Zhang,C.,Zhu,X.,Huang,C.,Tong,Y.,Xu,B.,Bai,J.,Tong,J。,&Zhang,Q。(2020)。用于多元时间序列预测的光谱时间图神经网络。神经2020 。 ↩
Kitaev,N.,Kaiser,ol。,&Levskaya,A。(2020)。改革者:有效的变压器。 ICLR 2020 。 ↩
Fortuin,V.,Baranchuk,D.,Raetsch,G。&Mandt,S。(2020)。 GP-VAE:深度概率时间序列插补。 Aistats 2020 。 ↩
Jong,JD,Emon,MA,Wu,P.,Karki,R.,Sood,M.,Godard,P.,Ahmad,A.,Vrooman,HA,Hafmann-Apitius,M。,&Fröhlich,H。(2019)。深度学习以缺失值的多元临床患者轨迹聚类。刺激性。 ↩
Yoon,J.,Zame,WR和Van der Schaar,M。(2019)。使用多向复发神经网络估算时间数据流中缺失的数据。 IEEE生物医学工程交易。 ↩
Cao,W.,Wang,D.,Li,J.,Zhou,H.,Li,L。,&Li,Y。(2018)。英国人:时间序列的双向复发。 Neurips 2018 。 ↩
Che,Z.,Purushotham,S.,Cho,K.,Sontag,DA和Liu,Y。(2018)。多元时间序列的复发性神经网络缺失值。科学报告。 ↩
Bai,S.,Kolter,JZ和Koltun,V。(2018)。对序列建模的通用卷积和复发网络的经验评估。 Arxiv 2018 。 ↩
瓦斯瓦尼(A.注意就是您所需要的。 Neurips 2017 。 ↩
Wikipedia:线性插值↩
Rubin,DB(1976)。推理和缺少数据。 Biometrika 。 ↩