Friday 17 November 2017

Detecção De Anomalia Média Móvel


Gostaria de detectar anomalia usando a média móvel exponencial ponderada. Para uma instância do tempo t, eu terei o valor do ponto de dados (DP). A constante EWMA será 0,85 (assumindo). Por exemplo, eu não quero levar uma série de pontos de dados para o cálculo. Em qualquer instância de tempo dizer 10, eu quero saber se o ponto de dados 300 (neste caso) é uma anomalia ou não. Eu também tenho o EMA (9) 150 e EMA (10) 277.5 para o cálculo (se necessário) Existe alguma lógica para calcular isso Obrigado antecipadamente pensei na lógica abaixo, mas não tenho certeza se ele iria trabalhar com certeza DP - Data Point EMA - Exponencial Weighted Moving Average Seria difícil dizer que o DP é ou não é uma anomalia porque você não sabe como desenvolvido seu EMA (t-1) é. Ou seja, se houver muitos pontos de dados que o tornaram, então será um marcador melhor do que se houver apenas um outro ponto de dados. Uma abordagem que você poderia tomar é ter um limite de mudança. Basicamente, se a EMA muda mais do que uma porcentagem que você considera uma anomalia. Isso, no entanto, sofre se seus números são todos muito altos e as diferenças são muito pequenas. O que você realmente precisa é um desvio padrão para detectar anomalias. Você poderia olhar para potencialmente rastreamento que bem e usar isso para determinar melhor se você tem uma anomalia. Se você tiver algum conhecimento dos dados com os quais você estará trabalhando, atualize sua pergunta para obter ajuda mais direcionada. Em resposta aos dados que você adicionou Im que supor que você quer 300 ser uma anomalia (seus outros valores eram 120 e 150). O método que eu sugeri acima funcionará no entanto se o número após 300 é mais normal, digamos 170 que provavelmente também seriam sinalizados como uma anomalia. IMHO o youre do peso que põr sobre valores novos é excessivo. Eu faria o contrário: new .85 old .15 newDP ao invés do que você tem de novo .15 old .85 newDP Se você mudar para o que eu sugiro youll obter resultados justos. Dependendo do que seu objetivo geral é resultados justos pode ser suficiente. Razões pelas quais eu não tenho registro de manter 1.I tem que levar em consideração os valores antigos do início da série de tempo, 2.I don39t quer um modelo baseado em janela. 3. Também eu não quero buscar a série de dados inteiros para cada instância de tempo para o cálculo Eu queria saber se a lógica seguinte iria realmente funcionar, mas não tenho certeza Anomalia é verdadeira se: ABS (DP-EMA (novo)) gt 3 SD Ou) ABS (DP-EMA (novo)) gt 3 EMWSD DP - Ponto de Dados EMA - Média Móvel Ponderada Exponencial ndash Aravind Jul 11 ​​14 at 5: 06Moving Z-Score O modelo Z de Moving pontua anomalias num conjunto de dados sequencial univariado, Muitas vezes uma série de tempo. O Z-score móvel é um modelo muito simples para medir a anomalia de cada ponto em um conjunto de dados seqüencial como uma série temporal. Dado um tamanho de janela. A Z-pontuação em movimento é o número de desvios-padrão cada observação está longe da média, onde a média eo desvio padrão são calculados apenas sobre as observações anteriores. Onde a média móvel eo desvio padrão em movimento são Para as primeiras observações da série, o Z-score em movimento é indefinido porque há arenapost observações suficientes para estimar a média eo desvio padrão. Para a ferramenta GraphLab Create, tomamos o valor absoluto da Z-pontuação em movimento, de modo que a pontuação de anomalia varia de 0 a infinito, com pontuações mais altas indicando um maior grau de anomalia. Dados e contexto A ponte de Fremont em Seattle é um lugar popular para os ciclistas cruzarem as metades do sul e norte da cidade (e acontece estar bem ao lado do escritório de Turi). Um contador de tráfego registra o número de bicicletas que atravessam a ponte a cada hora, e os dados são postados no portal de dados de Seattle. Usaremos o modelo GraphLab Create Moving Z-score para procurar anomalias nestes dados de séries temporais. Os dados podem ser lidos diretamente em um SFrame do URL do portalaposs de dados de Seattle (o arquivo é sobre 800KB) O tráfego de ciclo é contado realmente separada em cada lado da ponte, mas nós combinamos estas contagens em um único total hora. Como última etapa de formatação, convertemos o dataset em um TimeSeries codificando a coluna timestamp como datetime. datetime e definindo essa coluna como o índice. Usando uma janela em movimento, o modelo The Z-score móvel se adapta bem à deriva distribucional, mas não trata bem a sazonalidade de alta freqüência. Em nosso conjunto de dados de tráfego de bicicletas temos sazonalidade por hora, por dia da semana e por estação do ano. Em particular, as contagens são baixas durante a noite, baixa nos fins de semana e baixa no inverno. Usamos duas estratégias para lidar com isso: primeiro, somamos as contagens com o método resample para obter uma contagem diária de tráfego e em segundo lugar, descartamos os dias de fim de semana inteiramente e nos concentramos apenas no tráfego do dia útil. Mais adiante neste capítulo, o arsenal ilustra como os modelos Moving Z-Score podem ser atualizados com novos dados. Para tornar isso mais interessante, deixamos de lado os últimos meses de dados para usar quando chegarmos a esse capítulo. Nosso tráfego de dados finais tem 693 contagens diárias de tráfego de bicicletas, de 3 de outubro de 2012 a 29 de maio de 2015. Os dados são relativamente ruidosos a olho nu, mas claramente tem alguma sazonalidade de longo prazo. Movimentação Básica Z-Pontuação Utilização O modelo Moving Z-score leva um SFrame ou TimeSeries como entrada (tráfego neste caso), o nome da coluna que contém a série a modelar eo número de observações na janela em movimento. Para esta análise nossa característica é a coluna do quotcountquot e nós usamos uma janela 15 dias, ou três work-weeks. A saída primária do modelo Moving Z-score é o campo de pontuação. Este objeto TimeSeries contém as séries originais (contagem), índice de linha original (timestamp), média móvel, pontuação de anomalia e o momento em que o modelo foi criado (para atualização do modelo - veja abaixo). Para o modelo Moving Z-score, a pontuação de anomalia é o valor absoluto do Z-score em movimento. Como com todos os modelos de detecção de anomalias de GraphLab Create, esta pontuação varia de 0 a infinito, com pontuações mais altas indicando um maior grau de quotanomalousness. Se o conjunto de dados de entrada é um SFrame em vez de um TimeSeries. O campo de pontuação também é um SFrame. Note que as primeiras 15 fileiras das pontuações donapost têm uma média móvel ou Z-score. Isso ocorre porque a janela em movimento não tem dados suficientes para essas observações. O parâmetro minobservations indica o número mínimo de observações necessárias para calcular a pontuação da anomalia por padrão é o mesmo que o tamanho da janela. Mas configurá-lo para ser menor reduziria o número de pontuações de anomalias em falta, tanto no início do conjunto de dados como após valores em falta nos dados de entrada. Tipicamente o objetivo final é fazer uma decisão binária final se cada ponto é quottypicalquot ou quotanomalousquot. Uma boa maneira de fazer isso é analisar a distribuição aproximada das pontuações de anomalia com a ferramenta SArray. sketchsummary e, em seguida, obter um limite para a pontuação da anomalia com o método de quantile de summaryaposs de esboço. Aqui declaramos que os dois maiores por cento dos dados são anomalias. Itaposs claro que algumas das anomalias estão associadas com feriados, mas outros donapost têm uma explicação óbvia. Itaposs certamente interessante que todos os dias anômalos têm contagens mais baixas do que a média móvel para aqueles dias. Para este tipo de dados univariados, itaposs muito útil traçar as anomalias na série original. Atualizando o modelo com novos dados O Z-score Moving é único entre os modelos GraphLab Create no que um novo modelo pode ser criado por atualizar um modelo existente. Isso permite que o novo modelo use o fim da série modelaposs existente para calcular os Z-scores em movimento para os primeiros pontos nos novos dados (evitando o aposNoneaposs no início de nossa primeira saída modelaposs). Para esta análise, o uso de 169 observações desde 1 de junho de 2015 como dados quotnewot. A criação de um novo modelo com o método de atualização não altera o modelo original. O modelo novo olha e cheira apenas como nosso modelo original, mas há duas diferenças pequenas nos resultados. Primeiro, não há mais valores faltantes nas pontuações TimeSeries. Porque a janela móvel é preenchida a partir dos dados do modelo anterior. A segunda diferença é que o modelupdatetime não é mais idêntico para cada observação. A nova saída modelaposs contém as últimas observações do windowsize para que possamos ver como as novas Z-scores são computadas, mas estas são marcadas com o tempo original de criação do modelo. Podemos usar esse tempo para separar as pontuações, para que possamos traçar apenas as novas anomalias de dataaposs. Leitura adicional Jake Vanderplas escreveu uma análise aprofundada dos dados de tráfego de bicicleta de ponte de Fremont. O objetivo de sua análise não é a detecção de anomalias, mas é um excelente read. graphlab. toolkits. anomalydetection. movingzscore. create graphlab. toolkits. anomalydetection. movingzscore. Create (dataset, windowsize, featureNone, minobservationsNone, verboseTrue) Crie um modelo MovingZScoreModel. Este modelo ajusta uma média móvel a uma série temporal univariada e identifica pontos que estão longe da curva ajustada. O MovingZScoreModel funciona com entradas TimeSeries ou SFrame. Uma taxa de amostragem uniforme é assumida ea janela de dados deve ser definida em termos de número de observações. Este modelo difere de outros modelos de GraphLab Create em que pode ser criado a partir de um MovingZSCoreModel existente. Para criar um novo modelo desta forma, use o método de atualização do modelo existente 8217s. O modelo criado por esta função contém uma pontuação de tabela que contém as pontuações de anomalias calculadas. O tipo de pontuação corresponde ao tipo do conjunto de dados de entrada. E a tabela contém 5 colunas: linha id / time. ID da linha correspondente no conjunto de dados de entrada. Se dataset é um SFrame, este é os números de linha dos dados de entrada se dataset é um TimeSeries, é o índice da série temporal. Pontuação da anomalia. Valor absoluto do Z-score em movimento. Uma pontuação de 0 indica que o valor é idêntico à média móvel. Quanto maior a pontuação, mais provável é que um ponto seja uma anomalia. valor . Dados de entrada. O nome dessa coluna corresponde ao recurso de entrada. Média móvel. Média móvel de cada ponto 8217s que precede valores de windowsize. Tempo de atualização do modelo. Tempo em que o modelo foi atualizado. Isso é particularmente útil se o windowsize for maior que o número de linhas nos conjuntos de dados de entrada, porque a tabela de pontuações tem resultados de várias atualizações. Conjunto de dados. SFrame ou TimeSeries Dados de entrada. A coluna nomeada pelo parâmetro 8216feature8217 será extraída para modelagem. Comprimento da janela de tempo a ser usada para definir o valor de z-score móvel, em termos de número de observações. característica . Str, optional Nome da coluna a ser modelada. Quaisquer dados fornecidos ao modelo com as funções criar ou atualizar devem ter uma coluna com esse nome. O nome do recurso não é necessário se conjunto de dados é um SFrame com uma única coluna ou um TimeSeries com uma coluna de valor único que pode ser determinado automaticamente neste caso. Minobservações. Int, opcional Número mínimo de observações não faltantes na janela em movimento necessária para calcular o Z-score em movimento. Se não especificado, toda a janela em movimento que precede uma observação não deve conter valores faltantes para que a observação obtenha uma pontuação de anomalia. Verboso Bool, opcional Se Verdadeiro, atualizações de progresso de impressão e detalhes de modelo. Anotações de Detoct com Decomposição Mediana em Movimento A decomposição de séries temporais dividiu uma série de tempo em uma série sazonal, uma tendência e uma série de tempo residual aleatória. A tendência ea série temporal aleatória podem ser usadas para detectar anomalias. Mas detectar anomalias em uma série temporal já anómala não é fácil. TLDR Trabalhando em uma série de tempo anômalo: Detecção de anomalias com decomposição média móvel doesn8217t trabalho Detecção de anomalias com movimentação mediana de trabalhos de decomposição O problema com a média móvel Na decomposição de séries temporais em R. aprendemos que o algoritmo está usando uma média móvel para extrair as tendências Das séries temporais. Isso é perfeitamente bem em uma série de tempo sem anomalias. Mas na presença de outliers, a média móvel é gravemente afectada à medida que a tendência incorpora as anomalias. Primeiro, vamos detectar anomalia usando a decomposição com média móvel. Como ele não funciona bem, vamos detectar anomalias usando a decomposição com a mediana móvel para obter melhores resultados. Sobre os dados: webTraffic. csv relata o número de exibição de página por dias durante um período de 103 semanas (quase 2 anos). Para torná-lo interessante, adicionamos algumas (extra) anomalias a ele. Olhando para a série de tempo, vemos claramente uma sazonalidade de 7 dias como há menos tráfego nos fins de semana. Para decompor uma série temporal sazonal, o período de sazonalidade é necessário. No nosso exemplo, sabemos que a sazonalidade será de 7 dias. Se for desconhecido, é possível determinar a sazonalidade de uma série temporal. Por último, mas não menos importante, precisamos saber se a série temporal é aditiva ou multiplicativa. Nosso tráfego na web é multiplicativo. Para resumir sobre nosso tráfego da correia fotorreceptora: Sazonalidade de 7 dias (sobre 103 semanas) séries de tempo multiplicative download WebTraffic. csv dados lt - lido. Csv (webTraffic. csv, sep, cabeçalho T) dias como. (Run) (dias) Movimento de decomposição média (mau resultado) 1 8211 Decomposição como A série de tempo é anômalo durante a decomposição as tendências ficar completamente errado. Média de Movimentação - MA Como um exemplo de SMA, considere um título com os seguintes preços de fechamento em 15 dias: Semana 1 (5 dias) 20, 22, 24, 25 , 23 Semana 2 (5 dias) 26, 28, 26, 29, 27 Semana 3 (5 dias) 28, 30, 27, 29, 28 Uma MA de 10 dias seria a média dos preços de fechamento para os primeiros 10 dias, Primeiro ponto de dados. O ponto de dados seguinte iria cair o preço mais antigo, adicionar o preço no dia 11 e tomar a média, e assim por diante, como mostrado abaixo. Conforme mencionado anteriormente, MAs atraso ação preço atual, porque eles são baseados em preços passados ​​quanto maior for o período de tempo para o MA, maior o atraso. Assim, um MA de 200 dias terá um grau muito maior de atraso do que um MA de 20 dias porque contém preços nos últimos 200 dias. A duração da MA a ser utilizada depende dos objetivos de negociação, com MAs mais curtos usados ​​para negociação de curto prazo e MAs de longo prazo mais adequados para investidores de longo prazo. O MA de 200 dias é amplamente seguido por investidores e comerciantes, com quebras acima e abaixo desta média móvel considerada como sinais comerciais importantes. MAs também transmitir sinais comerciais importantes por conta própria, ou quando duas médias se cruzam. Um aumento MA indica que a segurança está em uma tendência de alta. Enquanto um declínio MA indica que ele está em uma tendência de baixa. Da mesma forma, o impulso ascendente é confirmado com um crossover de alta. Que ocorre quando um MA de curto prazo cruza acima de um MA de longo prazo. Momento descendente é confirmado com um crossover de baixa, que ocorre quando um MA de curto prazo cruza abaixo de um MA de longo prazo.

No comments:

Post a Comment