Alla ricerca di un buon pacchetto per il rilevamento di anomalie nelle serie temporali


17

Esiste un pacchetto open source completo (preferibilmente in Python o R) che può essere utilizzato per il rilevamento di anomalie nelle serie temporali?

Esiste un pacchetto SVM di una classe in scikit-learn ma non è per i dati di serie temporali. Sto cercando pacchetti più sofisticati che, ad esempio, utilizzano reti bayesiane per il rilevamento di anomalie.


dobbiamo scriverne uno, fratello !! : P
Arpit Sisodia,

Risposte:


19

So di essere un po 'in ritardo qui, ma sì, esiste un pacchetto per il rilevamento di anomalie insieme a schemi di combinazione anomali.

È ancora nella sua fase iniziale di sviluppo su Github e sarà presto pubblicato in JMLR.

Il pacchetto è in linguaggio Python e il nome del pacchetto è pyod ( https://github.com/yzhao062/Pyod ).

Ha più algoritmi per i seguenti approcci individuali:

  1. Modelli lineari per rilevamento anomalo ( PCA, vMCD, vOne-Class e SVM )
  2. Modelli di rilevamento di valori anomali basati sulla prossimità ( LOF, CBLOF, HBOS, KNN, AverageKNN e MedianKNN )
  3. Modelli probabilistici per rilevamento anomalo ( ABOD e FastABOD )
  4. Ensemble anomali e quadri di combinazione ( IsolationForest e FeatureBagging )
  5. Reti neurali e modelli di apprendimento profondo ( Auto-encoder con rete neurale completamente connessa )

Infine, se stai cercando specifiche serie temporali di per sé, questo link github sarà utile.

Ha i seguenti pacchetti elenco per il rilevamento dei valori anomali di timeseries:

datastream.io

orizzonte

banpei

AnomalyDetection


qualche modo di lavorare su anomalie basate sul contesto?
Arpit Sisodia,

stai parlando di rilevamento anomalie o rilevamento anomalo? C'è una differenza.
Arpit Sisodia,

6

Esistono diversi modi per gestire le anomalie delle serie temporali:

1) Se si conoscono anomalie , costruire un modello di classificazione. Utilizzare questo modello per rilevare lo stesso tipo di anomalie per i dati delle serie temporali.

2) Se le anomalie sono sconosciute , ciò che abbiamo fatto nella nostra organizzazione- è una combinazione di raggruppamento e classificazione-

Per prima cosa usa LOF / K-media / distanza di Cook per identificare i valori anomali. Converti interi dati in problemi di classificazione dato che ora abbiamo 2 classi: valori anomali e normali. Ora costruisci un modello di classificazione e ottieni regole (modello di classificazione) per identificare l'anomalia in fase di esecuzione (dati delle serie temporali).

3) Se le anomalie sono sconosciute , durante la mia ricerca, il modo più comune per identificare le anomalie è quello di costruire un modello normale e qualsiasi deviazione dal modello normale (errore) è anormale, quindi in ogni caso prevedi le tue serie temporali per l'ora successiva e poi confronta con valori reali. Se l'errore è più del previsto, sta accadendo qualcosa di anormale.

Non sono stato in grado di trovare alcun pacchetto diretto in Python o R per farlo, poiché nessuno sapeva cosa fosse davvero anormale: P, in tutti i casi è stato correlato al rilevamento anomalo.

alcuni link utili

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

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


2

Prova la Libreria dei profeti

Il profeta è una procedura per la previsione dei dati delle serie temporali basata su un modello additivo in cui le tendenze non lineari si adattano alla stagionalità annuale, settimanale e giornaliera, oltre agli effetti festivi. Funziona meglio con serie temporali che hanno forti effetti stagionali e diverse stagioni di dati storici. Prophet è robusto per la mancanza di dati e cambiamenti di tendenza e in genere gestisce bene i valori anomali.

Maggiori informazioni su: Rilevazione di anomalie in serie temporali con la libreria Prophet

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.