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?

XOmri
fonte
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.

XOmri
fonte
-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

S. P
fonte
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