在部分觀察時間序列上用於機器學習的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 。 ↩