Deteção de anomalias de séries de tempo

Importante

O suporte para o Estúdio de ML (clássico) terminará a 31 de agosto de 2024. Recomendamos a transição para o Azure Machine Learning até essa data.

A partir de 1 de dezembro de 2021, não poderá criar novos recursos do Estúdio de ML (clássico). Até 31 de agosto de 2024, pode continuar a utilizar os recursos existentes do Estúdio de ML (clássico).

A documentação do Estúdio de ML (clássico) está a ser descontinuada e poderá não ser atualizada no futuro.

Deteta anomalias nos dados da série de tempo de entrada.

Categoria: Séries Temporências

Nota

Aplica-se a: Machine Learning Studio (clássico) apenas

Módulos semelhantes de arrasto e queda estão disponíveis em Azure Machine Learning designer.

Visão geral do módulo

Este artigo descreve como usar o módulo de deteção de anomalias de séries temporais em Machine Learning Studio (clássico), para detetar anomalias nos dados da série de tempo. O módulo aprende as características normais de funcionamento de uma série de tempo que fornece como entrada, e utiliza essa informação para detetar desvios em termos do padrão normal. O módulo pode detetar alterações na tendência geral e alterações na magnitude ou gama de valores.

A deteção de alterações nos dados das séries de tempo tem aplicações amplas. Por exemplo, pode usá-lo para monitorização quase em tempo real de sensores, redes ou utilização de recursos. Ao rastrear erros de serviço, utilização de serviços e outros KPI's, pode responder rapidamente a anomalias críticas. Outras aplicações incluem cuidados de saúde e finanças.

Métodos de deteção de anomalias

A deteção de anomalias é o problema de encontrar padrões em dados que não se couem a uma modelo de comportamento "normal". Abordagens típicas para detetar tais alterações ou usam limiares simples computorizados humanos, ou desvios médios e padrão para determinar quando os dados se desviam significativamente da média.

No entanto, tais abordagens simples não são facilmente adaptadas aos dados da série de tempo:

  • Um grande número de anomalias falsas são geradas

  • Os métodos não são aplicáveis à alteração dos valores dos dados

  • Não é fácil escalar para grandes séries de tempo

Este módulo fornece dois métodos adicionais para avaliar a variação de uma tendência da série de tempo:

  • Medição da magnitude das alterações para cima e para baixo

    Por exemplo, o número de pedidos num serviço web pode ser melhor durante algum tempo e depois aumentar drasticamente.

  • Medição da direção e duração das tendências: alterações positivas vs. negativas

    Por exemplo, uma tendência persistente de subida no comprimento de uma fila de serviço pode indicar um problema subjacente. Embora a tendência global esteja a aumentar constantemente e, portanto, possa ser considerada estável, uma mudança de inclinação poderia ser sinalizada como uma anomalia. Inversamente, se estiver a monitorizar o uso da memória de um servidor, uma diminuição constante do tamanho da memória livre pode indicar um problema.

Exemplos de padrões anómalos nas séries temporais

Alterações de nível ascendente e descendente

Por exemplo, assuma que tem estado a monitorizar o número de pedidos por dia para um serviço web durante um período de tempo, e o número de pedidos parece permanecer dentro de um determinado intervalo. No entanto, após uma atualização ao serviço web, o número de pedidos para esse serviço web muda. A nova tendência pode ser superior ou inferior à tendência original; tanto para cima como para baixo podem ser detetados picos.

upward and downward level changes

Alterações de tendências positivas ou negativas

Por exemplo, assuma que está a monitorizar o comprimento de uma fila num site de suporte de serviço. Uma tendência ascendente persistente pode indicar um problema de serviço subjacente.

Noutros casos, uma tendência negativa persistente pode ser a anomalia. Por exemplo, se estiver a monitorizar o uso da memória num servidor, quando o tamanho da memória livre encolhe, pode indicar uma possível fuga de memória.

positive or negative trend change

Recursos

Para obter mais informações sobre a investigação subjacente a esta abordagem, consulte estes artigos:

Como configurar a deteção de anomalias em séries de tempo

  1. Adicione o módulo de deteção de anomalias de série de tempo à sua experiência e conecte o conjunto de dados que contém as séries horárias.

    O conjunto de dados utilizado como entrada deve conter pelo menos uma coluna contendo valores de datatósias em formato de cadeia, e outra coluna que contenha os valores de tendência, num formato numérico. Outras colunas são ignoradas.

    Como cada linha corresponde a um ponto de dados na série de tempo que representa o valor nessa altura, os valores de tempo devem ser únicos.

  2. Coluna de Dados: Selecione uma única coluna no seu conjunto de dados que contenha valores de dados numéricos. Estes valores são os pontos de dados na tendência que pretende modelo, como os totais populacionais ao longo do tempo, os custos por mês ou as temperaturas ao longo de algum período.

  3. Coluna de tempo: Selecione uma única coluna no conjunto de dados que contenha o valor da série de tempo associada.

    A coluna deve conter valores de datas válidos, o que significa que todas as datas devem estar dentro do intervalo de datas suportadas pelo .NET Framework.

    A coluna 'Hora' deve utilizar o tipo de dados DateTime. Se as suas datas estiverem em formato de cadeia, pode lanhá-las utilizando o módulo De Transformação SQL Ou convertê-las utilizando o módulo Execut R Script. Se as suas datas forem representadas como número inteiros, também deve utilizar uma função de conversão de data adequada para representar os valores utilizando um formato de data válido.

    Por exemplo, a seguinte declaração SQL altera um valor de data de série Excel para um formato de data:

     SELECT CAST([SerialDate]  AS SmallDateTime) as [NewValidDate] from t1;  
    

    Depois de os valores da data estiverem no formato correto, utilize o módulo editar metadados para definir o tipo de coluna para DateTime.

  4. Tipo Martingale: Selecione a função martingale para usar.

    • PowerAvg. Esta opção é uma implementação marginalizada da energia martingale.

      O valor predefinido é PowerAvg sem parâmetros adicionais. Esta opção dá um detetor de anomalias mais estável e deve ser adequado para a maioria das necessidades.

    • O poder. Uma implementação não marginalizada da energia martingale.

      A opção Power fornece aos utilizadores a opção de fornecer um valor entre 0 e 1 para o parâmetro Epsilon controlar a sensibilidade do detetor. Geralmente, um valor epsilon mais elevado significa maior sensibilidade a anomalias, mas menos certeza.

    Para uma definição de martingales e os métodos utilizados neste módulo, consulte: Deteção de anomalias utilizando machine learning para detetar anomalias em dados da série temporal

  5. Tipo de função de estranheza: Esta opção é utilizada para diferentes tipos específicos de anomalias. Três opções são apoiadas, que não requerem mais parâmetros:

    • RangePercentile.

      Este é o padrão, e é usado principalmente para detetar alterações de nível.

    • SlowPosTrend. Escolha esta opção para detetar alterações de tendência positivas.

    • SlowNegTrend. Escolha esta opção para detetar alterações de tendência negativas.

  6. Comprimento dos Valores de Martingale e Estranheza: Especifique o tamanho da janela de história, que é usada para calcular valores de martingale ao longo da história do retrocesso.

    O valor predefinido é de 500, mas pode especificar qualquer número inteiro entre 0 e 5000. Para séries de tempo grande, o valor predefinido deve funcionar bem. Para séries de tempo mais pequenas, pode tentar estimar o valor para o comprimento esperado do comportamento anormal.

    Recomendamos que desa um determinado valor a estes dois parâmetros.

  7. Comprimento dos Valores de Estranheza: Especifique o comprimento da janela de história utilizada para calcular a estranheza em cada ponto de dados.

    O valor predefinido é de 500, mas pode especificar qualquer número inteiro entre 0 e 5000.

    Este parâmetro tem as mesmas restrições que o Comprimento de Martingale. Ou seja, deve definir o valor para o número estimado de pontos de dados que são necessários para aprender o comportamento "normal".

    O padrão de 500 funciona bem para a maioria dos casos, mas se a escala sobre a qual a "normalidade" é medida varia, pode ser benéfico fazer do Comprimento dos Valores da Estranheza um valor maior do que o Comprimento de Martingale.

    Por exemplo, se estiver a monitorizar erros e assumir que os pontos de dados são capturados em intervalos de 15 minutos, o tempo necessário para aprender a tendência normal pode variar muito de mês para mês.

    Em geral, a utilização de um tamanho de janela maior leva a um desempenho mais lento, porque o módulo tem de aprender sobre um conjunto de dados maior.

    Recomendamos que desa um determinado valor a estes dois parâmetros.

  8. Ponto de alerta: Especifique um valor acima do qual a pontuação da anomalia gera um alerta.

    O valor predefinido é de 3,25, o que significa que um alerta é gerado para cada linha contendo uma pontuação de 3,25 ou mais. Y

    Pode especificar qualquer número de ponto flutuante entre 0 e 100. No entanto, existe uma compensação entre a sensibilidade e a confiança na escolha do limiar:

    • Um limiar mais baixo tornaria o detetor mais sensível a anomalias e geraria mais alertas.

    • Um limiar inferior pode resultar em alterações normais que sejam mal classificadas como anomalias.

  9. Execute a experimentação.

    Note que não precisa de treinar este modelo separadamente; o algoritmo aprende o padrão a partir dos dados que fornece como entrada para este módulo.

Resultados

Quando o treino estiver completo, o módulo produz uma série de tempos com o mesmo comprimento que a série de tempo de entrada; no entanto, duas colunas são adicionadas para indicar valores que são potencialmente anómalos.

  • Pontuação de Anomalia: A primeira coluna contém uma pontuação que representa a probabilidade de o valor da série de tempo ser anómalo.

  • Alerta: Esta coluna contém uma bandeira com um valor de 0 ou 1, onde 1 significa que foi detetada uma anomalia. Pode definir o limiar para gerar o alerta com base na coluna de pontuação, mas definir o parâmetro 'Ponto de Alerta '.

Exemplos

Os exemplos a seguir demonstram como definir a função martingale para detetar anomalias e como interpretar os resultados.

Detetar alterações de nível

Para ilustrar o impacto de diferentes configurações, o conjunto de dados de exemplo utilizado neste exemplo consiste em 8870 pontos de dados, com três alterações de nível. Com base nestes dados, criámos dois modelos, utilizando os seguintes parâmetros.

  • Tipo Martingale: PowerAvg

  • Tipo de função de estranheza: RangePercentile

  • Comprimento de Martingale = 50

  • Comprimento dos Valores de Estranheza = 50

O modelo foi treinado sobre os dados de entrada, mas foi aplicado um valor diferente para o Threshold de Alerta. Os resultados da previsão estão traçados nas seguintes imagens para o Model 1 e Model 2. Nestes gráficos, as linhas azuis representam os valores dos dados, e as linhas vermelhas representam os alertas levantados para uma anomalia.

Limiar de alerta de 0.9

level change with alert of 0.9

Neste modelo, o valor do limiar é menor, pelo que os alertas são levantados (anomalias detetadas) mesmo quando as alterações são momentâneas.

Dependendo do tipo de séries de tempo que está a monitorizar, alguns destes alertas podem ser considerados falsos alertas. No entanto, um limiar mais baixo pode ser preferível se não puder ignorar qualquer anomalia.

Limiar de alerta de 3.25

level change with alert of 3.25

Neste modelo, o limiar de alerta foi muito maior e, como resultado, o modelo deteta apenas as alterações que persistem mais tempo. Um limiar mais elevado de alerta pode ser mais desejável num cenário em que só se queira apanhar mudanças mais duradouras.

Detetar alterações positivas de inclinação

Para ilustrar esta opção de deteção de anomalias, usamos um conjunto de dados de exemplo contendo 300 pontos de dados. Todos os pontos constam de uma tendência positiva em termos globais, com duas anomalias.

Mais uma vez, criámos dois modelos usando parâmetros idênticos, exceto para o valor do limiar de alerta.

  • Tipo Martingale: PowerAvg

  • Tipo de função de estranheza: SlowPosTrend

  • Comprimento de Martingale = 50

  • Comprimento dos Valores de Estranheza = 50

Nestes gráficos, as linhas azuis representam valores de dados e as linhas vermelhas representam alertas levantados para uma anomalia.

Limiar de alerta de 4.25

positive trend with alert of 4.25

Limiar de alerta de 6.0

positive trend with alert threshold of 6.0

Recomendamos que experimente diferentes valores de limiar de alerta para encontrar o nível de sensibilidade adequado para o seu cenário de deteção de anomalias.

Entradas esperadas

Nome Tipo Description
Dados de entrada que contenham selos e valores temporais Tabela de Dados Dados de entrada que contenham selos e valores de data.

Parâmetros do módulo

Nome Tipo Intervalo Opcional Predefinição Description
Coluna de Valor Seleção de Colunas Necessário Escolha a coluna que contém as séries de tempo para rastrear
Tamanho da janela Número inteiro Necessário Especificar um valor que controla o tamanho da janela de análise
Limite Float Opcional Especifique um valor que determine o limiar na pontuação para identificar uma anomalia

Saídas

Nome Tipo Description
Séries tempordificadas com pontuações de anomalia Tabela de Dados Conjunto de dados com intervalos de anomalia.

Ver também

Deteção de Anomalias
Máquina de vetor de suporte de uma classe
Deteção de Anomalias Baseada em PCA