[ad_1]
Na última postagem, começamos a procurar padrões repetidos em uma série temporal, o que chamamos de Motifs.
Para a próxima pergunta, ainda estaremos usando os conjuntos de dados disponíveis em https://github.com/matrix-profile-foundation/mpf-datasets para que você possa tentar isso em casa.
O código original (MATLAB) e os dados estão aqui.
Agora vamos começar:
- Quais são os três dias mais incomuns neste conjunto de dados de três meses?
Agora não sabemos o que procuramos, mas queremos descobrir algo. Não apenas um padrão, mas padrões que se repetem e podem parecer semelhantes ou não.
Primeiro, vamos carregar o tsmp
biblioteca e importar nosso conjunto de dados. Neste exemplo, usaremos o pacote xts
apenas porque os dados importados têm um índice de carimbo de data / hora e fazemos gráficos mais compreensíveis, mas isso não é necessário, pois usaremos basicamente os valores. Usaremos a janela de 01/10/2014 e 15/12/2014 para acompanhar o exemplo original do Laboratório de Keogh:
# install.packages('tsmp')
library(tsmp)
library(xts)
baseurl
E planeje como sempre:
plot(dataset, main = "NYC Taxi anomalies", lwd = 1)
Acima, vemos a carga de táxi entre 2014, 1º de outubro e 15 de dezembro de 2014. Os dados foram coletados a cada meia hora.
Podemos ver que esses dados parecem ter um padrão bem repetido, mas em alguns dias há algumas diferenças. O objetivo aqui é localizar o que não é normal, ou melhor, a discórdia. Discórdia é um termo que define a subsequência de série temporal mais incomum. Discordar tornou-se um dos métodos mais eficazes e competitivos na detecção de anomalias.
# We already know the Matrix Profile Object, so I'll skip talking about it.
mp_obj
## Finished in 1.01 secs
## The code below is just to make this easier to explain to the reader.
mp
Como podemos ver acima, o Perfil de Matriz contém três picos que nos mostram que essas áreas são muito diferentes das outras regiões, portanto são, como dito acima, subseqüências incomuns.
Vamos analisar (ok, já estraguei a resposta na trama). A subsequência mais incomum está localizada perto da data de Ação de Graças. (lembre-se, estamos usando um tamanho de janela de 100, o que significa cerca de 2 dias, então há um ‘atraso’ visível).
A segunda subsequência mais incomum está localizada por volta de 6 de novembro. E o que é isso? É o horário de verão! O relógio atrasando uma hora dá uma aparente duplicação da carga de táxi.
A terceira subsequência mais incomum é por volta de 13 de outubro, o que poderia ser? Dia de Colombo! O Dia de Colombo é ignorado em grande parte da América, mas ainda é um grande negócio em NY, com sua grande comunidade ítalo-americana.
Agora vamos usar a função find_discord
para encontrar esses padrões incomuns. Observe que eu defini n_neighbors
a zero, uma vez que não quero procurar uma possível repetição desses padrões, mas padrões novos e incomuns.
# We already know the Matrix Profile Object, so I'll skip talking about it.
mp_obj %>% find_discord(n_discords = 3, n_neighbors = 0) %T>% plot
## Matrix Profile
## --------------
## Profile size = 3500
## Window size = 100
## Exclusion zone = 200
## Contains 1 set of data with 3599 observations and 1 dimension
##
## Discord
## -------
## Discords found = 3
## Discords indexes = [2686] [1484] [553]
## Discords neighbors = [] [] []
E aqui estão eles. Exatamente onde previmos e na parte inferior do envasamento estão as formas normalizadas desses padrões.
Então, fizemos de novo!
Isso encerra nossa terceira pergunta de cem (esperemos que sim!).
Até a próxima vez.
postagem anterior nesta série
Relacionados
[ad_2]