Procurando um bom pacote para detecção de anomalias em séries temporais

17

Existe um pacote abrangente de código aberto (de preferência em python ou R) que pode ser usado para detecção de anomalias em séries temporais?

Existe um pacote SVM de uma classe no scikit-learn, mas não é para dados de séries temporais. Estou procurando pacotes mais sofisticados que, por exemplo, usem redes bayesianas para detecção de anomalias.

pensador
fonte
precisamos escrever um, mano !! : P
Arpit Sisodia

Respostas:

19

Eu sei que estou um pouco atrasado aqui, mas sim, há um pacote para detecção de anomalias junto com frameworks de combinações fora de série.

Ele ainda está em seu estágio inicial de desenvolvimento no github e será publicado em breve no JMLR.

O pacote está na linguagem python e o nome do pacote é pyod ( https://github.com/yzhao062/Pyod ).

Possui vários algoritmos para as seguintes abordagens individuais:

  1. Modelos lineares para detecção de outlier ( PCA, vMCD, vOne-Class e SVM )
  2. Modelos de detecção de outlier baseados em proximidade ( LOF, CBLOF, HBOS, KNN, AverageKNN e MedianKNN )
  3. Modelos Probabilísticos para Detecção de Outlier ( ABOD e FastABOD )
  4. Conjuntos outlier e estruturas de combinação ( IsolationForest e FeatureBagging )
  5. Redes neurais e modelos de aprendizado profundo ( codificador automático com rede neural totalmente conectada )

Por fim, se você estiver procurando especificamente séries temporais em si, esse link do github será útil.

Possui os seguintes pacotes de lista para detecção de outlier de séries temporais:

datastream.io

Horizonte

banpei

Detecção de anomalia

Shankar Chavan
fonte
alguma maneira de trabalhar com anormalidades baseadas em contexto?
Arpit Sisodia
você está falando sobre detecção de anomalias ou detecção de outlier? Há uma diferença.
Arpit Sisodia
6

Existem várias maneiras de lidar com anormalidades de séries temporais -

1) Se forem conhecidas anormalidades , construa um modelo de classificação. Use este modelo para detectar o mesmo tipo de anormalidade nos dados de séries temporais.

2) Se as anomalias forem desconhecidas , o que fizemos em nossa organização é uma combinação de agrupamento e classificação,

Primeiro, use a distância LOF / K-means / Cook para identificar valores extremos. Converta dados inteiros em problemas de classificação, pois agora temos 2 classes - Outliers e normais. Agora crie um modelo de classificação e obtenha regras (modelo de classificação) para identificar anormalidades no tempo de execução (dados de séries temporais).

3) Se as anomalias forem desconhecidas , durante minha pesquisa, a maneira mais comum de identificar anormalidades é criar um modelo normal e qualquer desvio do modelo normal (erro) é anormal, portanto, no caso de você prever sua série temporal para a próxima hora e comparar com valores reais. Se o erro for mais do que o esperado, algo anormal está acontecendo.

Não consegui encontrar nenhum pacote direto em python ou R para fazer isso, pois ninguém sabia o que é realmente anormal: P, em todos os casos, foi relacionado à detecção de outlier.

alguns links úteis

https://machinelearningstories.blogspot.com/2018/12/easiest-way-of-detection-abnormality.html

https://machinelearningstories.blogspot.com/2018/07/anomaly-detection-anomaly-detection-by.html

Arpit Sisodia
fonte
2

Experimente a Biblioteca Profeta

O Profeta é um procedimento para prever dados de séries temporais com base em um modelo aditivo no qual tendências não lineares se ajustam à sazonalidade anual, semanal e diária, além de efeitos de férias. Funciona melhor com séries temporais que têm fortes efeitos sazonais e várias temporadas de dados históricos. O Profeta é robusto para a falta de dados e mudanças na tendência, e geralmente lida bem com outliers.

Mais em: Detecção de anomalias em séries temporais com a biblioteca Profeta

Krishna
fonte