Rilevamento di anomalie con la rete neurale


12

Ho un grande set di dati multidimensionale che viene generato ogni giorno.

Quale sarebbe un buon approccio per rilevare qualsiasi tipo di "anomalia" rispetto ai giorni precedenti? È un problema adatto che potrebbe essere affrontato con le reti neurali?

Eventuali suggerimenti sono apprezzati.

informazioni aggiuntive: non ci sono esempi, quindi il metodo dovrebbe rilevare le anomalie stesse

Risposte:


12

Dalla formulazione della domanda, presumo che non vi siano "esempi" di anomalie (cioè etichette) di sorta. Con tale presupposto, un approccio fattibile sarebbe quello di utilizzare gli auto - codificatori : reti neurali che ricevono come input i tuoi dati e sono addestrate per produrre quegli stessi dati. L'idea è che la formazione ha permesso alla rete di apprendere rappresentazioni delle distribuzioni dei dati di input sotto forma di variabili latenti.

Esiste un tipo di autoencoder chiamato denoising autoencoder , che viene addestrato con le versioni danneggiate dei dati originali come input e con i dati originali non corrotti come output. Ciò fornisce una rete in grado di rimuovere il rumore (ovvero i danni ai dati) dagli input.

È possibile addestrare un codificatore automatico denoising con i dati giornalieri. Quindi usalo su nuovi dati giornalieri; in questo modo hai i dati giornalieri originali e una versione non corrotta di quegli stessi dati. È quindi possibile confrontare entrambi per rilevare differenze significative .

La chiave qui è quale definizione di differenza significativa si sceglie. Potresti calcolare la distanza euclidea e supporre che se supera una certa soglia arbitraria, hai un'anomalia. Un altro fattore importante è il tipo di corruzione che introduci; dovrebbero essere il più vicino possibile a ragionevoli anomalie.

Un'altra opzione sarebbe quella di utilizzare le reti contraddittorie generative . Il sottoprodotto della formazione è una rete discriminatoria che distingue i normali dati giornalieri da dati anomali.


4

Penso che dipenda fortemente dalla natura dei tuoi dati (categorici / continui). Inizierei prima con metodi semplici. Mi vengono in mente:

  • Puoi confrontare la distribuzione di ciascuna variabile usando quantili o qualsiasi test statistico per vedere se sono significativamente differenti
  • Puoi anche contare l'occorrenza di ciascuna etichetta / categoria e confrontarli
  • Proverei anche a impiegare qualsiasi tipo di misura della distanza. Ad esempio, potresti calcolare la distanza mahalanobis e cercare grandi cambiamenti
  • O qualcosa di veramente semplice: solo una differenza assoluta tra dati nuovi e vecchi, impostare una soglia e verrà segnalato tutto ciò che supera la soglia
  • Puoi anche mettere in atto alcune tecniche multidimensionali - come la matrice di correlazione, i componenti principali, il clustering ecc. E cercare le modifiche

Se nessuno di questi è adatto, esiste un'intera branca di statistiche / modelli ML specializzati per il rilevamento di anomalie. SVM, t-END, foreste di isolamento, Peer Analysis Group , Break Point Analysis , serie temporali (dove si dovrebbe guardare i valori anomali andamenti di fuori).

Questi metodi hanno il vantaggio di essere una specie di scatola bianca, quindi puoi capire perché qualcuno è un anomalo. Se questa non è la cosa che desideri, altri hanno suggerito approcci ANN, che funzioneranno anche.


0

Sto cercando di risolvere un problema simile. Il tuo set di dati contiene un mix di testo e funzioni numeriche? In tal caso la complessità del rilevamento di anomalie aumenta (non so per quale fattore). Se il tuo set di dati è uniforme, ad esempio contenente solo valori numerici, puoi potenzialmente utilizzare un RNN che necessita ancora di un set di dati con etichetta ma può rilevare serie temporali come modelli (poiché menzioni il confronto con i valori del giorno precedente per ex)


0

Un modo semplice per farlo utilizzando Autoencoder (senza "denoising autoencoder" che devono essere addestrati con "dati corrotti") è addestrare un autoencoder e quindi ispezionare l'RMSE delle righe dall'input che non ha decodificato bene (quelle che l'auto-codificatore ha avuto difficoltà a ricostruire). Secondo una certa definizione i dati rappresenterebbero un'anomalia (certamente questo sarebbe il caso di cose come picchi di traffico).

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.