Detecção de anomalias em séries temporais


8

Sou iniciante no aprendizado de máquina (terminei o curso de Ng), estou usando o scikit-learn em python. Quero encontrar a melhor maneira de detectar anomalias em nosso sistema.

Temos eventos em andamento que ocorrem em um cronograma (a cada poucos minutos / hora) e quero detectar quando algo anormal acontece. Dados de exemplo:

ID | epoch-time | duration (Sec) | status | is_manual

0400 | 1488801454  | 500 | completed | 1

0401 | 1488805055  | 500 | completed | 1

0402 |  1488812254  | 40000 | failed | 1

6831 | 1488805050  | 200 | failed | 0

.

... (Millions of examples)

.

0014 |  1488805055 | 1200 | completed | 0

por exemplo, o ID do evento 0400 ocorre uma vez a cada hora. Eu quero dizer quando não funciona.

O que pretendo fazer é alimentar o algoritmo com todos os eventos dos últimos 10 minutos.

Principais perguntas: Como tratar a coluna ID? Qual é a melhor abordagem que devo adotar?


Anomalia é o mesmo que um outlier? Nas estatísticas, usamos o termo outlier, enquanto na ciência espacial eles chamam de anomalia.
Michael R. Chernick

Diferença entre outliner e anomalia: stats.stackexchange.com/questions/189664/…
XOmri

Você pode elaborar um pouco mais sobre o que é um evento nesse caso? Quantos eventos únicos existem aproximadamente nos seus dados? Além disso, você deu um exemplo em que o comportamento 'anormal' foi o evento com falha. Existem outros casos que você consideraria anormais?
deemel

@ Rickyfox Por evento, quero dizer uma linha ou entrada. Foi errado usar o mesmo ID para eventos diferentes, e eu o corrigi na pergunta. Anormal seria o caso em que um evento não é consistente com os eventos anteriores que se correlacionam com base no horário. Por exemplo: se a cada 30 segundos, um evento ocorrendo com os mesmos parâmetros (duração: 500, concluída, 1), se não houver evento após 30 segundos, isso é anormal. Ou se falhar e não for concluído: também é uma anomalia.
XOmri 21/0318

Não vejo como você precisa de ML aqui. Parece que uma consulta condicional simples deve funcionar muito bem
Aksakal

Respostas:


1

Eu achei este artigo muito útil no meu caso:

https://mapr.com/blog/deep-learning-tensorflow/

Usando essa estrutura básica da RNN, pude prever o resultado do próximo passo. Ao centralizar todos os eventos no minuto mais próximo, a rede conseguiu reconhecer o padrão que se correlaciona na linha do tempo.


-4

Existem várias maneiras pelas quais você pode resolver isso. Antes de começar a projetar qualquer modelo, padronize seus dados. Seus dados parecem não marcados; portanto, inicialmente, o que você pode fazer é realizar uma visualização t-SNE, fornecendo muitas informações sobre seus dados. Com base no resultado, você pode desenvolver modelos mais sensíveis que podem agrupar as amostras em amostras e anomalias normais. Mais sobre o t-SNE aqui


2
Bem-vindo ao stats.SE! O centro de ajuda tem algumas informações boas sobre como fazer / responder perguntas. Respostas detalhadas tendem a ser melhores. Você pode elaborar um pouco mais? Por exemplo, como o t-SNE seria usado com dados de séries temporais e entradas discretas de 'id' e como seria usado para ajudar a projetar um sistema de detecção de anomalias?
User20160

Estou procurando visualizar os dados com t-SNE de acordo com sua sugestão, mas não tenho certeza de quanto chegarei a isso. Temos vários outros recursos a serem adicionados que eu não mencionei, vou editar e adicionar ao post. Eu ainda não consigo descobrir o que fazer quando eu chegar a visualização de trabalho
XOmri

Além disso, o t-SNE depende muito de hiperparâmetros e não preserva distâncias, então como exatamente você encontraria discrepâncias com base nele? Sim, isso deixaria você encontrar pontos estranhos, mas isso seria uma escolha difícil.
Tim
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.