Clustering dinâmico de distorção do tempo


40

Qual seria a abordagem para usar o Dynamic Time Warping (DTW) para executar o agrupamento de séries temporais?

Eu li sobre o DTW como uma maneira de encontrar semelhança entre duas séries temporais, enquanto elas poderiam ser alteradas no tempo. Posso usar esse método como uma medida de similaridade para algoritmos de cluster como k-means?


2
sim, você pode usar a medida de similaridade como uma entrada para k significa agrupar e, em seguida, determinar grupos em seus dados.
Forecaster

Obrigado pela sua resposta, senhor. Eu estou supondo que, para cada iteração, eu precisaria formar a matriz de distância para cada casal (centróide, ponto de cluster) e recalcular os centróides da maneira padrão, como uma média de todas as séries que pertencem ao cluster?
Marko

1
Aleksandr Blekh na resposta abaixo tem um blog que fornece um exemplo detalhado sobre como fazer isso em R.
meteorologista

2
O @forecaster não usa k-means com o DTW. k-significa minimiza a variação, não as distâncias. A variação é quadrada euclidiana, mas isso não significa que os meios k poderiam otimizar outras distâncias. A média não, e no DTW deve ser bastante fácil construir contra-exemplos, como uma onda senoidal deslocada por : ambos são muito semelhantes pelo DTW, mas sua média é constante zero - muito diferente de ambos. π
Anony-Mousse

1
K-means não é um algoritmo apropriado para agrupamento de séries temporais. Modelos markov ocultos para dados discretos e longitudinais são adequados. Atualmente, existem vários livros sobre esse assunto, além de contribuições importantes de Oded Netzer (Columbia) e Steve Scott (Google). Outra abordagem seria o método teórico da informação desenvolvido por Andreas Brandmaier em Max Planck, denominado agrupamento de distribuição de permutação. Ele também escreveu um módulo R. A comparação de soluções de cluster é uma questão diferente. O artigo de Marina Meila, Comparing Clusterings, U of Washington Statistics Tech Report 418 é o melhor.
Mike Hunter

Respostas:


33

Você não usar k-médias para timeseries.

DTW não é minimizado pela média; O k-means pode não convergir e, mesmo se convergir, não produzirá um resultado muito bom. A média é um estimador de mínimos quadrados nas coordenadas. Minimiza a variação, não distâncias arbitrárias, e o k-means é projetado para minimizar a variação, não distâncias arbitrárias .

Suponha que você tenha duas séries temporais. Duas ondas senoidais, da mesma frequência, e um período de amostragem bastante longo; mas eles são deslocados por . Como o DTW distorce o tempo, ele pode alinhá-los para que correspondam perfeitamente, exceto o começo e o fim. A DTW atribuirá uma distância bastante pequena a essas duas séries. No entanto, se você calcular a média das duas séries, será um 0 simples - elas serão canceladas. A média não faz distorção dinâmica do tempo e perde todo o valor que a DTW recebeu. Nesses dados, o k-means pode não convergir e os resultados serão sem sentido. Os meios K realmente devem ser usados ​​apenas com variância (= euclidiana ao quadrado) ou em alguns casos equivalentes (como cosseno, em dados normalizados de L2, onde a semelhança de cosseno éπo mesmo que distância euclidiana ao quadrado)2-

Em vez disso, calcule uma matriz de distância usando o DTW e execute o cluster hierárquico, como o link único. Em contraste com o k-mean, a série pode até ter um comprimento diferente.


4
Bem, é claro que existe o PAM (K-medoids) que funciona com distâncias arbitrárias. Um dos muitos algoritmos que suportam distâncias arbitrárias - k-means não. Outras opções são DBSCAN, óptica, CLARANS, HAC, ...
anony-Mousse

1
Provavelmente. Como o k-medoids usa o DTW-medoid para encontrar o centro do cluster, não a média de L2. Não conheço nenhum agrupamento bem-sucedido de séries temporais no mundo real. Acredito ter visto papéis, mas nenhum que realmente tenha usado o resultado. Somente prova de conceitos.
Anony-Mousse

1
@Aleksandr Blekh deu isso como um de seus exemplos nbviewer.ipython.org/github/alexminnaar/… Qual é a sua opinião sobre isso?
Marko

1
Problemas de brinquedo. Inútil no mundo real. Os dados reais apresentam bastante ruído, o que prejudicará muito mais do que curvas senoidais suaves e os padrões apresentados nesses dados.
Anony-Mousse

1
Eu acho que o cluster hierárquico é a melhor escolha. Você não poderá processar um grande número de séries de qualquer maneira.
Anony-Mousse

49

Sim, você pode usar a abordagem DTW para classificação e agrupamento de séries temporais . Compilei os seguintes recursos , focados nesse mesmo tópico (recentemente respondi a uma pergunta semelhante, mas não neste site, por isso estou copiando o conteúdo aqui para conveniência de todos):


3
+1 excelente coleção de artigos e blogs. Muito boas referências.
meteorologista

@ forecaster: Obrigado pelas palavras positivas e amáveis! Que bom que você gostou da coleção. É muito triste que, atualmente, não tenha tempo para aprender previsão e muitas outras áreas de estatística e ciência de dados com mais seriedade, mas aproveito todas as oportunidades para aprender algo novo.
Aleksandr Blekh

1
@AleksandrBlekh Muito obrigado por sua resposta, tenho discutido com Anony-Mousse sobre essa abordagem, já que estou particularmente interessado na DTW como uma medida de similaridade para K-means, para que eu possa obter centróides como saída. Qual a sua opinião e experiência com isso? Como você pode ver, o Anony-Mousse apresentou alguns argumentos de que os resultados podem não ser tão bons neste caso ... Talvez alguma experiência pessoal em uma questão prática?
Marko

1
Ok, obrigado novamente. Você tem +1 de mim e ele recebe a resposta aceita, pois minha pergunta é mais orientada para k-means e DTW.
Marko

1
@pera: O prazer é meu. Obrigado por votar. Compreenda e concorde totalmente com a aceitação, sem nenhum problema.
Aleksandr Blekh

1

Um método recente DTW Barycenter Averaging (DBA) foi proposto por Petitjean et al. para séries temporais médias. Em outro artigo, eles provaram empiricamente e teoricamente como ele pode ser usado para agrupar séries temporais com k-médias. Uma implementação é fornecida no GitHub pelos autores ( link para código ).

1 F. Petitjean, G. Forestier, GI Webb, AE Nicholson, Y. Chen e E. Keogh, "A média dinâmica de distorção temporal das séries temporais permite uma classificação mais rápida e precisa", Conferência Internacional IEEE de 2014 sobre mineração de dados, Shenzhen, 2014 .

2 F. Petitjean, P. Gançarski, Resumindo um conjunto de séries temporais calculando a média: Da sequência de Steiner ao compacto alinhamento múltiplo, Ciência da Computação Teórica, Volume 414, Edição 1, 2012


2
forneça referências completas em vez de links. Os links podem morrer
Antoine

1

O Dynamic Time Warp compara os pontos de dados realizados, que podem ou não funcionar. Uma abordagem mais rigorosa é comparar a distribuição das séries temporais por meio de uma métrica chamada distância do telescópio .

O interessante dessa métrica é que o cálculo empírico é feito ajustando uma série de classificadores binários como o SVM.

Para uma breve explicação, veja isso .

Para cluster de séries temporais, foi demonstrado que supera o DTW; veja a Tabela 1 no documento original [1].

[1] Ryabko, D. & Mary, J. (2013). Uma métrica baseada em classificação binária entre distribuições de séries temporais e seu uso em problemas estatísticos e de aprendizado. O Journal of Machine Learning Research, 14 (1), 2837-2856.


2
Uma tentativa do editor observa: "Jérémie Mary (co-autora) tem uma página da web discutindo o algoritmo com uma implementação R.
gung - Reinstate Monica

@gung Wow, excelente! Eu tinha correspondência com o primeiro autor e ele não mencionou isso.
horaceT

Na verdade, estou apenas copiando de alguém que tentou editar isso na sua resposta, @horaceT. Eu não sei muito sobre isso.
gung - Restabelece Monica

0

Sim. Uma abordagem ingênua e potencialmente lenta pode ser,

  1. Crie todas as suas combinações de cluster. k é para contagem de cluster en é para número de séries. O número de itens retornados deve ser n! / k! / (n-k)!. Seriam algo como centros em potencial.
  2. Para cada série, calcule as distâncias via DTW para cada centro em cada grupo de clusters e atribua-o ao mínimo.
  3. Para cada grupo de clusters, calcule a distância total em clusters individuais.
  4. Escolha o mínimo.

Eu usei isso para um pequeno projeto. Aqui está o meu repositório sobre o cluster de séries temporais e minha outra resposta sobre isso.

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.