Classificar séries temporais multivariadas

9

Eu tenho um conjunto de dados composto por séries temporais (8 pontos) com cerca de 40 dimensões (portanto, cada série temporal é 8 por 40). A saída correspondente (os possíveis resultados para as categorias) é igual a 0 ou 1.

Qual seria a melhor abordagem para projetar um classificador para séries temporais com várias dimensões?

Minha estratégia inicial era extrair recursos dessas séries temporais: média, padrão, variação máxima para cada dimensão. Obtive um conjunto de dados usado para treinar um RandomTreeForest. Consciente da ingenuidade total disso, e depois de obter maus resultados, agora estou procurando um modelo mais aprimorado.

Meus leads são os seguintes: classifique as séries para cada dimensão (usando o algoritmo KNN e o DWT), reduza a dimensionalidade com o PCA e use um classificador final nas categorias de multidimensões. Sendo relativamente novo no ML, não sei se estou totalmente errado.

AugBar
fonte
O que você está fazendo é uma abordagem muito boa. Quantas amostras você tem no seu conjunto de dados?
Kasra Manshaei
I têm cerca de 500 000 séries de tempo (recordando que cada série de tempo é de 8 * 40 timestamp dimensões)
AugBar
Você já tentou usar os 320 recursos brutos? 320 recursos não é muito para 500.000 amostras
Jan van der Vegt
@ Jan van der Vegt: Tentei esse método usando uma rede neural, mas os resultados não foram tão convincentes - usei os dados brutos sem pré-processamento. Quais operações devo aplicar antecipadamente em meus recursos de 320 recursos para alimentar o classificador?
AugBar
11
No caso de uma rede neural, normalizar sua entrada é importante, dependendo do alcance de seus recursos que possa ser importante. Mas eu só iria alimentar os recursos brutos em um RF e ver o quão bem que as obras, requer menos ajuste para ver se você pode obter algo fora dele facilmente
Jan van der Vegt

Respostas:

5

Você está no caminho certo. Veja o cálculo de mais alguns recursos, no domínio do tempo e da frequência. Contanto que o número de amostras >> número de recursos, é provável que você não se ajuste demais. Existe alguma literatura sobre um problema semelhante? Nesse caso, isso sempre fornece um ótimo ponto de partida.

Experimente um classificador de árvore aprimorado, como xgboost ou LightGBM. Eles tendem a ser mais fáceis de ajustar os hiperparâmetros e fornecer bons resultados com parâmetros padrão. Os classificadores de Floresta Aleatória e de árvore aprimorada podem retornar a importância do recurso, para que você possa ver quais recursos são relevantes para o problema. Você também pode tentar remover recursos para verificar qualquer covariância.

Mais importante ainda, se os resultados forem inesperadamente ruins, verifique se o problema está definido corretamente. Verifique manualmente seus resultados para garantir que não haja erros no seu pipeline.

mpotma
fonte
2

Você pode adicionar mais recursos ao seu conjunto de dados como abaixo.

  1. Você pode tentar o pacote nolds se seus dados forem de um processo altamente não linear.

  2. max, min, mean, skew, curtose e, se possível, algumas estatísticas de rolagem.

Estou trabalhando em algo semelhante e fiz uma pergunta relacionada .

Anurag Upadhyaya
fonte
1

Concordo com Jan van der Vegt, a padronização (por exemplo, [-1, 1]) ou a normalização N (0, 1) combinada com a função de ativação podem ser muito importantes nas redes neurais. Eu verificaria a dissertação de Pichaid Varoonchotikul: “Previsão de enchentes usando redes neurais artificiais” para os meandros das RNAs. Tem advertências muito interessantes. Enfim, estou acostumado a tentar primeiro sem, mas quando os resultados são insatisfatórios, estou acostumado a fazer testes com ambos. Não tenho certeza se isso ajudará, mas eu verificaria o pacote R TSclust e os documentos relacionados. Os autores são muito gentis e ajudarão você a encontrar modelos específicos para isso. Eles são especialistas em análises de séries temporais! Boa sorte!

Rafa M. Mas
fonte