Recursos para classificação de séries temporais


43

Considero o problema da classificação (multiclasse) com base em séries temporais de comprimento variável , ou seja, para encontrar uma função através de uma representação global da série temporal por um conjunto de recursos selecionados de tamanho fixo independente de , e use métodos de classificação padrão neste conjunto de recursos. Eu estou não interessados em previsão, ou seja, preverf ( X T ) = y [ 1 .. K ]Tv i D T ϕ ( X T ) = v 1 , , v DR ,

f(XT)=y[1..K]for XT=(x1,,xT)with xtRd ,
viDT
ϕ(XT)=v1,,vDR ,
xT+1. Por exemplo, podemos analisar a maneira como uma pessoa caminha para prever o sexo da pessoa.

Quais são os recursos padrão que posso levar em consideração? Por exemplo, podemos obviamente usar a média e a variação da série (ou momentos de ordem superior) e também olhar para o domínio da frequência, como a energia contida em algum intervalo da Transformada Discreta de Fourier da série (ou Discreta Wavelet Transform ).

Respostas:


45

Recursos estatísticos simples

  • Significa em cada uma das dimensõesd
  • Desvios padrão das dimensõesd
  • Assimetria , curtose e de ordem superior dos momentos dimensõesd
  • Valores máximos e mínimos

Recursos relacionados à análise de séries temporais

Recursos relacionados ao domínio de frequência

Veja Morchen03 para um estudo dos recursos de preservação de energia em DFT e DWT

  • as frequências de picos de amplitude nos DFTs para os Destendenciada dimensõesdk d
  • k -quantiles destes DFTs

11
Emile, essa pergunta é semelhante à que acabei de fazer ( stats.stackexchange.com/questions/51475/… ). Você seria capaz de publicar qualquer código R para os recursos DFT?
22133 B_Miner

Existe algum método baseado em shapelets para séries temporais de comprimento variável?
Simone

8

Emile, acho que os recursos listados em sua resposta são bons pontos de partida, mas como sempre, acho que alguma experiência em domínio (ou pelo menos um bom pensamento longo) sobre o seu problema é igualmente importante.

Você pode considerar incluir recursos calculados a partir das derivadas (ou integrais) do seu sinal. Por exemplo, eu apostaria que a aceleração / desaceleração rápida é um bom indicador de direção propensa a acidentes. Obviamente, essas informações ainda estão presentes no sinal de posição, mas não são tão explícitas.

Você também pode considerar substituir os coeficientes de Fourier por uma representação de pacote de wavelet ou wavelet. A principal vantagem das wavelets é que elas permitem localizar um recurso em frequência e tempo, enquanto os coeficientes tradicionais de Fourier são restritos apenas ao tempo. Isso pode ser particularmente útil se os dados contiverem componentes que ativam / desativam irregularmente ou possuem pulsos de ondas quadradas que podem ser problemáticos para os métodos de Fourier.


6

Como as outras respostas sugeriram, há um grande número de características de séries temporais que podem ser usadas como recursos em potencial. Existem recursos simples, como os recursos médios relacionados às séries temporais, como os coeficientes de um modelo de RA ou recursos altamente sofisticados, como a estatística de teste do teste de hipótese aumentada de dickey maior.

Visão geral abrangente sobre os possíveis recursos de séries temporais

O pacote python tsfresh automatiza a extração desses recursos. Sua documentação descreve os diferentes recursos calculados. Você pode encontrar a página com os recursos calculados aqui .

Isenção de responsabilidade: Eu sou um dos autores do tsfresh.


5

Eu sugiro que você, em vez de usar abordagens clássicas para extrair recursos de engenharia manual, utilize codificadores automáticos . Os codificadores automáticos desempenham um papel importante na extração de recursos da arquitetura de aprendizado profundo.

O autoencoder tenta aprender uma função . Em outras palavras, ele está tentando aprender uma aproximação com a função de identidade, de forma a semelhante a .X T X Tf(XT)XTX^TXT

A função de identidade parece uma função particularmente trivial para tentar aprender; mas colocando restrições na rede, como limitando o número de unidades ocultas, podemos descobrir uma estrutura interessante sobre os dados.

Extrator de recursos

Desta forma, o seu desejado será equivalente aos valores da camada middlemost saída em um autoencoder profunda, se você limitar o número de unidades escondidas no middlemost para .ϕ(XT)=v1,,vDRD

Além disso, você pode usar vários tipos de autoencoder para encontrar a melhor solução para o seu problema.


4

O artigo vinculado será um pouco esclarecedor, pois está interessado em mais ou menos a mesma questão em outro contexto.

Resumo em papel (no Internet Archive)

PDF em papel


1

Dependendo da duração da sua série temporal, a abordagem usual é colocar os dados em segmentos, por exemplo, 10 segundos.

No entanto, muitas vezes antes de dividir a série temporal em segmentos, é necessário executar algum pré-processamento, como filtragem e rejeição de artefato. Você pode calcular uma variedade de recursos, como os baseados na frequência (por exemplo, faça uma FFT para cada época), tempo (por exemplo, média, variação etc. das séries temporais naquela época) ou morfologia (por exemplo, a forma do sinal / séries temporais em cada época).

Geralmente, os recursos usados ​​para classificar segmentos (épocas) de uma série temporal / sinal são específicos do domínio, mas a análise Wavelet / Fourier são simplesmente ferramentas para permitir que você examine seu sinal nos domínios de frequência / tempo-frequência, em vez de serem características em si.

Em um problema de classificação, cada época terá um rótulo de classe, por exemplo, 'feliz' ou 'triste', você treinará um classificador para distinguir entre 'feliz' e 'triste', usando os 6 recursos calculados para cada época.

No caso de cada série temporal representar um único caso para classificação, você precisa calcular cada recurso em todas as amostras da série temporal. A FFT é relevante aqui apenas se o sinal for invariante no tempo linear (LTI), ou seja, se o sinal puder ser considerado estacionário ao longo de toda a série temporal, se o sinal não for estacionário durante o período de interesse, uma análise de wavelet pode ser mais apropriado. Essa abordagem significará que cada série temporal produzirá um vetor de característica e constituirá um caso para classificação.


Eu sempre senti que quebrar séries temporais, um processo naturalmente contínuo, em períodos discretos (ou épocas), resulta em perda de informações. A menos que haja épocas naturais na série, como alguém escolhe as épocas? É possível encontrar épocas prováveis ​​que se ajustem a qualquer resultado desejado.
Cam.Davidson.Pilon

11
Não tenho certeza de que uma época possa ser adequada para todos os resultados, exceto para qualquer problema prático. Com um sinal não estacionário, você precisa encontrar uma maneira de levar em consideração as variações temporais (se um sinal / série temporal adequadamente descrito analiticamente ou se é invariante no tempo linear) isso não é necessário). O comprimento da época é novamente específico do domínio, mas geralmente é escolhido para ser curto o suficiente para que o sinal fique estacionário no período de tempo (época) de interesse.
BGreene

BGreene, você poderia explicar qual é o benefício de particionar a série em épocas para selecionar os recursos usados ​​na classificação? Eu vejo esse particionamento como um auxiliar para cálculos posteriores (ou seja, FFT), mas não como algo relacionado à seleção de recursos em si. Talvez esteja relacionado à "morfologia" que você mencionou.
Emile

O particionamento em épocas não tem nada a ver com a seleção de recursos. Se você possui um sinal longo (por exemplo, 10 horas de gravação amostrada a 100Hz), para examinar como o sinal muda ao longo do tempo, é necessário dividi-lo em épocas. Em um problema de classificação, cada época terá um rótulo de classe, por exemplo, 'feliz' ou 'triste', você treinará um classificador para distinguir entre 'feliz' e 'triste', usando os 6 recursos calculados para cada época.
BGreene

Ok :) Definitivamente, não está relacionado à minha pergunta original. Considero o caso em que a classe rotula toda a série. Vou editar minha pergunta para adicionar um exemplo esclarecedor.
Emile
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.