Uma caixa de ferramentas Python para aprendizado de máquina em séries temporais parcialmente observadas
⦿ Motivation : devido a todos os tipos de razões, como falha dos sensores de coleta, erro de comunicação e mau funcionamento inesperado, os valores ausentes são comuns para ver nas séries temporais do ambiente do mundo real. Isso torna as séries temporais parcialmente observadas (POTS) um problema difundido na modelagem do mundo aberto e impede a análise de dados avançada. Embora esse problema seja importante, a área de aprendizado de máquina em POTS ainda não possui um kit de ferramentas dedicado. Os Pypots são criados para preencher esse espaço em branco.
⦿ Mission : os Pypots (pronunciados "Pie Pie") nascem para se tornar uma caixa de ferramentas útil que facilitará o aprendizado de máquina em vasos, e não tediosos, para ajudar a engenheiros e pesquisadores a se concentrarem mais nos principais problemas em suas mãos, do que em como lidar com as partes ausentes em seus dados. Os Pypots continuarão integrando os algoritmos clássicos e mais recentes de aprendizado de Machine para séries temporais multivariadas parcialmente observadas. Com certeza, além de vários algoritmos, os Pypots terão APIs unificadas, juntamente com documentação detalhada e exemplos interativos nos algoritmos como tutoriais.
? Por favor, estrela este repositório para ajudar outras pessoas a perceber Pypots se você acha que é um kit de ferramentas útil. Por favor , cite os Pypots em suas publicações, se isso ajudar na sua pesquisa. Isso realmente significa muito para nossa pesquisa de código aberto. Obrigado!
O restante deste arquivo ReadMe está organizado da seguinte forma: ❖ Algoritmos disponíveis , ❖ Ecossistema Pypots , ❖ Instalação , ❖ Uso , ❖ Citando Pypots , ❖ Contribuição , ❖ Comunidade .
Os Pypots suportam tarefas de imputação, classificação, agrupamento, previsão e detecção de anomalias em séries temporais parcialmente observadas com valores ausentes. A tabela abaixo mostra a disponibilidade de cada algoritmo (classificado por ano) em Pypots para diferentes tarefas. O símbolo ✅ indica que o algoritmo está disponível para a tarefa correspondente (observe que os modelos serão atualizados continuamente no futuro para lidar com tarefas que não são suportadas no momento. Fique sintonizado).
? Desde v0.2 , todos os modelos de rede neural em Pypots têm suporte a otimização hiperparameter. Essa funcionalidade é implementada com a estrutura da Microsoft NNI. Você pode se referir ao nosso Repo Awesome_imputação da Suries de Série Tempo Awesome_Imputação para ver como configurar e ajustar os hiperparâmetros.
Observe que todos os modelos cujo nome com ?? Na tabela (por exemplo, transformador, Itransformer, informante etc.) não são originalmente propostos como algoritmos para dados de POTS em seus trabalhos, e eles não podem aceitar diretamente as séries temporais com valores ausentes como entrada, muito menos a imputação. Para torná -los aplicáveis aos dados do POTS, aplicamos especificamente a estratégia de incorporação e a abordagem de treinamento (ORT+MIT) a mesma que fizemos no artigo 1 do SAITS 1.
Os tipos de tarefas são abreviados da seguinte forma: IMPU : Imputação; FORE : previsão; CLAS : classificação; CLUS : clustering; ANOD : Detecção de anomalia. As referências e links em papel estão todos listados na parte inferior deste arquivo.
| Tipo | Algo | Impu | Antes | Clas | Clus | Anod | Ano - Local |
|---|---|---|---|---|---|---|---|
| Llm | Série temporal.ai 2 | ✅ | ✅ | ✅ | ✅ | ✅ | Later in 2024 |
| Rede neural | Tefn? ? 3 | ✅ | 2024 - arXiv | ||||
| Rede neural | Fits? ? 4 | ✅ | 2024 - ICLR | ||||
| Rede neural | Timemixer 5 | ✅ | 2024 - ICLR | ||||
| Rede neural | itransformer? ? 6 | ✅ | 2024 - ICLR | ||||
| Rede neural | ModernTcn 7 | ✅ | 2024 - ICLR | ||||
| Rede neural | ImpUteFormer? ? 8 | ✅ | 2024 - KDD | ||||
| Rede neural | Saits 1 | ✅ | 2023 - ESWA | ||||
| Rede neural | Trastes? ? 9 | ✅ | 2023 - NeurIPS | ||||
| Rede neural | Koopa? ? 10 | ✅ | 2023 - NeurIPS | ||||
| Rede neural | Formulador cruzado? ? 11 | ✅ | 2023 - ICLR | ||||
| Rede neural | Timesnet 12 | ✅ | 2023 - ICLR | ||||
| Rede neural | Patchtst? ? 13 | ✅ | 2023 - ICLR | ||||
| Rede neural | EtsFormer? ? 14 | ✅ | 2023 - ICLR | ||||
| Rede neural | Micn? ? 15 | ✅ | 2023 - ICLR | ||||
| Rede neural | Dlinear? ? 16 | ✅ | 2023 - AAAI | ||||
| Rede neural | Maré? 17 | ✅ | 2023 - TMLR | ||||
| Rede neural | CSAI 18 | ✅ | ✅ | 2023 - arXiv | |||
| Rede neural | Segrnn? ? 19 | ✅ | 2023 - arXiv | ||||
| Rede neural | Scinet? ? 20 | ✅ | 2022 - NeurIPS | ||||
| Rede neural | Tr. não estacionário? 21 | ✅ | 2022 - NeurIPS | ||||
| Rede neural | Filme? 22 | ✅ | 2022 - NeurIPS | ||||
| Rede neural | Revin_scinet? ? 23 | ✅ | 2022 - ICLR | ||||
| Rede neural | Pyraformer? ? 24 | ✅ | 2022 - ICLR | ||||
| Rede neural | Grop 25 | ✅ | 2022 - ICLR | ||||
| Rede neural | FedFormer? ? 26 | ✅ | 2022 - ICML | ||||
| Rede neural | Autoformer? ? 27 | ✅ | 2021 - NeurIPS | ||||
| Rede neural | CSDI 28 | ✅ | ✅ | 2021 - NeurIPS | |||
| Rede neural | Informante? 29 | ✅ | 2021 - AAAI | ||||
| Rede neural | US-GAN 30 | ✅ | 2021 - AAAI | ||||
| Rede neural | CRLI 31 | ✅ | 2021 - AAAI | ||||
| Probabilístico | BTTF 32 | ✅ | 2021 - TPAMI | ||||
| Rede neural | Stemgnn? ? 33 | ✅ | 2020 - NeurIPS | ||||
| Rede neural | Reformador? 34 | ✅ | 2020 - ICLR | ||||
| Rede neural | GP-VAE 35 | ✅ | 2020 - AISTATS | ||||
| Rede neural | Vader 36 | ✅ | 2019 - GigaSci. | ||||
| Rede neural | M-RNN 37 | ✅ | 2019 - TBME | ||||
| Rede neural | Brits 38 | ✅ | ✅ | 2018 - NeurIPS | |||
| Rede neural | GRU-D 39 | ✅ | ✅ | 2018 - Sci. Rep. | |||
| Rede neural | Tcn? ? 40 | ✅ | 2018 - arXiv | ||||
| Rede neural | Transformador? 41 | ✅ | 2017 - NeurIPS | ||||
| Ingênuo | Lerp 42 | ✅ | |||||
| Ingênuo | Locf/nocb | ✅ | |||||
| Ingênuo | Significar | ✅ | |||||
| Ingênuo | Mediana | ✅ |
? Contribua com seu modelo agora para aumentar seu impacto na pesquisa! Os downloads de Pypots estão aumentando rapidamente ( 300K+ no total e 1k+ diariamente no Pypi até agora ), e seu trabalho será amplamente utilizado e citado pela comunidade. Consulte o guia de contribuição para ver como incluir seu modelo no Pypots.
Na Pypots, as coisas estão relacionadas ao café, com as quais estamos familiarizados. Sim, este é um universo de café! Como você pode ver, há uma cafeteira no logotipo do Pypots. E o que mais? Por favor, continue lendo ;-)
? Os conjuntos de dados de séries temporais são tomados como grãos de café em Pypots, e os conjuntos de dados POTS são grãos de café incompletos com peças ausentes que têm seus próprios significados. Para disponibilizar vários conjuntos de dados de séries temporais públicas prontamente disponíveis para os usuários, os feijões de dados temporais (TSDB) são criados para facilitar o carregamento de conjuntos de dados de séries temporais! Visite o TSDB agora para saber mais sobre essa ferramenta útil? E agora suporta um total de 172 conjuntos de dados de código aberto!
Para simular os grãos de dados do mundo real com a falta, é criada a biblioteca do ecossistema Pygrinder, um kit de ferramentas ajudando a moer seus grãos de café em incompletos. Os padrões ausentes se enquadram em três categorias de acordo com a teoria de Robin 43 : MCAR (faltando completamente aleatoriamente), mar (faltando aleatoriamente) e mNAR (faltando não em aleatoriamente). O PyGrinder suporta todos eles e funcionalidades adicionais relacionadas à falta. Com o PyGrinder, você pode introduzir valores ausentes sintéticos em seus conjuntos de dados com uma única linha de código.
? Para avaliar de maneira justa o desempenho dos algoritmos do Pypots, o Benchmarking Suite Benchpots é criado, que fornece pipelines padrão e unificado de preprocessamento de dados para preparar conjuntos de dados para medir o desempenho de diferentes algoritmos de POTS em várias tarefas.
Agora, o feijão, o moedor e a panela estão prontos, por favor, sente -se no banco e vamos pensar em como preparar uma xícara de café. Tutoriais são necessários! Considerando a futura carga de trabalho, os tutoriais do Pypots são lançados em um único repositório e você pode encontrá -los no Brewpots. Dê uma olhada agora e aprenda a fabricar seus conjuntos de dados POTS!
☕️ Bem -vindo ao universo dos Pypots. Aproveite e divirta -se!
Você pode consultar a instrução de instalação na documentação do Pypots para uma diretriz com mais detalhes.
Os Pypots estão disponíveis no Pypi e no Anaconda. Você pode instalar pypots como abaixo, bem como TSDB, Pygrinder, Benchpots e 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 Além do Brewpots, você também pode encontrar um caderno tutorial de partida rápida e rápida no Google Colab. Se você tiver mais perguntas, consulte a documentação do Pypots docs.pypots.com. Você também pode levantar um problema ou perguntar em nossa comunidade.
Apresentamos um exemplo de uso para imputar valores ausentes nas séries temporais com os Pypots abaixo, você pode clicar nele para visualizar.
# 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 Dica
[Atualizações em junho de 2024] ? O 1º abrangente de referência de Imputação de Imputação de Imputação: Benchmarking Série de benchmarking A imputação da série temporal agora está disponível. O código é de código aberto na repo Awesome_imputação. Com quase 35.000 experimentos, fornecemos um estudo abrangente de benchmarking sobre 28 métodos de imputação, 3 padrões ausentes (pontos, sequências, blocos), várias taxas ausentes e 8 conjuntos de dados do mundo real.
[Atualizações em fevereiro de 2024] ? Nosso artigo de pesquisa de aprendizado profundo para imputação de séries temporais multivariadas: uma pesquisa foi divulgada no ARXIV. Analisamos de forma abrangente a literatura dos métodos de imputação de aprendizado profundo de última geração para séries temporais, fornecemos uma taxonomia para eles e discutimos os desafios e as direções futuras nesse campo.
O artigo que apresenta Pypots está disponível no ARXIV, e uma versão curta é aceita pelo 9º Workshop Internacional Sigkdd sobre Mineração e Aprendizagem com Série Tempo (Milets'23)). Além disso , o Pypots foi incluído como um projeto de ecossistema Pytorch. Estamos buscando publicá -lo em prestigiados locais acadêmicos, por exemplo, JMLR (Track for Machine Learning Open Sound Software). Se você usar Pypots em seu trabalho, cite -o como abaixo e? Estrela este repositório para fazer com que outras pessoas notem esta biblioteca. ?
Existem projetos de pesquisa científica usando Pypots e referenciando em seus trabalhos. Aqui está uma lista incompleta deles.
@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 } ,
}ou
Wenjie du. Pypots: Uma caixa de ferramentas Python para mineração de dados em séries temporais parcialmente observadas. Arxiv, ABS/2305.18811, 2023.
Você é muito bem -vindo para contribuir com este projeto emocionante!
Ao cometer seu código, você
template em cada pacote de tarefas (por exemplo, Pypots/Imputação/modelo) para iniciar rapidamente;Você também pode contribuir para os Pypots simplesmente olhando? Este repositório para ajudar mais pessoas a perceber. Sua estrela é seu reconhecimento aos Pypots, e isso importa!
? Confira uma lista completa das afiliações de nossos usuários no site do Pypots aqui!
Nós nos preocupamos com o feedback de nossos usuários, por isso estamos construindo a comunidade Pypots em
Se você tiver alguma sugestão ou deseja contribuir com idéias ou compartilhar documentos relacionados à série temporal, junte-se a nós e conte. A comunidade Pypots é aberta, transparente e certamente amigável. Vamos trabalhar juntos para construir e melhorar os Pypots!
Du, W., Cote, D., & Liu, Y. (2023). SAITS: Imputação baseada em auto-atuação para séries temporais. Sistemas especializados com aplicações . ↩ ↩ 2
O Projeto Gungnir, o 1º LLM mundial para modelagem de várias empresas de séries temporais, o encontrará em breve. Valores ausentes e comprimentos variáveis em seus conjuntos de dados? Difícil de executar aprendizado multitarefa com sua série temporal? Não é mais problemas. Abriremos o pedido de teste beta público recentemente ;-) Siga-nos e fique atento! Série temporal.ai ↩
Zhan, T., He, Y., Deng, Y., Li, Z., Du, W., & Wen, Q. (2024). Rede de fusão de evidências de tempo: visão de várias fontes na previsão de séries temporais de longo prazo. Arxiv 2024 . ↩
Xu, Z., Zeng, A., & Xu, Q. (2024). Fits: Modelando séries temporais com parâmetros 10K. ICLR 2024 . ↩
Wang, S., Wu, H., Shi, X., Hu, T., Luo, H., Ma, L., ... & Zhou, J. (2024). Timemixer: Mixagem em várias escalas decompostas para previsão de séries temporais. ICLR 2024 . ↩
Liu, Y., Hu, T., Zhang, H., Wu, H., Wang, S., Ma, L., & Long, M. (2024). ITRANSFORMER: Os transformadores invertidos são eficazes para a previsão de séries temporais. ICLR 2024 . ↩
Luo, D. & Wang X. (2024). ModernTCN: Uma estrutura moderna de convolução pura para análise geral de séries temporais. ICLR 2024 . ↩
Nie, T., Qin, G., Mei, Y., & Sun, J. (2024). ImputaFormer: Transformadores induzidos por baixa classificação para imputação espaço-temporal generalizável. KDD 2024 . ↩
Yi, K., Zhang, Q., Fan, W., Wang, S., Wang, P., He, H., An, N., Lian, D., Cao, L., & Niu, Z. (2023). Os MLPs no domínio da frequência são alunos mais eficazes na previsão de séries temporais. Neurips 2023 . ↩
Liu, Y., Li, C., Wang, J., & Long, M. (2023). Koopa: Aprendendo dinâmica não estacionária de séries temporais com preditores de Koopman. Neurips 2023 . ↩
Zhang, Y. & Yan, J. (2023). Formulador: transformador utilizando dependência de dimensões cruzadas para previsão de séries temporais multivariadas. ICLR 2023 . ↩
Wu, H., Hu, T., Liu, Y., Zhou, H., Wang, J., & Long, M. (2023). TimesNet: Modelagem temporal de 2D-variação para análise geral de séries temporais. ICLR 2023 ↩
Nie, Y., Nguyen, NH, Sinthong, P., & Kalagnanam, J. (2023). Uma série temporal vale 64 palavras: previsão de longo prazo com transformadores. ICLR 2023 ↩
Woo, G., Liu, C., Sahoo, D., Kumar, A., & Hoi, S. (2023). ETSFORMER: Transformadores de suavização exponencial para previsão de séries temporais. ICLR 2023 ↩
Wang, H., Peng, J., Huang, F., Wang, J., Chen, J., & Xiao, Y. (2023). MICN: Modelagem de contexto local e global em várias escalas para previsão de séries de longo prazo. ICLR 2023 . ↩
Zeng, A., Chen, M., Zhang, L., & Xu, Q. (2023). Os transformadores são eficazes para a previsão de séries temporais?. AAAI 2023 ↩
Das, A., Kong, W., Leach, A., Mathur, S., Sen, R., & Yu, R. (2023). Previsão de longo prazo com maré: codificador denso de séries temporais. TMLR 2023 . ↩
Qian, L., Ibrahim, Z., Ellis, Hl, Zhang, A., Zhang, Y., Wang, T., & Dobson, R. (2023). O conhecimento aprimorou a imputação condicional para as séries temporais de assistência médica. ARXIV 2023 . ↩
Lin, S., Lin, W., Wu, W., Zhao, F., Mo, R. e Zhang, H. (2023). SEGRNN: Rede neural recorrente de segmento para previsão de séries temporais de longo prazo. ARXIV 2023 . ↩
Liu, M., Zeng, A., Chen, M., Xu, Z., Lai, Q., Ma, L., & Xu, Q. (2022). SCINET: Modelagem e previsão de séries temporais com convolução e interação de amostras. Neurips 2022 . ↩
Liu, Y., Wu, H., Wang, J., & Long, M. (2022). Transformadores não estacionários: explorando a estacionariedade na previsão de séries temporais. Neurips 2022 . ↩
Zhou, T., Ma, Z., Wen, Q., Sun, L., Yao, T., Yin, W., & Jin, R. (2022). FILME: Modelo de memória Legendre aprimorado de frequência para previsão de séries temporais de longo prazo. Neurips 2022 . ↩
Kim, T., Kim, J., Tae, Y., Park, C., Choi, JH, & Choo, J. (2022). Normalização da instância reversível para previsão precisa das séries temporais contra a mudança de distribuição. ICLR 2022 . ↩
Liu, S., Yu, H., Liao, C., Li, J., Lin, W., Liu, Ax, & Dustdar, S. (2022). Pyraformer: Atenção piramidal de baixa complexidade para modelagem e previsão de séries temporais de longo alcance. ICLR 2022 . ↩
Zhang, X., Zeman, M., Tsiligkaridis, T., & Zitnik, M. (2022). Rede guiada por gráficos para séries temporais multivariadas de amostragem irregularmente. ICLR 2022 . ↩
Zhou, T., Ma, Z., Wen, Q., Wang, X., Sun, L., & Jin, R. (2022). FedFormer: Transformador decomposto aprimorado de frequência para previsão de séries de longo prazo. ICML 2022 . ↩
Wu, H., Xu, J., Wang, J., & Long, M. (2021). Autoformador: Transformadores de decomposição com correlação automática para previsão de séries de longo prazo. Neurips 2021 . ↩
Tashiro, Y., Song, J., Song, Y., & Ermon, S. (2021). CSDI: modelos de difusão baseados em pontuação condicional para imputação probatória da série temporal probabilística. Neurips 2021 . ↩
Zhou, H., Zhang, S., Peng, J., Zhang, S., Li, J., Xiong, H., & Zhang, W. (2021). Informador: além do transformador eficiente para previsão de séries temporais de sequência longa. AAAI 2021 . ↩
Miao, X., Wu, Y., Wang, J., Gao, Y., Mao, X., & Yin, J. (2021). Aprendizagem semi-supervisionada generativa para imputação de séries temporais multivariadas. AAAI 2021 . ↩
Ma, Q., Chen, C., Li, S., & Cottrell, GW (2021). Aprendendo representações para agrupamentos de séries temporais incompletas. AAAI 2021 . ↩
Chen, X. & Sun, L. (2021). Fatoração temporal bayesiana para previsão de séries temporais multidimensionais. IEEE Transações sobre análise de padrões e inteligência de máquina . ↩
Cao, D., Wang, Y., Duan, J., Zhang, C., Zhu, X., Huang, C., Tong, Y., Xu, B., Bai, J., Tong, J., & Zhang, Q. (2020). Rede neural de gráfico temporal espectral para previsão de séries temporais multivariadas. Neurips 2020 . ↩
Kitaev, N., Kaiser, ł., & Levskaya, A. (2020). Reformador: O transformador eficiente. ICLR 2020 . ↩
Fortuin, V., Baranchuk, D., Raetsch, G. & Mandt, S. (2020). GP-VAE: Imputação de séries temporais de probabilística profunda. Aistats 2020 . ↩
Jong, JD, Emon, MA, Wu, P., Karki, R., Sood, M., Godard, P., Ahmad, A., Vroton, Ha, Hofmann-Apitius, M., & Fröhlich, H. (2019). Aprendizagem profunda para agrupamentos de trajetórias de pacientes clínicos multivariados com valores ausentes. Gigasciência . ↩
Yoon, J., Zame, Wr, e van der Schaar, M. (2019). Estimando dados ausentes em fluxos de dados temporais usando redes neurais recorrentes multidirecionais. Transações IEEE em engenharia biomédica . ↩
Cao, W., Wang, D., Li, J., Zhou, H., Li, L., & Li, Y. (2018). BRITES: Imputação recorrente bidirecional para séries temporais. Neurips 2018 . ↩
Che, Z., Purushotham, S., Cho, K., Sontag, Da, & Liu, Y. (2018). Redes neurais recorrentes para séries temporais multivariadas com valores ausentes. Relatórios científicos . ↩
Bai, S., Kolter, JZ, & Koltun, V. (2018). Uma avaliação empírica de redes convolucionais e recorrentes genéricas para modelagem de sequência. ARXIV 2018 . ↩
Vaswani, A., Orquete, NM, Parmar, N., Uszkoreit, J., Jones, L., Gomez, An, Kaiser, L., & Polosukhin, I. (2017). Atenção é tudo o que você precisa. Neurips 2017 . ↩
Wikipedia: interpolação linear ↩
Rubin, DB (1976). Inferência e dados ausentes. Biometrika . ↩