Melhores práticas para usar a API univariada do Detector de Anomalias
Importante
A partir de 20 de setembro de 2023, você não poderá criar novos recursos do Detector de Anomalias. O serviço Detector de Anomalias será desativado em 01º de outubro de 2026.
A API do Detector de Anomalias é um serviço de detecção de anomalias sem estado. A precisão e o desempenho de seus resultados podem ser afetados por:
- Como os dados de série temporal são preparados.
- Os parâmetros da API do Detector de Anomalias que foram usados.
- O número de pontos de dados em sua solicitação de API.
Use este artigo para saber mais sobre as melhores práticas para usar a API para obter os melhores resultados para seus dados.
Quando usar a detecção de anomalias de ponto de lote (inteira) ou mais recente (última)
O ponto de extremidade de detecção em lote da API do Detector de Anomalias permite que você detecte anomalias por meio de todos os dados da série temporal. Nesse modo de detecção, um único modelo estatístico é criado e aplicado a cada ponto no conjunto de dados. Se sua série temporal tiver as características abaixo, recomendamos usar a detecção em lote para visualizar seus dados em uma chamada à API.
- Uma série temporal sazonal, com anomalias ocasionais.
- Uma série temporal de tendência simples, com picos/quedas ocasionais.
Não recomendamos usar a detecção de anomalias em lote para monitoramento de dados em tempo real, ou usá-la em dados de séries temporais que não têm as características acima.
A detecção em lote cria e aplica apenas um modelo, a detecção para cada ponto é feita no contexto de toda a série. Se os dados de séries temporais aumentarem e caírem sem sazonalidade, alguns pontos de alteração (quedas e picos nos dados) poderão ser perdidos pelo modelo. Da mesma forma, alguns pontos de alteração menos significativos do que os subsequentes no conjunto de dados podem não ser contados como significativos o suficiente para serem incorporados ao modelo.
A detecção em lote é mais lenta do que detectar o status da anomalia do ponto mais recente ao fazer o monitoramento de dados em tempo real, devido ao número de pontos que estão sendo analisados.
Para o monitoramento de dados em tempo real, é recomendável detectar o status da anomalia apenas do seu ponto de dados mais recente. Aplicando continuamente a detecção de ponto mais recente, o monitoramento de dados de streaming pode ser feito com mais eficiência e precisão.
O exemplo a seguir descreve o impacto que esses modos de detecção podem ter no desempenho. A primeira imagem mostra o resultado da detecção contínua do ponto mais recente do status da anomalia em 28 pontos de dados vistos anteriormente. Os pontos vermelhos são anomalias.
Abaixo está o mesmo conjunto de dados usando a detecção de anomalias do lote. O modelo criado para a operação ignorou várias anomalias, marcadas por retângulos.
Preparação de dados
A API do Detector de Anomalias aceita dados de série temporal formatados em um objeto de solicitação JSON. Uma série temporal pode ser qualquer dado numérico registrado ao longo do tempo em ordem sequencial. Você pode enviar o Windows dos dados de série temporal para o ponto de extremidade da API do Detector de Anomalias para melhorar o desempenho da API. O número mínimo de pontos de dados que você pode enviar é 12, e o máximo é de 8640 pontos. Granularidade é definida como a taxa na qual os dados são amostrados.
Os pontos de dados enviados para a API do Detector de Anomalias devem ter um carimbo de data/hora UTC (Tempo Universal Coordenado) válido e um valor numérico.
{
"granularity": "daily",
"series": [
{
"timestamp": "2018-03-01T00:00:00Z",
"value": 32858923
},
{
"timestamp": "2018-03-02T00:00:00Z",
"value": 29615278
},
]
}
Se os dados forem amostrados em um intervalo de tempo fora do padrão, você poderá especificá-los adicionando o atributo customInterval
em sua solicitação. Por exemplo, se sua série for amostrada a cada 5 minutos, você poderá adicionar o seguinte à sua solicitação JSON:
{
"granularity" : "minutely",
"customInterval" : 5
}
Pontos de dados ausentes
Os pontos de dados ausentes são comuns em conjuntos de dados de série temporal distribuídos uniformemente, especialmente aqueles com uma granularidade fina (Um pequeno intervalo de amostragem. Por exemplo, dados amostrados sempre a cada alguns minutos). A falta de menos de 10% do número esperado de pontos em seus dados não deve ter um impacto negativo nos resultados da detecção. Considere preencher lacunas em seus dados com base em suas características, como substituir pontos de dados de um período anterior, interpolação linear ou uma média móvel.
Agregar dados distribuídos
A API do Detector de Anomalias funciona melhor em uma série temporal distribuída uniformemente. Se os dados forem distribuídos aleatoriamente, você deverá agregá-los com uma unidade de tempo, como por minuto, por hora ou por dia.
Detecção de anomalias em dados com padrões sazonais
Se você sabe que os dados de série temporal possuem um padrão sazonal (que ocorre em intervalos regulares), você pode melhorar a precisão e o tempo de resposta da API.
A especificação de um period
quando você constrói sua solicitação JSON, pode reduzir a latência de detecção de anomalias em até 50%. period
é um inteiro que especifica aproximadamente quantos pontos de dados a série temporal leva para repetir um padrão. Por exemplo, uma série temporal com um ponto de dados por dia teria period
como 7
, e uma série temporal com um ponto por hora (com o mesmo padrão semanal) teria period
como 7*24
. Se você não tiver certeza dos padrões de seus dados, você não precisará especificar esse parâmetro.
Para obter melhores resultados, forneça quatro period
de pontos de dados, mais um adicional. Por exemplo, dados por hora com um padrão semanal, conforme descrito acima, devem fornecer 673 pontos de dados no corpo da solicitação (7 * 24 * 4 + 1
).
Dados de amostragem para monitoramento em tempo real
Se os dados de streaming forem amostrados em um intervalo curto (por exemplo, segundos ou minutos), o envio do número recomendado de pontos de dados poderá exceder o número máximo permitido da API do Detector de Anomalias (8640 pontos de dados). Se os dados mostrarem um padrão sazonal estável, considere enviar um exemplo dos dados de série temporal em um intervalo de tempo maior, como horas. A amostragem dos dados dessa maneira também pode melhorar notavelmente o tempo de resposta da API.