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.
fonte
Respostas:
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.
fonte
Se você estiver em Python, existem alguns pacotes que podem extrair automaticamente centenas ou milhares de recursos de suas séries temporais, correlacioná-los com seus rótulos, escolher os mais significativos e treinar modelos para você.
https://github.com/blue-yonder/tsfresh
https://github.com/rtavenar/tslearn
fonte
Você pode adicionar mais recursos ao seu conjunto de dados como abaixo.
Você pode tentar o pacote nolds se seus dados forem de um processo altamente não linear.
max, min, mean, skew, curtose e, se possível, algumas estatísticas de rolagem.
Estou trabalhando em algo semelhante e fiz uma pergunta relacionada .
fonte
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!
fonte