Monday, 24 July 2017

Moving Average Outlier Detection


Estou trabalhando com uma grande quantidade de séries temporais. Essas séries temporais são basicamente medições de rede a cada 10 minutos, e algumas delas são periódicas (ou seja, a largura de banda), enquanto outras não são (ou seja, a quantidade de tráfego de roteamento). Gostaria de um algoritmo simples para fazer uma detecção de outlier on-line. Basicamente, eu quero manter na memória (ou no disco) todos os dados históricos para cada série de tempo, e eu quero detectar qualquer outlier em um cenário ao vivo (cada vez que uma nova amostra é capturada). Qual é a melhor maneira de alcançar esses resultados Im atualmente usando uma média móvel, a fim de remover algum ruído, mas então o próximo coisas simples como desvio padrão, louco. Contra todo o conjunto de dados não funciona bem (eu não posso assumir a série de tempo são estacionários), e eu gostaria de algo mais preciso, idealmente uma caixa preta como: double outlierdetection (double vector, double value) onde vector é o array de double contendo Os dados históricos eo valor de retorno é a pontuação de anomalia para o novo valor da amostra. Sim, eu assumi a freqüência é conhecida e especificada. Existem métodos para estimar a frequência automaticamente, mas isso complicaria consideravelmente a função. Se você precisa estimar a freqüência, tente fazer uma pergunta separada sobre isso - e provavelmente fornecer uma resposta. Mas precisa de mais espaço do que eu tenho disponível em um comentário. Ndash Rob Hyndman Aug 3 10 às 23:40 Uma boa solução terá vários ingredientes, incluindo: Use uma janela resistente e movente suave para remover a não-estacionaridade. Reexpresse os dados originais de modo que os resíduos com relação ao liso sejam distribuídos aproximadamente simetricamente. Dada a natureza de seus dados, é provável que suas raízes quadradas ou logaritmos dêem resíduos simétricos. Aplicar métodos de gráfico de controle, ou pelo menos controlar o pensamento gráfico, para os resíduos. Na medida em que o último vai, o pensamento de gráfico de controle mostra que limiares convencionais como 2 SD ou 1,5 vezes o IQR além dos quartis funcionam mal porque eles acionam muitos falsos sinais fora de controle. As pessoas costumam usar 3 SD no trabalho de gráfico de controle, onde 2,5 (ou mesmo 3) vezes o IQR além dos quartis seria um bom ponto de partida. Eu tenho mais ou menos esboçado a natureza da solução de Rob Hyndmans ao adicionar a ela dois pontos principais: a necessidade potencial re-expressar os dados ea sabedoria de ser mais conservador em sinalizar um outlier. Eu não tenho certeza que Loess é bom para um detector on-line, no entanto, porque não funciona bem nos endpoints. Em vez disso, você pode usar algo tão simples como um filtro mediano em movimento (como no Suketik resistente a Tukeys). Se outliers não vêm em rajadas, você pode usar uma janela estreita (5 pontos de dados, talvez, que irá quebrar apenas com uma explosão de 3 ou mais outliers dentro de um grupo de 5). Depois de ter realizado a análise para determinar uma boa re-expressão dos dados, é improvável que você precise alterar a re-expressão. Portanto, o detector on-line realmente só precisa fazer referência aos valores mais recentes (a última janela) porque ele não usará os dados anteriores. Se você tiver séries de tempo muito longas, você poderia ir mais longe para analisar a autocorrelação ea sazonalidade (como flutuações diárias ou semanais recorrentes) para melhorar o procedimento. IQR é a recomendação original de Tukey para os bigodes mais longos em um boxplot e 3 IQR é sua recomendação para pontos de marcação como outliersquot quotfar (um riff em uma frase 6039 popular). Isso é construído em muitos algoritmos boxplot. A recomendação é analisada teoricamente em Hoaglin, Mosteller, amp Tukey, Understanding Robust e Exploratory Data Analysis. Isso confirma dados de séries de tempo que tenho tentado analisar. Janela média e também uma janela desvios padrão. ((X - avg) / sd) gt 3 parecem ser os pontos que eu quero sinalizar como outliers. Bem, pelo menos, alertar como outliers, eu sinalizar qualquer coisa superior a 10 sd como extrema outliers erro. O problema que eu corro em é o que é um comprimento de janela ideal I39m que joga com qualquer coisa entre 4-8 pontos de dados. Ndash NeoZenith Jun 29 at 8:00 Neo Sua melhor aposta pode ser a de experimentar com um subconjunto de seus dados e confirmar suas conclusões com testes sobre o restante. Você poderia realizar uma validação cruzada mais formal também (mas é necessário um cuidado especial com dados de séries temporais devido à interdependência de todos os valores). (Esta resposta respondeu a uma pergunta duplicada (agora fechada) na Detecção de eventos pendentes que apresentou alguns dados em forma gráfica.) A detecção de valores atípicos depende da natureza dos dados e do que você está disposto Para assumir sobre eles. Os métodos de uso geral dependem de estatísticas robustas. O espírito desta abordagem é caracterizar a maior parte dos dados de uma forma que não é influenciada por quaisquer outliers e, em seguida, apontar para quaisquer valores individuais que não se encaixam dentro dessa caracterização. Porque esta é uma série de tempo, acrescenta a complicação da necessidade de (re) detectar outliers em uma base contínua. Se isso é para ser feito como a série se desenrola, então estamos autorizados apenas a usar dados mais antigos para a detecção, não dados futuros Além disso, como proteção contra os muitos testes repetidos, gostaríamos de usar um método que tem um falso muito baixo Taxa positiva. Estas considerações sugerem a execução de um simples, robusto teste de janela em movimento sobre os dados. Existem muitas possibilidades, mas uma simples, facilmente compreensível e facilmente implementada é baseada em uma corrida MAD: mediana absoluto desvio da mediana. Esta é uma medida fortemente robusta de variação dentro dos dados, semelhante a um desvio padrão. Um pico periférico seria vários MADs ou mais maior do que a mediana. Ainda há algum ajuste a ser feito. O quanto de um desvio da maior parte dos dados deve ser considerado periférico e como voltar no tempo deve olhar Deixe vamos deixar estes como parâmetros para a experimentação. Heres uma aplicação R aplicada a dados x (1,2, ldots, n) (com n1150 para emular os dados) com valores correspondentes y: Aplicada a um conjunto de dados como a curva vermelha ilustrada na pergunta, produz esse resultado: Os dados São mostrados em vermelho, a janela de 30 dias dos limiares median5MAD em cinza e os outliers - que são simplesmente aqueles valores de dados acima da curva cinza - em preto. (O limiar só pode ser calculado começando no final da janela inicial. Para todos os dados dentro desta janela inicial, o primeiro limiar é usado: thats porque a curva cinza é plana entre x0 e x30.) Os efeitos de alterar os parâmetros são (A) o aumento do valor da janela tenderá a suavizar a curva cinza e (b) o aumento do limiar elevará a curva cinza. Sabendo disso, pode-se tomar um segmento inicial dos dados e identificar rapidamente os valores dos parâmetros que melhor segregam os picos periféricos do resto dos dados. Aplique esses valores de parâmetro para verificar o restante dos dados. Se um gráfico mostra que o método está piorando ao longo do tempo, isso significa que a natureza dos dados está mudando e os parâmetros podem precisar ser reajustados. Observe quão pouco esse método assume sobre os dados: eles não precisam ser distribuídos normalmente, eles não precisam exibir qualquer periodicidade que nem sequer precisam ser não-negativos. Tudo o que assume é que os dados se comportam de maneira razoavelmente semelhante ao longo do tempo e que os picos periféricos são visivelmente mais altos que o resto dos dados. Se alguém quiser experimentar (ou comparar alguma outra solução para o oferecido aqui), aqui está o código que eu usei para produzir dados como os mostrados na pergunta. Estou adivinhando modelo sofisticado série de tempo não vai funcionar para você por causa do tempo que leva para detectar outliers usando esta metodologia. Portanto, aqui está uma solução alternativa: Primeiro, estabeleça padrões de tráfego normais de linha de base para um ano, com base em análise manual de dados históricos que contabilizam a hora do dia, o dia da semana versus o fim de semana, o mês do ano etc. Use essa linha de base juntamente com algum mecanismo simples (Por exemplo, média móvel sugerida por Carlos) para detectar outliers. Você também pode querer rever a literatura de controle de processo estatístico para algumas idéias. Sim, isso é exatamente o que estou fazendo: até agora eu divido manualmente o sinal em períodos, para que, para cada um deles, eu possa definir um intervalo de confiança dentro do qual o sinal é suposto estar parado e, portanto, posso usar métodos padrão como Como desvio padrão. O problema real é que eu não posso decidir o padrão esperado para todos os sinais que tenho para analisar, e é por isso que procuro algo mais inteligente. Ndash gianluca Ago 2 10 em 21:37 Aqui está uma idéia: Passo 1: Implementar e estimar um modelo genérico série de tempo em uma base de tempo com base em dados históricos. Isso pode ser feito offline. Passo 2: Use o modelo resultante para detectar outliers. Etapa 3: Em alguma freqüência (talvez a cada mês), re-calibre o modelo de série de tempo (isso pode ser feito off-line) para que sua etapa 2 detecção de outliers não ir muito fora da etapa com os padrões de tráfego atual. Isso funcionaria para o seu contexto ndash user28 Aug 2 10 at 22:24 Sim, isso pode funcionar. Eu estava pensando em uma abordagem semelhante (recompactando a linha de base todas as semanas, o que pode ser intenso de CPU se você tiver centenas de séries de tempo univariadas para analisar). BTW a pergunta difícil real é quotwhat é o melhor algoritmo estilo blackbox para modelar um sinal completamente genérico, considerando ruído, estimativa de tendência e sazonalidade. AFAIK, todas as abordagens na literatura requerem uma fase de afinação quotparamétrica muito difícil, eo único método automático que encontrei é um modelo ARIMA de Hyndman (robjhyndman / software / forecast). Eu sinto falta de algo ndash gianluca Aug 2 10 at 22:38 Novamente, isso funciona muito bem se o sinal é suposto ter uma sazonalidade como essa, mas se eu usar uma série de tempo completamente diferente (ou seja, a média TCP round trip tempo ao longo do tempo ), Este método não funcionará (já que seria melhor lidar com aquele com uma média global simples e desvio padrão usando uma janela deslizante contendo dados históricos). A menos que você esteja disposto a implementar um modelo de série de tempo geral (que traz em seus contras em termos de latência, etc) eu sou pessimista que você vai encontrar uma implementação geral, que ao mesmo tempo é bastante simples Para trabalhar para todos os tipos de séries temporais. Outro comentário: Eu sei que uma boa resposta pode ser quotso você pode estimar a periodicidade do sinal, e decidir o algoritmo para usar de acordo com itquot, mas eu didn39t encontrar uma verdadeira boa solução para este outro Problema (eu joguei um pouco com a análise espectral usando DFT e análise de tempo usando a função de autocorrelação, mas minha série de tempo contém um monte de ruído e esses métodos dão alguns resultados loucos mosts do tempo) ndash gianluca Aug 2 10 at 22:06 A Comentar o seu último comentário: é por isso que procuro uma abordagem mais genérica, mas preciso de um tipo de caixa quadrada porque não posso fazer qualquer suposição sobre o sinal analisado e, portanto, não posso criar o conjunto de parâmetros quotbest para o algoritmo de aprendizagem. Ndash gianluca Aug 2 10 at 22:09 Uma vez que é um dados de séries temporais, um simples filtro exponencial en. wikipedia. org/wiki/Exponentialsmoothing irá suavizar os dados. É um filtro muito bom desde que você não necessita acumular pontos velhos dos dados. Compare todos os valores de dados recém-suavizados com o seu valor não alinhado. Uma vez que o desvio excede um certo limite predefinido (dependendo do que você acredita que um outlier em seus dados é), então o outlier pode ser facilmente detectado. Você pode usar o desvio padrão das últimas medidas N (você tem que escolher um N adequado). Uma pontuação boa anomalia seria quantas desvios padrão de uma medição é a média móvel. Resposta Obrigado por sua resposta, mas e se o sinal exibe uma alta sazonalidade (ou seja, um monte de medições de rede são caracterizadas por um padrão diário e semanal, ao mesmo tempo, por exemplo, noite vs dia ou fim de semana Vs dias de trabalho) Uma abordagem baseada no desvio padrão não funcionará nesse caso. Por exemplo, se eu receber uma nova amostra a cada 10 minutos, e I39m fazendo uma detecção atípica do uso da largura de banda da rede de uma empresa, basicamente às 18h esta medida vai cair (este é um esperado Um padrão totalmente normal), e um desvio padrão calculado sobre uma janela deslizante falhará (porque ele irá disparar um alerta com certeza). Ao mesmo tempo, se a medida cai às 4pm (desviando da linha de base usual), este é um outlier real. Ndash gianluca Aug 2 10 at 20:58 o que eu faço é agrupar as medidas por hora e dia da semana e comparar os desvios padrão de que. Ainda doesnt corrigir para coisas como férias e verão / inverno sazonalidade mas sua correto mais. A desvantagem é que você realmente precisa coletar um ano ou assim de dados para ter o suficiente para que stddev começa a fazer sentido. A análise espectral detecta a periodicidade em séries temporais estacionárias. A abordagem do domínio da freqüência baseada na estimativa da densidade espectral é uma abordagem que eu recomendaria como seu primeiro passo. Se durante certos períodos a irregularidade significa um pico muito mais elevado do que o típico para esse período, então a série com tais irregularidades não seria estacionária e a anisise espectral não seria apropriada. Mas assumindo que você identificou o período que tem as irregularidades você deve ser capaz de determinar aproximadamente o que a altura do pico normal seria e, em seguida, pode definir um limiar em algum nível acima dessa média para designar os casos irregulares. Resposta Eu sugiro o esquema abaixo, que deve ser implementável em um dia ou assim: Colete como muitas amostras que você pode segurar na memória Remover outliers óbvia usando o desvio padrão para cada atributo Calcular e armazenar a matriz de correlação E também a média de cada atributo Calcular e armazenar as distâncias Mahalanobis de todas as suas amostras Cálculo outlierness: Para a única amostra de que você quer saber o seu outlierness: Recuperar os meios, matriz de covariância e Mahalanobis distância s de treinamento Calcular a distância Mahalanobis d Para sua amostra Retorne o percentil em que d cai (usando as distâncias de Mahalanobis do treinamento) Essa será sua pontuação outlier: 100 é um outlier extremo. PS. Ao calcular a distância de Mahalanobis. Use a matriz de correlação, não a matriz de covariância. Isto é mais robusto se as medições da amostra variarem em unidade e número. Estimador de tendência e sua aplicação em detecção de valores atípicos Este é o acompanhamento do último post sobre Visão geral de detecção de fraude. Neste artigo, vamos nos concentrar nos dados da série de tempo e alguns métodos para encontrar outliers em dados de séries temporais Dados de séries temporais O que é dados de séries temporais A série temporal é definida como uma coleção de pontos de dados que é observada durante um intervalo de tempo contínuo. Os dados da série de tempo são usados ​​frequentemente encontrar as mudanças dos dados sobre o tempo. Por exemplo, podemos medir quantas calorias queimamos todos os dias para ver se estamos aptos e também podemos calcular o dinheiro que gastamos todos os dias para encontrar nossos comportamentos de gastos. Troca de moeda (Euro para VN). Fonte: google A figura acima se um exemplo de dados de séries temporais (ilustrado pelo gráfico de linhas à direita). Podemos também identificar muitos outros recursos no gráfico. Por exemplo, olhando para o gráfico, podemos ver que após 5 anos, o valor do Euro foi reduzido (de 30.000 VND para 25.000 VND). Além disso, houve algumas mudanças drásticas no final de 2014 (o que corresponde à sua crise). Mesmo a tendência dos dados no ano passado também poderia ser identificada. O que é um outlier em dados de séries temporais No último post, definimos um outlier como um ponto de observação que está distante de outras observações. Conforme mencionado na última seção, usando dados de séries temporais, pudemos detectar a tendência de movimento dos dados ao longo do tempo. Combinar esses dois, um outlier em dados de séries temporais é um ponto de dados que está distante da tendência geral de todo o conjunto de dados. Usando a definição acima, poderíamos criar um método geral para encontrar valores abertos em dados de séries temporais da seguinte maneira: Coletar dados de séries temporais com ruídos e outliers. Normalizar os dados de valor Localizar a tendência geral de dados Identificar os pontos que não seguem a tendência geral (pontos que estão muito distantes dos valores estimados de acordo com a tendência geral) Detectar valores atípicos em dados de séries temporais Existem muitas maneiras de calcular a movimentação Tendência dos dados. Nesta seção, vamos falar de dois métodos: média móvel e regressão. Para ilustrar o algoritmo, vamos definir os dados de entrada. Suponha que nos são dadas: Média móvel A média móvel é um dos métodos mais simples para calcular e visualizar a tendência dos dados das séries temporais. Sua idéia é simples, o valor correspondente de um timestamp é calculado como o valor médio dos pontos circunvizinhos. Por exemplo, seja 2k as janelas da média móvel. No timestamp xi podemos calcular yi como: Aplicar esta equação a todos os pontos dados atingimos os valores estimados de cada timestamp. Encontrar outlier nos dado dados agora é bastante simples. Basta pré-definir um limite e, em seguida, identificar todos os dados ponto j que têm: Usando os pontos circundantes não é uma obrigação. Poderíamos também usar k pontos que são observados antes (ou depois) do ponto selecionado. Existem várias melhorias para o algoritmo de média móvel. Você pode encontrá-los aqui Mediano filtro Movendo média oferece uma maneira fácil de estimar e visualizar a tendência de dados de séries temporais. No entanto, ele tem um grande inconveniente que é: outlier muitas vezes introduz uma mudança drástica no valor médio. Por causa disso, você pode acabar detectando alguns pontos de dados que não devem ser filtrados. Felizmente, Median filtro poderia resolver este problema, estimando os valores observados como a mediana dos valores circundantes. Em outras palavras, temos: Similar à média móvel, agora temos que definir um limiar e, em seguida, encontrar o outlier de acordo com o limiar. Tanto a média móvel como o filtro mediano têm de enfrentar o mesmo problema: não podem fornecer uma forma eficaz de prever o valor no futuro porque não temos dados no futuro. Por exemplo, o valor de Euro comparado com VND está aumentando de acordo com o gráfico na última seção. Aplicando a média móvel ou mediana algoritmos de filtro para a próxima etapa resultará um valor previsto que é menor do que o último tempo medido. Assim, o valor previsto não seguirá a tendência geral dos dados. Para resolver este problema, podemos usar o método de regressão. Regressão Ao contrário da média móvel e do filtro mediano, a regressão calcula a relação entre cada par de dados observados no conjunto de dados. Entre os métodos de regressão, a regressão linear é considerada como o método mais fácil. Ele simplesmente estima uma linha reta que pode ser considerada como a tendência de movimento dos dados. Em outras palavras, tentamos estimar uma linha que é: Dado os dados, podemos calcular a taxa de erro: eo erro total é: Minimizar o erro total de produções Outlier detecção com Gaussian Process Regressão linear fornece um método para encontrar a tendência de movimento De dados. No entanto, é apenas uma linha reta. Em dados do mundo real, vimos muitos dados que não devem ser estimados como uma linha reta. O gráfico de moeda acima é um exemplo. Portanto, precisamos de um método de regressão melhor que capture não apenas a natureza do conjunto de dados dado, mas também robusto ao ruído (ou outlier) Gaussian Process é um método não paramétrico para descobrir a tendência dos dados. Ele também oferece um bom modelo probabilístico que é robusto para o ruído de entrada (que pode ser considerado como outlier). Vamos mover o algoritmo do próprio Processo Gaussiano. No processo gaussiano assumimos que os pontos de dados são uma coleção de variáveis ​​aleatórias, qualquer número finito de que tenha uma distribuição gaussiana conjunta Rasmussen. Semelhante à Distribuição Gaussiana, o Processo Gaussiano é definido por sua função média e função de covariância. Eles podem ser calculados como: Neste momento, um processo gaussiano é controlado pela função de covariância. Vamos considerar a função de covariância mais comum: função RBF (ou função gaussiana). Na função RBF, k (xi, xj) é calculado pela seguinte equação: Suponha que queremos prever o valor ym em xm. Precisamos nos preparar Então, podemos calcular o ym previsto por: Note que: todos os parâmetros do processo gaussiano podem ser aprendidos a partir dos dados dados utilizando o método de subida do gradiente marginal. Na estatística, temos a regra 67-95-99.7. Aplicando esta regra em nosso problema, teremos a confiança preditiva de ym. Isso também nos ajuda a identificar o outlier nos dados (os dados observados não ficar dentro do intervalo de confiança selecionado do previsto DA dados de entrada Permite criar uma entrada usando python Média móvel Mediana filtro Regressão linear GaussianprocessGiven uma série de tempo-carimbado numérico , Usando o operador Outlier em uma consulta pode identificar valores em uma seqüência que parecem inesperados e identificar um alerta ou violação, por exemplo, para uma pesquisa agendada. Para fazer isso, o operador Outlier rastreia a média móvel eo desvio padrão de O valor, e detecta ou alerta quando a diferença entre o valor excede a média por algum múltiplo do desvio padrão, por exemplo, 3 desvio padrão. Timeslice 1m max (x) como tempo de resposta pelo timeslice outlier responsetime timelice 1m count (sourcehost) as Sourcehost by timeslice outlier count Certifique-se de que sua sintaxe inclui apenas um campo chave: timeslice. Isto é necessário para tornar a opção de gráfico de linha disponível. O segundo exemplo de sintaxe usa uma cláusula adicional de ldquogroup byrdquo para encontrar outliers para múltiplos valores de sourcehost. Consulte o exemplo abaixo para obter detalhes. Esta sintaxe adiciona os seguintes campos à saída: responsetimeerror - Esta é a média de tempo de resposta. Responsetimelower - Este é o desvio padrão médio - limiar. Responsetimeupper - Este é o desvio padrão médio do limiar. Responsetimeindicator - Esta é 1 para o valor fora dos limites inferior e superior. Responsetimeviolation - Este é 1 para bater o número especificado de indicadores consecutivos. Existem padrões para todos os parâmetros, mas você pode configurar parâmetros através de argumentos de palavras-chave, como comprimento da janela ou limiar. Por exemplo, essa consulta definirá os seguintes parâmetros: tempo de resposta de outlier window5, threshold3, consecutive2, direction-window - Use os 5 pontos de dados à direita para calcular média e sigma. O padrão é 10. threshold - Calcular violação com base em / - 3 desvios padrão. O padrão é 3.0. Consecutiva - Apenas ajuste a resposta de tempo de resposta a 1 se 2 ou mais pontos de dados consecutivos forem observados além de 3 desvios padrão da média móvel. O padrão é 1. direção - Usa -,, ou -, para qual direção dispara violações: Use - para desvios positivos ou negativos. Esse é o padrão. Use apenas para desvios positivos (mais do que o esperado). Uso - para apenas desvios negativos (menos do que o esperado). O operador Outlier deve aparecer após um grupo por agregador, como count, min, max ou sum. O campo de destino original deve ser numérico. Limitações Como o balde de tempo mais recente em uma consulta pode ter dados incompletos, ele é ignorado por outlier. Conseqüentemente, se um alerta estiver configurado para disparar em ltfieldnamegtviolation mudando para 1, este alerta disparará um timeslice mais tarde. Execute a seguinte consulta para localizar valores anómalos em logs do IIS nas últimas 6 horas. SourceCategoryIIS / acesso parse regex quotd-dd d: d: d (ltserveripgtS) (ltcsuristemgt / S) S d (ltusergtS) (ltclientipgt. d) quot analisar regex quotd dd (ltresponsetimegtd) quot timeslice 15m max (tempo de resposta) como Responsetime by timeslice outlier tempo de resposta window5, threshold3, consecutive2, direction - Os valores outlier são representados pelos triângulos cor-de-rosa no gráfico resultante. Logs do Apache - Sever Errors Over Time Execute a seguinte consulta para encontrar valores de valores anómalos nos logs do Apache nas últimas 3 horas. SourceCategoryApache / Access parse quotHTTP / 1.1quot como statuscode onde statuscode corresponde a quot5quot timeslice 5m count (statuscode) como statuscode por timelice outlier statuscode window5, threshold3, consecutive1, direction - Os valores outlier são representados pelos triângulos cor-de-rosa no gráfico resultante. Use uma cláusula adicional de ldquogroup byrdquo para encontrar outliers para vários valores de sourcehost. Você também pode executar uma consulta como esta: data_de_servidor_de_serviço timelice 1m count por timelice, sourcehost outlier count por sourcehost Desta forma, você pode executar a análise outlier separadamente para cada valor de sourcehost. como mostrado. Este exemplo apenas produzirá uma tabela de agregação, não um gráfico, mas os campos de indicador e violação refletirão corretamente cada processamento de sourcehost. Detecção de Outlier Multidimensional O operador Outlier suporta a detecção de séries multidimensionais ou multi-temporais. A detecção de valores abertos multidimensionais é útil quando você deseja monitorar o comportamento de cada usuário, servidor, recurso de aplicativo ou outro ldquoentityrdquo único, em vez de alguma agregação em todas as entidades. Por exemplo, você pode detectar logins falhados por usuário. Para fazer isso, você gostaria de saber se alguma conta de usuário, individualmente, experimentou uma quantidade estranha de logins com falha, e não se wersquove viu algum aumento na quantidade média ou total de logins com falha em todos os usuários. O último pode ser útil, mas com centenas ou milhares de usuários (entidades), um pico em logins com falha pode se perder no ruído de um ldquonormalrdquo quantidade de logins falhou total, e você poderia perder um pico em logins com falha para um usuário específico . Outros exemplos incluem: Detecção de anomalias enquanto rastreia falhas de página, operação de disco ou utilização de CPU para todos os nós de um cluster simultaneamente. Monitorando o desempenho de cada estação de trabalho simultaneamente, sem a necessidade de construir um relatório outlier para cada um. Monitoramento de uploads de imagens com falha para todos os usuários de um aplicativo (não total de uploads falhados em todos os usuários). Se você tiver usado o operador outlier, é fácil criar uma operação multidimensional outlier. Basta adicionar por ltdimensiongt ao final da consulta. Por exemplo, a consulta de exemplo a seguir determinará muitas séries de tempo, uma para cada sourcehost: data_de_base de dados de origem, timeslice 1m count por timeslice, sourcehost outlier count por sourcehost Você pode exibir os resultados brutos de uma série de tempo multidimensional em um gráfico de tabela, Não estão disponíveis. No gráfico de tabela a seguir, um valor de 1 na coluna countviolation indica que o ponto de dados correspondente a esse timeslice é um outlier. Alertas com base em resultados de Outlier multidimensionais Para criar um alerta com base na tabela de outliers multi-séries acima, extraia countviolation. Desta forma, você não precisará construir um alerta para cada série de dados (cada sourcehost no exemplo anterior), e você pode monitorar automaticamente uma série dinâmica para desviar o comportamento. A consulta de exemplo a seguir permite monitorar quando os usuários de aplicativos experimentam falhas. Ele monitora todas as contas de usuário por ID de usuário exclusivo e aplica-se à quantidade de ldquofailrdquo mensagens que ocorrem em todas as contas de usuário: sourceCategoryProd parse quotUserID: quot como userid parse quotResult: quot como resultado onde resultado quotFailquot timeslice 1h contagem por userid, timeslice outlier Depois de executar a consulta, você pode clicar em Salvar como para criar uma pesquisa agendada e configurá-la para enviar um alerta quando qualquer conta de usuário tiver uma quantidade incomum de falhas ou Outro evento para o qual você deseja monitorar cada série de dados. Para visualizar seus resultados, na página Pesquisar, é possível criar um gráfico de colunas. Em seguida, altere a propriedade de empilhamento para normal para exibir alertas por userid exclusivo (o aspecto multidimensional). Gráfico Resultados Outlier multidimensionais Esta seção fornece dois exemplos de como exibir resultados outlier multidimensionais em gráficos. Exemplo 1: Distribuição Outlier ao longo do tempo Neste exemplo, wersquoll extrair countviolation a partir da tabela outliers multi-série e exibir isso. Isso permite que você exiba a distribuição de outliers entre várias séries temporais. Erro (sourceCategorymix ou sourceCategorycon) timeslice 1m contagem por timeslice, sourcecategory contagem outlier por sourcecategory campos timeslice, sourcecategory, countviolation transpose linha timeslice coluna sourcecategory Quando você seleciona um gráfico de linha. Este exemplo exibirá algo como o seguinte: Exemplo 2: Ranking de Outlier Esta consulta de exemplo usa o counterror (distância do valor esperado para esse timeslice) e o valor do desvio padrão para a linha de base, então determina quantos desvios-padrão um ponto de dados É de seu valor esperado. Desta forma, você pode exibir outliers visualmente em termos de desvio do valor esperado. Viewcustomereventsadhocsearch timezoneamerica timeslice 1h contar por timeslice, timezone outlier contar por timezone onde count gt0 se (countviolation1, abs (counterror) / counttd, 0) como desvio campos timeslice, fuso horário, desvio transpor linha timeslice coluna timezone Quando você seleciona um gráfico de linha. Este exemplo exibirá algo como o seguinte: No gráfico de linha, você pode ver qual série está produzindo os outliers mais ldquodeviatingrdquo. Essa abordagem efetivamente exibe a gravidade do outlier, porque os spikes representam a magnitude (quantos desvios padrão o valor é da média) em uma série de tempo em comparação com outra série de tempo. Artigos recomendados

No comments:

Post a Comment