Algoritmi robusti per serie temporali multivariate

Identificazione di outlier: utilizzando una scelta tra le principali librerie disponibili, esiste un insieme di algoritmi in grado di comportarsi, su di un certo numero di dataset (con training senza anomalie), sempre relativamente “bene” rispetto agli altri?

Algoritmi robusti per serie temporali multivariate

Il problema

Nel nostro primo articolo sulle serie temporali multivariate, ci eravamo concentrati nello sviluppare Raker: un proof of concept multi-algoritmo e multi-modello per l'identificazione di outlier.

In questo secondo articolo, abbiamo cercato di dare una risposta alla seguente domanda:

utilizzando una scelta tra le principali librerie disponibili, esiste un insieme di algoritmi in grado di comportarsi, su di un certo numero di dataset (con training senza anomalie), sempre relativamente “bene” rispetto agli altri?

Eravamo interessati a trovare degli algoritmi “robusti”: su diversi dataset di prova, avremmo cercato quali riuscivano a piazzarsi sempre in un certo percentile superiore (il 10%) rispetto al gruppo scelto. L'idea era che algoritmi con questa versatilità potessero comportarsi mediamente bene su diversi tipi di dataset industriali.

La scelta del metro

Pur misurando comunque le tipiche metriche utilizzate nei problemi di classificazione, per poter stilare una classifica in questo “torneo di algoritmi” abbiamo utilizzato il Matthews correlation coefficient (MCC): oltre ad essere indicato per problemi sbilanciati e a fondere in un'unica equazione – a differenza delle metriche classiche – tutti gli elementi della matrice di confusione, ha il vantaggio di fornire dei valori continui compresi tra -1 e +1, legando il segno alla correlazione diretta o inversa nella predizione e consentendo, anche “a occhio”, di stilare un elenco ordinato.

I dataset utilizzati

Rivolgendoci principalmente al mondo industriale, i dataset che ci interessavano non erano semplici da trovare, dovendo per noi essere:

  • di serie temporali multivariate;
  • con anomalie annotate;
  • con una lunghezza minima di diverse migliaia di campioni;
  • un passo di campionamento noto;
  • la provenienza da reali sistemi elettromeccanici, idraulici eccetera.

Dato questo insieme di requisiti, abbiamo trovato i seguenti dataset.

SKAB

SKAB (Skoltech Anomaly Benchmark) è reso pubblicamente disponibile dal Skolkovo Institute of Science and Technology (Russia) e contiene diversi sottodataset relativi ad esperimenti nei quali sono state indotte delle anomalie sull'impianto mostrato nella seguente immagine.

1,2: valvola solenoide; 3: serbatoio con acqua; 4: pompa dell'acqua; 5: pulsante di emergenza; 6: motore elettrico; 7: inverter; 8: compactRIO; 9: livello per l'allineamento dell'albero.

SWaT

SWaT (Secure Water Treatment) è un dataset creato dal iTrust (Centre for Research in Cyber Security) della Singapore University of Technology and Design. Non è pubblicamente disponibile: viene concesso su richiesta, con l'impegno a citarli e a informarli qualora si pubblicasse un articolo con dei risultati basati anche sul loro dataset. Anche in questo caso, si tratta di un impianto fisico (mostrato nell'immagine seguente) con anomalie indotte.

SWaT è composto da un moderno processo a sei fasi. Il processo inizia con l'acquisizione di acqua grezza, l'aggiunta di sostanze chimiche necessarie, il filtraggio tramite un sistema di ultrafiltrazione (UF), la de-clorazione mediante lampade UV e infine l'alimentazione in un sistema di osmosi inversa (RO). Un processo di lavaggio in controcorrente pulisce le membrane nell'UF utilizzando l'acqua prodotta dalla RO. La parte cibernetica di SWaT è composta da una rete di comunicazione stratificata, controllori logici programmabili (PLC), interfacce uomo-macchina (HMI), una postazione di supervisione e controllo (SCADA) e uno storico dei dati. I dati provenienti dai sensori sono disponibili per il sistema SCADA e registrati dall'archivio storico per analisi successive.

Esiste anche un video su YouTube con un tour virtuale dell'impianto.

Kaggle pump sensor data

Il pump sensor data di Kaggle è il più semplice dei tre ma verifica comunque i requisiti.

Preparazione dei dataset di training e testing

Per poter addestrare i modelli, relativamente ai tre macro-dataset (SKAB, SWaT e Kaggle):

  • i dataset sono stati ripuliti (sono state rimosse le feature costanti o vuote);
  • i dataset sono stati trasformati in modo che ciascu campione appartenesse a una di sole due classi (normale e anomalia) senza distinguere il tipo di anomalia;
  • quando necessario, sono stati rimossi, all'interno dei tre macro-dataset, i dataset che presentavano intervalli di anomalie brevi o campioni mancanti;
  • sono stati creati diversi training set e testing set, naturalmente sempre disgiunti: in particolare i training set sono stati costruiti in modo da non avere al proprio interno delle anomalie, cercando in questo modo di riprodurre una situazione tipica industriale, nella quale le anomalie spesso non vengono fornite per l'addestramento o sono molto rare (e non è percorribile la strada di indurle su impianti in produzione).

Librerie e algoritmi

Le librerie che abbiamo scelto di utilizzare sono le seguenti, indicando per ciascuna quali algoritmi sono stati provati sui precedenti dataset.

  • Alibi Detect
    • iforest (Isolation Forest)
  • PyCaret
    • iforest (Isolation Forest)
    • knn (K-Nearest Neighbors Detector)
    • lof (Local Outlier Factor)
    • osvm (One-class SVM detector)
  • PyOD (Python Outlier Detection)
    • autoencoder (Autoencoder)
    • iforest (Isolation Forest)
    • knn (K-Nearest Neighbors Detector)
    • osvm (One-class SVM detector)
  • scikit-learn
    • iforest (Isolation Forest)
    • osvm (One-class SVM detector)

I vincitori

Degli 11 algoritmi precendenti, sui dataset scelti (che sono più di tre, considerando i molti sottodataset di SKAB), gli unici sempre presenti nel 10% superiore sono risultati i seguenti:

  • PyOD autoencoder
  • PyCaret iforest
  • PyCaret osvm

Studi simili: ADBench

Pur essendo celebre, per questo articolo abbiamo scelto di non utilizzare ADBench perché fornisce pochi dataset industriali mediamente brevi. Per approfondimenti, si può leggere il loro articolo ADBench: Anomaly Detection Benchmark su OpenReview.

Conclusioni

Abbiamo risposto affermativamente alla domanda iniziale e possiamo dire che esistono alcuni algoritmi consistentemente migliori di altri  in termini di versatilità nell'identificare le anomalie temporali per applicazioni industriali.

Abbiamo raccolto qui di seguito alcuni possibili sviluppi di questa piccola ricerca:

  • verificare se questi algoritmi ”buoni“ diano predizioni correlate tra loro;
  • estendere ad altri algoritmi e librerie l'analisi;
  • includere nelle prove una scelta dei dataset più lunghi (e ”industriali“) di studi simili come ADBench.

Questo articolo è stato scritto a seguito dei risultati di una collaborazione con il Dott. Khaled Alamin.

--

Foto di copertina di Rachael Crowe su Unsplash

Kiwifarm srl ‐ Via Agostino da Montefeltro, 2 · 10134 Torino (TO) ‐ P. IVA: 03535510048 ‐ Capitale Sociale: 30.100 € i.v. Privacy Policy Cookie Policy