Friday 15 December 2017

Mudança média elástica pesquisa


Detectando Eventos Geo-Temporais com Agregações de Pipeline Elasticsearch Acima: Uma predição temporal de uma métrica unidimensional em Timelion. Vale a pena notar, esta conversa é muito influenciada pela excelente série de Zach Tongs na implementação de um detector estatístico de anomalias com Elasticsearch. Esse é um excelente lugar para começar quando lê neste tópico. O problema com minha demo antiga eu amo dados de bikeshare. Eu escrevi algumas publicações no último ano, usando dados públicos dos bons amigos no programa Washington DCs Capital Bikeshare. (Aqui e aqui) e se você conversou comigo em um estande de demonstração ou a apresentação de Kibana, você me mostrou mostrar meu painel de jogos de bicicleta em DC e ampliar o 4 de julho para mostrar a anomalia de dados em torno do show de fogos de artifício. Eu adoro essa demo O problema é que exige que alguém já tenha o conhecimento da anomalia de dados. E se a Elasticsearch nos pudesse nos ajudar a encontrar outliers e anomalias nos dados automaticamente. Bem, pode fazer isso e pode até ajudar a localizá-los acontecendo em tempo real. Vejamos se isso pode nos ajudar a detectar outros eventos ao redor da cidade. Os recursos do Elasticsearch Devem usar quatro recursos principais da API de agregações Elasticsearch. Dois tipos de agregações de balde (característica 1) e (recurso 2) Aninhamento de uma agregação dentro de outro (recurso 3) Agregações de pipeline com médias móveis ajustadas por sazonalidade (recurso 4) A primeira parte é capaz de detectar valores abertos nos dados que estão isolados para Certo tempo e aspectos geográficos dos dados. Estes são histogramas básicos e rots geo-grid de ocorrências de eventos. Há chamadas diretas para APIs de agregação Elasticsearchs e diretamente relacionadas a consultas visualizadas em Kibana. 1) Baldes Geo 2) Balcões histograma 3) Baldes aninhados A próxima parte é onde as coisas se divertem. A pesquisa elástica permite aninhar a agregação do balde dentro de outras agregações. Podemos combinar as duas abordagens de balde acima em uma única análise, pedindo a Elasticsearch para balanços de histograma dentro de uma agregação de grade geográfica. O resultado é uma matriz das métricas de eventos ao longo do tempo para cada grade do meu mapa retornada em uma única chamada de descanso. Heres uma imagem do uso do bikeshare ao longo de vários anos para tentar demonstrar o verdadeiro significado dos dados retornados. 4) Médias móveis estacionárias agora para cada balde, podemos usar a próxima característica de poder da Elasticsearch, que é agregações de pipeline. Colin Goodheart-Smithe escreveu uma excelente postagem no blog sobre derivativos de computação com aggs de pipeline, mas o que bem foca em médias móveis. Semelhante ao post do blog Zach Tongs, bem, comptain um fator de surpresa para cada hora de dados em cada grade da área geoespacial de DC. Verifique se o número de passeios de bicicleta que se afasta da área se desvia da tendência geral (média móvel) de quantos passeios esperávamos que se afastassem daquela estação atendendo a tendências gerais levando em consideração o dia da semana e a época do ano. Isso nos ajudará a diferenciar entre o sinal e o ruído, que é um problema comum em todas as análises. Existem muitos tipos de médias móveis possíveis na Elasticsearch, mas o que estamos usando será Holt-Winters. Essa média móvel tripla exponencial leva em consideração o nível atual, a tendência nesse nível, bem como uma sazonalidade em sua computação da média móvel. Como o padrão principal de capital bikeshares é semanal, (a cada 7 dias), podemos pedir uma média móvel do número de passageiros da Bikeshare e saber se um pico é o trajeto normal da bicicleta de segunda-feira pela manhã ou algo mais interessante como um show de fogos de artifício ou um jogo de baseball. Holt-Winters pode até mesmo fazer previsões para o futuro, o que é legal, mas, uma vez que estamos apenas procurando por outliers de dados na faixa de tempo dos dados que nós não precisamos. Holt-Winters exige ajustes de coeficientes para o peso relativo dos três contribuidores para a média inteligente. Eu joguei ao redor e achei que obtive os melhores resultados apenas usando a função de minimização automática que tenta adivinhar bons coeficientes através de um algoritmo de otimização de recozimento simulado. Juntando Heres a consulta final que eu usei para calcular as médias móveis ajustadas ajustadas da Temporária Geo-Temporal regionalizada. O próprio Kibana ainda não tem agregações de pipeline ou faz muito no caminho do Geo-Temporal, então não irá executar esse tipo de consulta diretamente. No entanto, com um script de python rápido, posso executar a consulta personalizada, deslocar os baldes nos dados agregados e reinserir os eventos agregados em roll-up como um tipo de métrica diferente que pode ser visualizado lado a lado com os dados originais. (Código). A linha chave que calcula o fator surpresa: isso significa que, quando a contagem de eventos reais para uma hora de passeios de bicicleta em uma grade no mapa ultrapassa a contagem de média móvel geral que teria sido a predição, estamos supondo que pode haver uma Anomalia de dados. Cada grade do geo-gráfico efetivamente se torna uma única série de tempo métrico com uma predição. Podemos mapear o valor da surpresa separadamente da densidade do evento. Verificando resultados Se ampliámos uma área bem, obtenha uma visão rápida das anomalias de espetáculo do evento de passeio. Para testar a precisão com eventos do mundo real, vou procurar por algo para o qual eu possa ter um histórico de eventos difinentes. Ao ampliar o estádio de beisebol em maio de 2017, vemos o seguinte: houve picos acima da média móvel de tendências nos 4º, 5º, 6º, 8º, 9º e, em menor grau (pequeno fator de surpresa) no 10. Compare isso com o horário de Washington Nationals AwayHome naquela semana e você verá que conseguimos isso. Nos processos de fabricação e negócios, existe uma ferramenta comum chamada de gráfico de controle. Criado em 1920 pelo Dr. Walter Shewhart, um gráfico de controle é usado para determinar se um processo está no controle ou fora de controle. Na época, o Dr. Shewhart estava trabalhando na Bell Labs tentando melhorar a qualidade do sinal das linhas telefônicas. Os componentes mal usinados foram uma das principais causas da degradação do sinal, de modo que melhorar os processos de fabricação para produzir componentes mais uniformes foi um passo crítico na melhoria da qualidade do sinal. Dr. Shewhart percebeu que todos os processos, fabricação ou outros, possuem alguma variação natural. A chave era identificar quando a variação estava se comportando normalmente (no controle), e quando de repente começou a mudar (fora de controle). Um processo que saiu de controle precisa ser interrompido para que o problema possa ser resolvido, em vez de destruir componentes fabricados. Os gráficos de controle funcionam desencadeando um alerta quando o valor diverge suficientemente da média por uma certa quantidade. Na prática, eles são muito simples e intuitivos de ler, e muitas vezes atuam como detectores de anomalia de linha de frente devido à sua simplicidade e robustez. Suavização com médias móveis Os gráficos de controle podem ser construídos com bastante facilidade na Elasticsearch usando uma combinação de agregações, incluindo as novas agregações de pipeline. Para começar, vamos ver alguns dados sintéticos que eu gerei para esta publicação. Por diversão, podemos imaginar que é a temperatura do refrigerante (em celsius) para um reator nuclear. Vejamos primeiro os dados, usando um balde de histograma e uma métrica de extensões: no gráfico, estamos planejando o valor médio de cada balde: clique para tamanho completo. Como você pode ver, os dados são basicamente uma tendência plana, com uma distribuição aleatória em torno de 30. Os dados são ruidosos, então a primeira coisa que você gostaria de fazer é suavizar para que você possa ver a tendência geral melhor. As médias móveis são ótimas para isso. Uma média móvel basicamente leva uma janela de valores, calcula a média, então move a janela para frente um passo. Existem vários tipos diferentes de médias móveis que você pode escolher. Vamos usar uma Média de Movimento Exponencialmente Ponderada (EWMA). Este tipo de média móvel reduz a importância de um ponto de dados exponencialmente à medida que se torna mais antigo na janela. Isso ajuda a manter a média móvel centrada nos dados em vez de ficar para trás. Na consulta a seguir, adicionamos uma agregação de pipeline de média móvel movavgmean que calcula a média móvel de cada balança avg (ou seja, uma média deslizante de meios): Existem alguns bits interessantes aqui: pontos de buckets para o valor de avg calculado dentro da nossa métrica de ExtendedStats A janela está configurada para 24, o que significa que queremos fazer uma média nas últimas 24 horas. O modelo conjunto é configurado para ewma. E, finalmente, configuramos algumas configurações para este modelo específico. A configuração alpha controla o quão suave é a média móvel gerada. O padrão (0,3) geralmente é bastante bom, mas gostei da aparência de 0,1 melhor para essa demo. Confira os documentos para obter mais informações sobre como as funções alfa. E o gráfico resultante agora inclui uma linha bem suavizada (roxo): no controle Então, a questão é. Este gráfico parece no controle Existe uma razão pela qual você deve desligar o reator, ou tudo está funcionando sem problemas, eu admito, eu estava sendo sneaky no gráfico anterior: eu traçava a média. Conforme discutido anteriormente. A média é uma métrica bastante pobre na maioria dos casos. Neste conjunto de dados, está escondendo um grande pico que eu coloquei na quinta-feira. Se traçamos o valor máximo em cada balde (linha amarela), o pico fica imediatamente limpo: espero que você tenha desativado o reator na quinta-feira) Como podemos ter detectado este pico. Nesta tabela, a anomalia é absurdamente clara. Você poderia usar um limite simples. Mas, além disso, veja mais adiante, os limites geralmente falham em padrões mais complexos. Em vez disso, vamos construir um gráfico de controle. Os gráficos de controle consideram um processo fora de controle se os pontos de dados começam a cair três desvios padrão para fora da média. Com isso em mente, podemos modificar nossa agregação para transformá-la em um gráfico de controle de boa-fé. Para fazer isso, precisamos adicionar duas novas agregações: uma média móvel no desvio padrão e um script que calcula o limite superior: O novo movavgstd pipeline agg é muito simples: é simplesmente um EWMA (com configurações padrão) que mede A métrica stats. stddeviation nas últimas 24 horas. O shewhartucl pipeline agg é um bucketscript que calcula o limite de controle superior aka, o ponto no tempo em que você começa a se preocupar porque o processo ficou fora de controle. Pense nisso como um limiar dinâmico. O limiar é calculado multiplicando o desvio padrão de rolamento por três, depois adicionando-o ao meio de rolamento. Eu omiti-lo por brevidade, mas a maioria das tabelas de controle também inclui um limite de controle menor. Para adicionar isso, você simplesmente copiaria o seu currículo. Subtrair três desvios padrão em vez de adicionar e renomeá-lo para shewhartlcl. Nota: eu uso um script inline por conveniência. Você pode substituí-lo por um script estático se o script dinâmico e inline estiver desativado em seu cluster. Média suavizada: roxa Valor máximo: amarelo Limite de controle superior: verde Podemos representar graficamente isso e ver que o pico (amarelo) dispara para além do limite de controle (verde). Em um sistema real, é quando você envia um alerta ou e-mail. Ou talvez algo mais drástico, já que este é um reator nuclear que estamos modelando) Conclusão Isso é tudo para esta semana. Para recapitular, usamos as novas agregações de pipeline para suavizar nossos dados com uma média móvel. Em seguida, construímos um gráfico de controle para encontrar dinamicamente outliers calculando um limite de controle superior baseado na média móvel e em um desvio padrão móvel. Na segunda parte. Bem, veja como o mesmo gráfico de controle pode ser usado para padrões de dados mais interessantes, como tendências lineares e comportamento cíclico. Bem, também veja como integrá-lo com o Watcher para que possamos receber notificações por e-mail automaticamente. Confira Mudança média deslocada 20667 Ei l8liu. Desculpe pela demora na resposta. Nós conversamos internamente sobre isso um pouco. Comece com o fácil: também, você poderia considerar adicionar um Desvio padrão móvel no futuro. Definitivamente, falamos sobre isso algumas vezes e eu conheço pessoalmente como um. Estivemos tentando determinar a melhor forma de adicioná-lo (agg dedicado, ou mudar o nome de motionaverage para mover a função e implementar o SDD como função, etc.). Eu acho que isso vai acabar como um dedicado motionstddev agg, pois isso é o mais simples. Espero que a média móvel seja igual à média do dia atual e dos 2 dias anteriores, mas os resultados são a média dos 3 dias anteriores, e não incluindo o dia atual. Então, estamos conversando sobre o porquê fizemos isso e acho que o comportamento está correto porque estamos usando uma média móvel esquerda comumente usada em casos de uso financeiro e outros casos de não-sinal (por exemplo, o valor de hoje é o resultado de valores anteriores) . Por exemplo, as médias móveis financeiras usam os preços de fechamento e o valor de hoje é intrinsecamente incalculável porque hoje ainda não foi fechado. O que significa que você só pode calcular as médias móveis em pontos de dados anteriores, e não hoje. Isso reflete a definição de wikis para um SMA financeiro: em aplicações financeiras, uma média móvel simples (SMA) é a média não ponderada dos dados n anteriores. Para uma série de aplicações, é vantajoso evitar a mudança induzida usando apenas dados passados. Portanto, uma média móvel central pode ser calculada, usando dados igualmente espaçados em ambos os lados do ponto na série onde a média é calculada. Além disso, se os valores de hoje fossem incluídos, o valor da movimentação de hoje mudaria sempre que você executar a agregação desde a O balde continua enchendo. Isso é um pouco diferente de mais processos de processamento de processos de processamento de ciência em que você toma médias médias centradas (o movimento de um ponto é a média de n2 em cada lado), em cujo caso faz sentido incluir o balde em sua própria movimentação. Mas, como só suportamos uma orientação no momento, acho que o comportamento atual é correto. Muitas citações de susto acima, porque eu concordo é mais uma questão de perspectiva e como você deseja usar a média móvel. Nós ainda não chegamos a uma decisão final, mas acho que até agora, pelo menos, concordamos que a implementação atual não é errada. ) Polyfractal Muito obrigado pela sua explicação detalhada e concordo com a sua consideração da implementação da média móvel atual. No futuro, você pode adicionar um parâmetro de deslocamento para que os usuários possam ter opções para escolher onde querem produzir o movimento. Queremos que ele se alinhe ao dia atual, mas não no dia anterior, quando fazemos o controle estatístico. Também é feliz saber que você terá o desvio padrão móvel no futuro. Muito obrigado pelo excelente trabalho e estamos esperando o seu novo trabalho, acho que um parâmetro de mudança pode ser útil, embora eu tenha curiosidade quanto ao seu alcance. Só permitiria mudar um dia para alinhar a média, ou devemos permitir a mudança arbitrária (por exemplo, 10 baldes). De uma perspectiva de código, movavg já é bastante complicado, então não queremos apresentar demasiada complexidade adicional. Talvez possamos adicionar um agendamento de pipeline de mudança dedicado que se senta antes da movavg. Não tenho certeza, não pensei com muita atenção :) Você não pode executar essa ação neste momento. Você fez login com outra guia ou janela. Recarregue para atualizar sua sessão. Você se separou em outra guia ou janela. Recarregue para atualizar sua sessão.

No comments:

Post a Comment