Determinação automática de limiar para detecção de anomalias

9

Estou trabalhando com uma série de pontuações de anomalias (o fundo é a detecção de anomalias em redes de computadores). A cada minuto, recebo uma pontuação de anomalia que me diz o quão "inesperado" ou anormal é o estado atual da rede. Quanto maior a pontuação, mais anormal é o estado atual. Pontuações próximas a 5 são teoricamente possíveis, mas ocorrem quase nunca.xt[0,5]

Agora, eu quero criar um algoritmo ou uma fórmula que determine automaticamente um limite para essa série temporal de anomalias. Assim que uma pontuação de anomalia excede esse limite, um alarme é acionado.

A distribuição de frequência abaixo é um exemplo para uma série temporal de anomalia durante 1 dia. No entanto, é não seguro assumir que cada série temporal anomalia está indo olhar assim. Neste exemplo especial, um limite de anomalia como o quantil .99 faria sentido, uma vez que as poucas pontuações à direita podem ser consideradas anomalias.

insira a descrição da imagem aqui

E a mesma distribuição de frequência das séries temporais (varia apenas de 0 a 1, pois não há pontuações de anomalia mais altas na série temporal):

séries temporais

Infelizmente, a distribuição de frequência pode ter formas, em que o quantil .99 não é útil . Um exemplo está abaixo. A cauda direita é muito baixa; portanto, se o quantil .99 for usado como limite, isso poderá resultar em muitos falsos positivos. Essa distribuição de frequência parece não conter anomalias, portanto o limite deve ficar fora da distribuição em torno de 0,25.

insira a descrição da imagem aqui

Resumindo, a diferença entre esses dois exemplos é que o primeiro parece exibir anomalias, enquanto o segundo não.

Do meu ponto de vista ingênuo, o algoritmo deve considerar esses dois casos:

  • Se a distribuição de frequência possui uma cauda direita grande (ou seja, algumas pontuações anormais), o quantil 0,99 pode ser um bom limite.
  • Se a distribuição de frequência tiver uma cauda direita muito curta (ou seja, nenhuma pontuação anormal), o limite deverá estar fora da distribuição.

/ edit: Também não existe uma verdade básica, isto é, conjuntos de dados rotulados disponíveis. Portanto, o algoritmo é "cego" contra a natureza das pontuações de anomalias.

Agora não tenho certeza de como essas observações podem ser expressas em termos de um algoritmo ou fórmula. Alguém tem uma sugestão de como esse problema pode ser resolvido? Espero que minhas explicações sejam suficientes, pois meu histórico estatístico é muito limitado.

Obrigado pela ajuda!

cryptron
fonte
Apenas uma observação, o primeiro gráfico não parece nada normal para mim.
Mpiktas
11
@cryptron, a questão principal é o que é um limite de som . Por exemplo, se cada alarme gerado e não gerado incorre em certos custos, o limite pode ser escolhido de forma a minimizar os custos totais. Para isso, precisamos de dados de custo. Sem a definição exata do som , é impossível medir como avaliar o método escolhido para escolher o limite.
mpiktas
@mpiktas: Devo admitir que a palavra "som" foi lamentável neste contexto porque não tenho como avaliar rigorosamente o limiar (por isso editei-o). Basicamente, o limite deve minimizar os falsos positivos, porque são muito mais caros do que os falsos negativos na detecção de anomalias na rede.
Cryptron
@cryptron, você tem dados sobre o que é um falso positivo?
Mpiktas
11
{xt}0<xt50<xt0.5

Respostas:

2

Você pode encontrar este documento de seu interesse. Veja também uma apresentação mais detalhada de modelos semelhantes na West & Harrison . Existem outros exemplos desse tipo de monitoramento também, muitos mais recentes, mas essa não é exatamente a minha casa do leme :). Sem dúvida, existem implementações adequadas desses modelos, mas não sei o que eles podem ser de improviso ...

A idéia básica é que você tenha um modelo de comutação em que algumas observações / sequência de observações sejam atribuídas a estados anormais da rede enquanto o restante é considerado normal. Uma mistura como essa pode explicar a longa cauda direita em seu primeiro gráfico. Um modelo dinâmico também pode alertá-lo para saltos anormais, como às 8:00 e às 4:00 em tempo real, atribuindo alta probabilidade a novas observações pertencentes a um estado problemático. Também poderia ser facilmente estendido para incluir itens como preditores, componentes periódicos (talvez sua pontuação aumente / diminua um pouco com a atividade) e esse tipo de coisa.

Edit: Devo também acrescentar, esse tipo de modelo é "não supervisionado" no sentido de que as anomalias são detectadas, mostrando uma grande mudança média ou aumento da variação. Ao coletar dados, você pode melhorar o modelo com distribuições anteriores mais informativas. Mas talvez uma vez que você tenha dados suficientes (e exemplos de treinamento conquistados com dificuldade ao lidar com problemas de rede!), Você pode criar algumas regras simples de monitoramento (limites, etc.)

JMS
fonte
1

Você tem exemplos 'rotulados' do que constitui uma anomalia? ou seja, valores associados a uma falha de rede, ou algo assim?

Uma idéia que você pode considerar aplicar é uma curva ROC, que é útil para selecionar limiares que atendem a um critério específico, como maximizar verdadeiros positivos ou minimizar falsos negativos.

Obviamente, para usar uma curva ROC, você precisa rotular seus dados de alguma forma.

Zach
fonte
11
Infelizmente, não tenho conjuntos de dados rotulados. Existe apenas a suposição de que caudas longas ou outliers indicam anomalias no conjunto de dados.
Cryptron
@cryptron eu vejo. Então, o que você precisa é uma maneira de identificar dinamicamente outliers.
Zach
Isso resolveria uma parte do problema, sim.
Cryptron
1

O gráfico da "série original" não precisa exibir nenhuma estrutura predefinida. O que é crítico é que o gráfico dos "resíduos de uma série de modelos adequada" precise exibir uma estrutura gaussiana. Essa "estrutura gaussiana" geralmente pode ser obtida incorporando uma ou mais das seguintes "transformações" 1. um MODELO de arima 2. Ajustes para mudanças de nível local ou tendências de hora local ou pulsos sazonais ou pulsos comuns 3. uma análise ponderada explorando a heterogeneidade de variância comprovada 4. uma possível transformação de potência (logs etc.) para lidar com uma heterogeneidade de variância específica. 5. a detecção de pontos no tempo em que o modelo / parâmetros pode ter mudado.

A Detecção de Intervenção produzirá uma declaração sobre a significância estatística do evento mais recente, sugerindo normalidade ou anomalia

IrishStat
fonte
0

Na resposta do OP à minha resposta anterior, ele postou seus dados na web. 60 leituras por hora, durante 24 horas, durante 6 dias . Como se trata de ferramentas transversais de séries temporais, como o DBSCAN, a relevância é limitada, pois os dados têm dependência temporal. Com dados como esse, normalmente se procura estrutura intra-hora e intra-dia. Além desses tipos de estrutura, pode-se buscar a detecção de anomalias que podem ser únicas (pulso) ou de natureza sistemática (mudança de nível), usando métodos bem documentados (veja a literatura de Tsay, Tiao, Chen et. al.) Esses procedimentos produziram as seguintes "anomalias". Observe que uma mudança de nível é essencialmente sugestiva de "agrupamentos" separados. principais anomalias identificadas

                                HOUR/MINUTE     TIME
IrishStat
fonte
-1

Depois que um amigo meu me indicou a direção dos algoritmos de agrupamento , eu tropecei no DBSCAN, que constrói clusters no espaço n-dimensional de acordo com dois parâmetros predefinidos. A idéia básica é o agrupamento baseado em densidade, ou seja, regiões densas formam agrupamentos. Os outliers são retornados separadamente pelo algoritmo. Portanto, quando aplicado ao meu histograma unidimensional, o DBSCAN pode me dizer se minhas pontuações de anomalia apresentam algum erro externo. Nota: No DBSCAN, um outlier é apenas um ponto que não pertence a nenhum cluster. Durante as operações normais, espero que o algoritmo produza apenas um único cluster (e sem discrepâncias).

ϵ0.1

Depois de conseguir identificar discrepantes, encontrar o limite se resume a regras simples, como:

  • Se o conjunto exibir discrepantes, defina o limite entre o cluster "normal" e "discrepante" para que a margem de ambos seja maximizada.
  • Se o aparelho não exibir discrepâncias, defina o limite de um desvio padrão longe do ponto mais à direita.

De qualquer forma, obrigado por todas as respostas úteis!

cryptron
fonte
@crypton Como o DBSCAN lida com séries autocorrelacionadas. Por exemplo, uma série temporal 1,9,1,9,1,9,5 teria um valor inlier / incomum. Lida com mudanças de nível na série ou com várias tendências possíveis? Como ele lida com dados autoregressivos sazonais, onde, além de junho de cada mês, a série é "regular", e todo mês de junho é "grande". Os "grandes valores de junho" são detectados como discrepantes? Apenas curioso!
IrishStat
2
@IrishStat Basicamente, os clusters do DBSCAN apontam no espaço n-dimensional. Portanto, sua adequação para a análise de séries temporais é muito limitada. Isso funciona para o meu caso especial, pois espero apenas um cluster no meu histograma (unidimensional). Para responder às suas perguntas: Ao usar os parâmetros apropriados, o valor 5 do seu exemplo seria detectado como externo. Suponho que ele possa lidar com tendências, mas nas séries cronológicas '1, 2, 3, 4, 5, 6, 7, 2', o valor 2 não seria considerado um valor externo! Espero que isso dê uma idéia aproximada dos recursos e limitações do DBSCAN.
Cryptron 18/05/11
11
@crypton Obrigado pela informação. Parece-me que quando você se refere a 1 cluster, você quer dizer 1 e apenas 1 média. Mesmo que não haja mudança na autocorrelação média em seus dados, ela é processada como "séries temporais", o que sugere que o DBSCAN pode não ser tão útil quanto você pensa em separar o sinal do ruído, levando a uma identificação eficiente de dados anamólicos.
IrishStat
11
@crypton Parece-me que um cluster implica 1 média em comparação com uma série temporal que dizia 1,1,1,1,2,2,2,2 com alguns pequenos desvios em torno desses valores.
IrishStat
2
@crpton Acho que você está usando uma ferramenta transversal para um problema de série temporal. Publicar os dados reais e vou tentar demonstrar a detecção de anomalias para você com análise de séries temporais
IrishStat