6 pontos por GN⁺ 2025-01-07 | 1 comentários | Compartilhar no WhatsApp
  • Com o aumento de dados de streaming e IoT, a detecção de anomalias em séries temporais tornou-se uma tarefa analítica central para separar o normal do anormal em áreas como cibersegurança, mercados financeiros, aplicação da lei e saúde
  • À medida que a detecção de anomalias tradicional, centrada em estatística, se mistura a abordagens recentes de machine learning, tornou-se necessária uma taxonomia que reflita a ordem temporal e a estrutura das séries temporais
  • Anomalias aparecem não apenas em valores isolados, mas também em subsequências; anomalias pontuais, contextuais e coletivas só podem ser distinguidas considerando também os padrões ao redor e o contexto temporal
  • A maioria dos métodos segue um pipeline de pré-processamento → modelo de detecção → pontuação → pós-processamento, transformando a série temporal em uma matriz por meio de janelas deslizantes e então calculando uma pontuação de anomalia
  • Esta revisão organiza os métodos em baseados em distância, baseados em densidade e baseados em previsão, buscando reduzir a desconexão de comparação entre comunidades de pesquisa que usam diferentes datasets, baselines e métricas de avaliação

Por que a detecção de anomalias em séries temporais é difícil

  • Uma série temporal é uma sequência ordenada de valores reais registrados ao longo do tempo; quando a ordem depende de dimensões como ângulo, massa ou posição, em vez de tempo, também são usados os termos série de dados ou sequência de dados
  • A análise de séries temporais é necessária em várias áreas, como astronomia, biologia, economia, ciência da energia, engenharia, ciências ambientais, medicina, neurociência e ciências sociais
  • A complexidade do processo de geração de dados, as imperfeições dos sistemas de medição e as interações com agentes maliciosos podem criar fenômenos anormais nos dados coletados
  • Com a disseminação de aplicações de IoT, espera-se que aumente o volume de séries temporais geradas e também o número de anomalias a serem encontradas dentro de coleções de séries temporais
  • Anomalia significa um ponto de dados ou grupo de pontos que não se ajusta à normalidade ou ao comportamento esperado com base nos dados observados anteriormente
    • Termos como outlier, novelty, exception, peculiarity, aberration, deviant e discord também são usados
    • Dependendo da aplicação, uma anomalia pode ser ruído a ser removido ou corrigido, ou um evento de interesse a ser analisado posteriormente, como uma falha ou mudança de comportamento

Definições e tipos de anomalia

  • Não existe uma definição única, universal e precisa de anomalia
  • Tradicionalmente, uma anomalia é uma observação que se desvia significativamente da maioria das amostras de uma distribuição e levanta a suspeita de que tenha sido gerada por um mecanismo diferente dos demais dados
  • Se um especialista conhece com precisão o funcionamento do sistema, pode definir a distribuição e os parâmetros do estado normal e marcar como anômalos os pontos que estejam a mais de 3 desvios-padrão da média
  • Em problemas reais, é difícil conhecer com precisão a distribuição geradora dos dados e os vários fatores de saída; além disso, as distribuições em ambientes práticos são complexas, o que dificulta identificar anomalias apenas pela distância em relação à média definida por especialistas
  • O avanço da capacidade computacional possibilitou abordagens que estimam a distribuição a partir de dados brutos e fazem algoritmos detectar anomalias sem conhecimento especializado
    • Esses métodos dependem fortemente da qualidade e do contexto do dataset
  • Três tipos de anomalias em séries temporais

    • Anomalia pontual (point anomaly): um único ponto de dados que se desvia claramente do restante dos dados
    • Anomalia contextual (contextual anomaly): um ponto de dados que está dentro da faixa esperada da distribuição geral, mas se desvia da distribuição esperada em um contexto específico, como uma determinada janela
    • Anomalia coletiva (collective anomaly): uma sequência de pontos que não repete um padrão tipicamente observado
    • Anomalias pontuais e contextuais são classificadas como point-based anomaly, enquanto anomalias coletivas são classificadas como sequence-based anomaly
    • A detecção de sequência inteira é um caso de detecção de anomalias em subsequências que trata a série temporal inteira como um único objeto de avaliação, sendo usada em cenários de refinamento de sensores para encontrar sensores anormais entre sensores normais

Dimensão dos dados e configurações de aprendizado

  • Séries temporais univariadas são sequências ordenadas de valores reais em uma única dimensão, e as anomalias são detectadas com base em uma única característica
  • Séries temporais multivariadas são conjuntos de várias sequências ordenadas de mesmo comprimento, ou sequências ordenadas de vetores reais
    • Em séries multivariadas, valores de características individuais podem parecer normais quando vistos isoladamente, mas a sequência inteira pode ser anormal
    • Uma subsequência pode ser representada como um vetor em séries univariadas e como uma matriz em séries multivariadas, na qual cada linha é uma subsequência de uma dimensão
  • Detecção não supervisionada, semi-supervisionada e supervisionada

    • Métodos não supervisionados são usados quando não há informação especializada sobre quais anomalias devem ser detectadas
    • Podem funcionar sem uma grande coleção de anomalias conhecidas
    • Podem detectar automaticamente comportamentos anormais desconhecidos
    • Podem ser usados para monitoramento do estado de sistemas ou mineração de séries temporais históricas
    • Métodos semi-supervisionados detectam anomalias com base em exemplos de sequências normais fornecidos por especialistas
    • Muitos trabalhos também chamam essa categoria de método não supervisionado
    • Há uma distinção segundo a qual é difícil agrupá-la na mesma categoria de métodos totalmente não supervisionados, pois requer conhecimento prévio sobre exemplos normais
    • Métodos supervisionados correspondem aos casos em que especialistas conhecem exatamente os padrões a detectar e há uma coleção rotulada de séries temporais anômalas
    • É possível prever uma subsequência anormal usando a subsequência anterior à subsequência anômala
    • Essas subsequências precedentes podem ser chamadas de precursores de anomalia (precursor)

Pipeline comum de detecção

  • Algoritmos de detecção de anomalias em séries temporais geralmente seguem o fluxo pré-processamento → método de detecção → pontuação → pós-processamento
  • Na etapa de pré-processamento, aparece com frequência uma abordagem baseada em janelas que transforma a série temporal em uma matriz composta por linhas de segmentos de janelas deslizantes
    • O pré-processamento adicional varia entre extração de características estatísticas, ajuste de modelos de machine learning, construção de redes neurais etc.
  • Na etapa de detecção, aplicam-se métodos como cálculo de distância, ajuste de hiperplano de classificação ou comparação entre subsequências geradas e subsequências originais sobre o dataset processado
  • Na etapa de pontuação, os resultados da detecção são convertidos em uma pontuação de anomalia de tipo real que representa o grau de anormalidade de cada subsequência
    • Essa pontuação é usada para inferir as pontuações de pontos individuais
    • A série temporal de pontuações resultante tem o mesmo comprimento da série temporal original
  • Na etapa de pós-processamento, pontos ou intervalos anômalos são extraídos da série temporal de pontuações de anomalia
    • Normalmente, define-se um limiar e os pontos cuja pontuação excede esse limiar são marcados como anomalias

Taxonomia centrada em processos

  • Métodos de detecção de anomalias em séries temporais são divididos principalmente em baseados em distância, baseados em densidade e baseados em previsão
  • A classificação de segundo nível não é mutuamente exclusiva
    • Um modelo pode comprimir dados de séries temporais e, ao mesmo tempo, usar uma estratégia de identificação baseada em discord
  • Métodos baseados em distância

    • Métodos baseados em distância detectam anomalias comparando valores numéricos de séries temporais brutas por meio de uma medida de distância
    • Em geral, define-se uma distância d(A, B) entre duas sequências de mesmo comprimento; se as duas sequências forem iguais, a distância é 0
    • Distâncias amplamente usadas incluem a distância euclidiana e a distância euclidiana com normalização Z
    • Dynamic Time Warping (DTW) é frequentemente usado para lidar com problemas de desalinhamento
    • As principais subcategorias são baseados em proximidade, baseados em clustering e baseados em discord
      • Baseados em proximidade (proximity-based): julgam se uma subsequência é anômala com base no quanto ela está isolada de seus vizinhos próximos
      • Baseados em clustering (clustering-based): podem usar o grau em que uma subsequência não pertence aos clusters aprendidos, a distância ao cluster, a capacidade do cluster etc. para calcular a pontuação de anomalia
      • Baseados em discord (discord-based): encontram de forma eficiente o discord, isto é, a subsequência cuja distância ao vizinho mais próximo é a maior entre todas as subsequências
  • Métodos baseados em densidade

    • Métodos baseados em densidade não tratam séries temporais apenas como sequências numéricas simples; eles as processam sobre representações capazes de medir a densidade no espaço de pontos ou subsequências
    • As representações variam entre grafos, árvores, histogramas, regras induzidas por gramática etc.
    • As principais subcategorias são baseados em distribuição, baseados em grafos, baseados em árvores e baseados em codificação
      • Baseados em distribuição (distribution-based): criam uma distribuição a partir de características estatísticas de pontos ou subsequências e inferem a anormalidade restaurando modelos estatísticos relacionados por meio da distribuição de características de subsequências normais
      • Baseados em grafos (graph-based): representam séries temporais e subsequências como grafos e detectam anomalias usando características de grafo, como pesos de nós e arestas ou grau dos nós
      • Baseados em árvores (tree-based): dividem pontos ou subsequências com árvores e julgam anomalias usando estatísticas e características como profundidade da árvore
      • Baseados em codificação (encoding-based): interpretam séries temporais como símbolos discretos livres de contexto ou sequências de estados e detectam anomalias usando regras gramaticais dos símbolos extraídos etc.
  • Métodos baseados em previsão

    • Métodos baseados em previsão detectam anomalias prevendo o comportamento normal esperado com base em séries temporais ou subsequências de treinamento
    • Dependem da suposição de que dados normais são fáceis de prever, enquanto anomalias são inesperadas e produzem erros de previsão grandes
    • Essa suposição é válida quando o conjunto de treinamento não contém anomalias ou contém muito poucas
    • Métodos baseados em previsão geralmente são mais adequados em uma configuração semi-supervisionada
    • As principais subcategorias são baseados em forecast e baseados em reconstrução
      • Baseados em forecast (forecasting-based): recebem como entrada pontos ou subsequências anteriores a um determinado instante, preveem o próximo valor ou a próxima subsequência e usam a diferença entre o valor real e o previsto como pontuação de anomalia
      • Baseados em reconstrução (reconstruction-based): comprimem a série temporal ou subsequência de entrada em um espaço latente menor, depois a reconstroem, e usam a diferença entre a entrada e o resultado reconstruído como pontuação de anomalia

Avaliação e a desconexão nas comparações de pesquisa

  • Várias áreas de pesquisa estão, em sua maioria, desconectadas por usarem datasets, baselines e métricas de avaliação diferentes
  • Novos algoritmos muitas vezes são comparados apenas com algumas abordagens pouco representativas, dificultando encontrar a melhor abordagem disponível para casos de uso específicos
  • A taxonomia centrada em processos permite agrupar diversos métodos de detecção em famílias de algoritmos com abordagens semelhantes, facilitando a comparação
  • Estatísticas da literatura mostram tendências nos tipos de abordagem e nas áreas de pesquisa ao longo do tempo
  • Também são organizados benchmarks existentes que podem ser usados como base comum de avaliação, além das vantagens, desvantagens e limitações das métricas de avaliação para detecção de anomalias em séries temporais

1 comentários

 
GN⁺ 2025-01-07
Opiniões no Hacker News
  • Vale conhecer também o UCR Matrix Profile
    O Matrix Profile é uma das ferramentas subestimadas na análise de séries temporais e é muito eficiente. Sem precisar ajustar tanto o tamanho da janela e os limiares como em técnicas tradicionais, ele é bem adequado para encontrar motivos e outliers, e também funciona de forma robusta em várias áreas, como dados de sensores de manufatura, análise de eletrocardiogramas e detecção de terremotos
    https://www.cs.ucr.edu/~eamonn/MatrixProfile.html
    • Não é correto dizer que não é preciso ajustar o tamanho da janela. O Matrix Profile depende muito do tamanho da janela
    • MP é um dos melhores métodos univariados, mas na verdade também é mencionado no texto
    • O texto promocional é mais interessante do que o conteúdo compartilhado, mas o site é bem feio
      Este outro material, feito pelo mesmo grupo de pesquisa, é uma introdução melhor
      https://matrixprofile.org/
    • É tratado na seção 6.2.1
  • Uso a função offset do Prometheus para criar, como recording rule, a média das últimas semanas
    Como o uso do sistema tem uma sazonalidade semanal forte, calculo a média dos valores de uma métrica de 1, 2, 3 e 4 semanas atrás e comparo com o valor atual. Assim dá para definir dinamicamente os limiares de alerta de acordo com dia/noite e dias úteis/fins de semana, comparando com a média do dia da semana ou do horário
    Há um post do GitLab que explica esse método em mais detalhes
    https://about.gitlab.com/blog/2019/07/23/anomaly-detection-u...
    Feriados complicam um pouco as coisas, mas dá para programar isso de fato no Prometheus
    https://promcon.io/2019-munich/slides/improved-alerting-with...
    • Quando o gráfico do Grafana não fica cheio demais, quase sempre adiciono como linha o valor com offset de 7 dias. É muito útil para julgar o que é normal e o que não é
    • O GitLab também tem isto: https://gitlab.com/gitlab-com/gl-infra/tamland
      Não conheço tão bem essa área, mas previsão e detecção de anomalias parecem estar bastante relacionadas. Posso estar enganado
  • Este texto não reflete o trabalho do último ano, aproximadamente
    Por exemplo, modelos baseados em séries temporais como o Granite TS, criado por ex-colegas meus, funcionaram muito bem quando testei
    A sacada sobre como pensar em modelos de detecção de anomalias foi que, no fim, você prevê os próximos N passos e depois verifica se os valores medidos reais são “suficientemente diferentes” do esperado. Em um único sinal isso é fácil de desenhar no quadro branco, mas é bem interessante que também funcione em multivariados
    [1] https://huggingface.co/ibm-granite/granite-timeseries-ttm-r1
    • Tive um momento de percepção parecido ao ler sobre Isolation Forest para detecção de outliers. Se a previsão difere da média, algo está fora do lugar
      [0] https://scikit-learn.org/stable/modules/generated/sklearn.en...
    • Fico curioso para saber como você pensava antes dessa percepção :D
    • Tenho curiosidade se você pode compartilhar o contexto em que um modelo zero-shot é necessário em séries temporais. Ainda não vi uma situação em que não haja nenhum dado histórico para ajustar o modelo
  • No setor ainda inicial de water tech, há dispositivos IoT que monitoram o fluxo de água
    Esses dispositivos conseguem detectar vazamentos e estimar o consumo de água por instalação. A detecção de vazamentos, no fim, é identificar outliers em séries temporais, e a detecção de anomalias baseada em distribuição mencionada no artigo é relevante aqui. Curiosamente, espaços residenciais podem exigir várias distribuições por causa das mudanças de temperatura das tubulações entre estações quentes e frias
  • Em um projeto recente de acompanhamento de desempenho, tentei criar eu mesmo uma detecção de anomalias, e me surpreendi com a quase inexistência de soluções prontas, open source ou pagas, que não fossem básicas demais nem complexas demais. Ainda há muito espaço a explorar nessa área
    • Há bastante material sobre detecção de anomalias com a stack Prometheus e Grafana: https://grafana.com/blog/2024/10/03/how-to-use-prometheus-to.... Mas talvez isso caia no caso “complexo demais” que você mencionou
    • O motivo de não haver soluções prontas é que esse problema ainda é um problema em aberto. Não há uma abordagem geralmente útil
    • Ainda estou testando isto: https://grafana.com/blog/2024/10/03/how-to-use-prometheus-to... Também há um repositório no GitHub
      Até agora não é tão ruim, mas tem falhas bem grandes
    • Durante um estágio, precisei de detecção de anomalias em séries temporais para acompanhar quando máquinas/servidores entravam em degradação de desempenho ou downtime inesperado
      Achei que seria possível com a biblioteca C# da Microsoft, mas ela era realmente uma bagunça. Seria ótimo se alguém tivesse tempo e disposição para implementar uma biblioteca decente
    • Concordo. Na nossa empresa, acabamos criando nosso próprio sistema
      Essa área está no ponto certo para uma ferramenta configurável, SaaS ou open source, com relatórios avançados e mecanismos de alerta. A Datadog também tem um produto razoável, mas é bem caro
  • Nossa startup trabalha com detecção de anomalias em séries temporais para máquinas industriais

Em especial, estamos fazendo com que ele funcione offline por padrão. Integramos IA ao equipamento e não enviamos os dados para servidores de terceiros, nem mesmo para os nossos. Isso porque acreditamos que há muitas oportunidades com clientes que são perdidas por não ser possível ter conexão online. Se você procura uma solução de monitoramento de máquinas industriais ou tem interesse em software industrial sensível a segurança, gostaríamos de conversar. Também estamos desenvolvendo um historiador de dados: www.sentineldevices.com

  • Tenho apego por essa área. Há quase 10 anos, no mestrado, trabalhei em um tema próximo a esse, previsão de falhas online: https://estudogeral.uc.pt/handle/10316/99218
    Criei um sistema que detectava e reagia antes que exceções ocorressem; por exemplo, desacelerar preventivamente a taxa de requisições antes que isso levasse ao esgotamento do banco de dados, esperando que isso fosse melhor do que simplesmente deixar a exceção acontecer
    Na época, senti que havia muito a fazer nessa área, e tenho um pouco de pena de não ter voltado a trabalhar nisso
  • A parte central é que fenômenos anormais surgem da combinação entre a complexidade do processo de geração de dados, as imperfeições dos sistemas de medição e a interação com agentes mal-intencionados; em muitos casos, isso é difícil de lidar
    Outro problema central é definir de forma rigorosa e precisa o que é, e o que não é, uma anomalia
  • A detecção de anomalias pode agregar valor a praticamente todos os setores
    Mesmo que não seja o produto principal, ela quase sempre ajuda na otimização das operações. Na manufatura, visão computacional pode separar itens anômalos em uma linha de montagem; em operações, acelerômetros/sensores de temperatura e análise de frequência podem detectar sinais de falha para manutenção preditiva. Em vendas, a análise de séries temporais de números ou de solicitações ao suporte pode mostrar sinais de alta/queda em fluxo de caixa, satisfação do cliente etc.
  • Vale procurar por Eamonn Keogh. Ele fez muitos trabalhos interessantes na área de detecção de anomalias em séries temporais