Share via


Detecção de anomalias de série temporal

Importante

O suporte para o Machine Learning Studio (clássico) terminará em 31 de agosto de 2024. É recomendável fazer a transição para o Azure Machine Learning até essa data.

A partir de 1º de dezembro de 2021, você não poderá criar recursos do Machine Learning Studio (clássico). Até 31 de agosto de 2024, você pode continuar usando os recursos existentes do Machine Learning Studio (clássico).

A documentação do ML Studio (clássico) está sendo desativada e pode não ser atualizada no futuro.

Detecta anomalias nos dados de série temporal de entrada.

Categoria: Série Temporal

Observação

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

Módulos semelhantes do tipo "arrastar e soltar" estão disponíveis no designer do Azure Machine Learning.

Visão geral do módulo

Este artigo descreve como usar o módulo detecção de anomalias de série temporal no Machine Learning Studio (clássico), para detectar anomalias em dados de série temporal. O módulo aprende as características operacionais normais de uma série temporal que você fornece como entrada e usa essas informações para detectar desvios do padrão normal. O módulo pode detectar alterações na tendência geral e alterações na magnitude ou intervalo de valores.

A detecção de alterações nos dados de série temporal tem aplicativos amplos. Por exemplo, você pode usá-lo para monitoramento quase em tempo real de sensores, redes ou uso de recursos. Ao acompanhar erros de serviço, uso do serviço e outros KPIs, você pode responder rapidamente a anomalias críticas. Outros aplicativos incluem saúde e finanças.

Métodos de detecção de anomalias

A detecção de anomalias é o problema de localizar padrões em dados que não estão em conformidade com um modelo de comportamento "normal". Abordagens típicas para detectar essas alterações usam limites simples de computação humana ou desvio médio e padrão para determinar quando os dados se desviam significativamente da média.

No entanto, essas abordagens simples não são facilmente adaptadas aos dados de série temporal:

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

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

  • Não é possível dimensionar facilmente para grandes séries temporais

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

  • Medindo a magnitude das alterações para cima e para baixo

    Por exemplo, o número de solicitações em um serviço Web pode ser melhor possível por algum tempo e aumentar drasticamente.

  • Medindo a direção e a duração das tendências: alterações positivas versus negativas

    Por exemplo, uma tendência de alta persistente no comprimento de uma fila de serviço pode indicar um problema subjacente. Embora a tendência geral esteja aumentando consistentemente e, portanto, possa ser considerada estável, uma alteração na inclinação pode ser sinalizada como uma anomalia. Por outro lado, se você estiver monitorando o uso de memória de um servidor, uma diminuição constante no tamanho da memória livre poderá indicar um problema.

Exemplos de padrões anômalos em série temporal

Alterações de nível para cima e para baixo

Por exemplo, suponha que você tenha monitorado o número de solicitações por dia para um serviço Web durante um período de tempo, e o número de solicitações parece permanecer dentro de um determinado intervalo. No entanto, após uma atualização para o serviço Web, o número de solicitações para esse serviço Web é alterado. A nova tendência pode ser maior ou menor do que a tendência original; picos para cima e para baixo podem ser detectados.

upward and downward level changes

Alterações de tendências positivas ou negativas

Por exemplo, suponha que você esteja monitorando o comprimento de uma fila em um site de suporte de serviço. Uma tendência de alta persistente pode indicar um problema de serviço subjacente.

Em outros casos, uma tendência negativa persistente pode ser a anomalia. Por exemplo, se você estiver monitorando o uso de memória em um servidor, quando o tamanho da memória livre diminuir, ele poderá indicar um potencial vazamento de memória.

positive or negative trend change

Recursos

Para obter mais informações sobre a pesquisa subjacente a essa abordagem, consulte estes artigos:

Como configurar a detecção de anomalias de série temporal

  1. Adicione o módulo detecção de anomalias de série temporal ao experimento e conecte o conjunto de dados que contém a série temporal.

    O conjunto de dados usado como entrada deve conter pelo menos uma coluna contendo valores datetime no formato de cadeia de caracteres e outra coluna que contém os valores de tendência, em um formato numérico. Outras colunas são ignoradas.

    Como cada linha corresponde a um ponto de dados na série temporal que representa o valor nesse momento, os valores de hora devem ser exclusivos.

  2. Coluna de Dados: selecione uma única coluna no conjunto de dados que contém valores de dados numéricos. Esses valores são os pontos de dados na tendência que você deseja modelar, como totais de população ao longo do tempo, custos por mês ou temperaturas durante algum período.

  3. Coluna de Tempo: selecione uma única coluna no conjunto de dados que contém o valor de série temporal associado.

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

    A coluna Time deve usar o tipo de dados DateTime. Se as datas estiverem em formato de cadeia de caracteres, você poderá convertê-las usando o módulo Aplicar SQL Transformação ou convertê-las usando o módulo Executar Script R. Se suas datas forem representadas como inteiros, você também deverá usar uma função de conversão de datetime apropriada para representar os valores usando um formato de datetime válido.

    Por exemplo, a seguinte instrução SQL altera um valor de data serial Excel para um formato datetime:

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

    Depois que os valores de data estiverem no formato correto, use o módulo Editar Metadados para definir o tipo de coluna como DateTime.

  4. Tipo Martingale: selecione a função martingale a ser usada.

    • PowerAvg. Essa opção é uma implementação marginalizada do martingale de poder.

      O valor padrão é PowerAvg sem parâmetros adicionais. Essa opção fornece um detector de anomalias mais estável e deve ser adequada para a maioria das necessidades.

    • Energia. Uma implementação não marginalizada do martingale de poder.

      A opção Power fornece aos usuários a opção de fornecer um valor entre 0 e 1 para o parâmetro Epsilon controlar a confidencialidade do detector. Em geral, um valor de epsilon mais alto significa maior sensibilidade a anomalias, mas menos certeza.

    Para obter uma definição de martingales e os métodos usados neste módulo, consulte: Detecção de anomalias usando o aprendizado de máquina para detectar anormalidades em dados de série temporal

  5. Tipo de Função de Estranheza: essa opção é usada para tipos diferentes específicos de anomalias. Há suporte para três opções, que não exigem mais parâmetros:

    • RangePercentile.

      Esse é o padrão e é usado principalmente para detectar alterações de nível.

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

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

  6. Comprimento dos valores Martingale e Strangeness: especifique o tamanho da janela de histórico, que é usada para calcular valores de martingale ao longo do histórico de pesquisa.

    O valor padrão é 500, mas você pode especificar qualquer inteiro entre 0 e 5000. Para séries temporais grandes, o valor padrão deve funcionar bem. Para séries temporais menores, você pode tentar estimar o valor para o comprimento esperado do comportamento anormal.

    Recomendamos que você geralmente defina esses dois parâmetros com o mesmo valor.

  7. Comprimento dos Valores de Estranheza: especifique o comprimento da janela de histórico usada para calcular a estranheza em cada ponto de dados.

    O valor padrão é 500, mas você pode especificar qualquer inteiro entre 0 e 5000.

    Esse parâmetro tem as mesmas restrições que o comprimento de Martingale. Ou seja, você deve definir o valor para o número estimado de pontos de dados 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 tornar os Valores de Comprimento da Estranheza um valor maior que o Comprimento de Martingale.

    Por exemplo, se você estiver monitorando 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, o uso de um tamanho de janela maior leva a um desempenho mais lento, pois o módulo precisa aprender sobre um conjunto de dados maior.

    Recomendamos que você geralmente defina esses dois parâmetros com o mesmo valor.

  8. Limite de Alerta: especifique um valor acima do qual a pontuação de anomalias gera um alerta.

    O valor padrão é 3,25, o que significa que um alerta é gerado para cada linha que contém uma pontuação de 3,25 ou mais. S

    Você pode especificar qualquer número de ponto flutuante entre 0 e 100. No entanto, há uma compensação entre confidencialidade e confiança na escolha do limite:

    • Um limite inferior tornaria o detector mais sensível a anomalias e geraria mais alertas.

    • Um limite inferior pode resultar em alterações normais sendo classificadas incorretamente como anomalias.

  9. Execute o experimento.

    Observe que você não precisa treinar esse modelo separadamente; o algoritmo aprende o padrão com base nos dados que você fornece como entrada para este módulo.

Resultados

Quando o treinamento é concluído, o módulo gera uma série temporal que tem o mesmo comprimento que a série temporal de entrada; no entanto, duas colunas são adicionadas para indicar valores potencialmente anômalos.

  • Pontuação de anomalias: a primeira coluna contém uma pontuação que representa a probabilidade de que o valor da série temporal seja anômômal.

  • Alerta: esta coluna contém um sinalizador com um valor de 0 ou 1, em que 1 significa que uma anomalia foi detectada. Você pode definir o limite para gerar o alerta com base na coluna de pontuação, mas definindo o parâmetro Limite de Alerta .

Exemplos

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

Detectar alterações de nível

Para ilustrar o impacto de diferentes configurações, o conjunto de dados de exemplo usado neste exemplo consiste em 8.870 pontos de dados, com alterações de três níveis. Com base nesses dados, criamos dois modelos usando os parâmetros a seguir.

  • Tipo Martingale: PowerAvg

  • Tipo de função strangeness: RangePercentile

  • Comprimento de Martingale = 50

  • Comprimento dos valores de estranheza = 50

O modelo foi treinado nos dados de entrada, mas um valor diferente foi aplicado ao Limite de Alerta. Os resultados da previsão são plotados nas imagens a seguir para o Modelo 1 e o Modelo 2. Nesses grafos, as linhas azuis representam os valores de dados e as linhas vermelhas representam os alertas gerados para uma anomalia.

Limite de alerta de 0,9

level change with alert of 0.9

Nesse modelo, o valor limite é menor e, portanto, os alertas são gerados (anomalias detectadas) mesmo quando as alterações são momentâneas.

Dependendo do tipo de série temporal que você está monitorando, alguns desses alertas podem ser considerados alertas falsos. No entanto, um limite inferior pode ser preferível se você não puder ignorar qualquer anomalia.

Limite de alerta de 3,25

level change with alert of 3.25

Nesse modelo, o limite de alerta foi muito maior e, como resultado, o modelo detecta apenas as alterações que persistem por mais tempo. Um limite mais alto para alertas pode ser mais desejável em um cenário em que você só deseja capturar alterações mais duradouras.

Detectar alterações de inclinação positivas

Para ilustrar essa opção para detecção de anomalias, usamos um conjunto de dados de exemplo contendo 300 pontos de dados. Todos os pontos formaram uma tendência positiva no geral, com duas anomalias.

Novamente, criamos dois modelos usando parâmetros idênticos, exceto pelo valor do limite de alerta.

  • Tipo Martingale: PowerAvg

  • Tipo de função strangeness: SlowPosTrend

  • Comprimento de Martingale = 50

  • Comprimento dos valores de estranheza = 50

Nesses grafos, as linhas azuis representam valores de dados e as linhas vermelhas representam alertas gerados para uma anomalia.

Limite de Alerta de 4.25

positive trend with alert of 4.25

Limite de Alerta de 6.0

positive trend with alert threshold of 6.0

Recomendamos que você experimente valores de limite de alerta diferentes para encontrar o nível apropriado de confidencialidade para o cenário de detecção de anomalias.

Entradas esperadas

Nome Tipo Descrição
Dados de entrada que contêm carimbos de data/hora e valores Tabela de Dados Dados de entrada que contêm carimbos e valores de data e hora.

Parâmetros do módulo

Nome Tipo Intervalo Opcional Padrão Descrição
Coluna Value ColumnSelection Obrigatório Escolha a coluna que contém a série temporal a ser rastreada
Tamanho da janela Integer Obrigatório Especificar um valor que controla o tamanho da janela de análise
Limite Float Opcional Especificar um valor que determina o limite na pontuação para identificar uma anomalia

Saídas

Nome Tipo Descrição
Série temporal anotada com pontuações de anomalias Tabela de Dados Conjunto de dados com intervalos de anomalias.

Confira também

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