Determinazione automatica della soglia per il rilevamento di anomalie


9

Sto lavorando con una serie temporale di punteggi di anomalie (lo sfondo è il rilevamento di anomalie nelle reti di computer). Ogni minuto, ottengo un punteggio di anomalia che mi dice quanto sia "inatteso" o anormale lo stato attuale della rete. Più alto è il punteggio, più anormale è lo stato attuale. I punteggi vicino a 5 sono teoricamente possibili ma non si verificano quasi mai.xt[0,5]

Ora voglio inventare un algoritmo o una formula che determini automaticamente una soglia per questa serie temporale di anomalie. Non appena un punteggio di anomalia supera questa soglia, viene attivato un allarme.

La distribuzione di frequenza di seguito è un esempio di una serie temporale di anomalie nell'arco di 1 giorno. Tuttavia, è non è lecito ritenere che ogni serie storica anomalia è andare a guardare come quella. In questo esempio speciale, una soglia di anomalia come il .99-quantile avrebbe senso poiché i pochi punteggi sulla destra possono essere considerati anomalie.

inserisci qui la descrizione dell'immagine

E la stessa distribuzione di frequenza delle serie temporali (varia solo da 0 a 1 poiché non vi sono punteggi di anomalia più alti nelle serie temporali):

serie storiche

Sfortunatamente, la distribuzione della frequenza potrebbe avere forme, dove il .99-quantile non è utile . Un esempio è sotto. La coda destra è molto bassa, quindi se il 99,99 quantile viene usato come soglia, ciò potrebbe comportare molti falsi positivi. Questa distribuzione di frequenza non sembra contenere anomalie, quindi la soglia dovrebbe trovarsi al di fuori della distribuzione a circa 0,25.

inserisci qui la descrizione dell'immagine

Riassumendo, la differenza tra questi due esempi è che il primo sembra presentare anomalie mentre il secondo no.

Dal mio punto di vista ingenuo, l'algoritmo dovrebbe considerare questi due casi:

  • Se la distribuzione della frequenza ha una grande coda destra (cioè un paio di punteggi anomali), il .99-quantile può essere una buona soglia.
  • Se la distribuzione della frequenza ha una coda destra molto corta (cioè nessun punteggio anormale), la soglia dovrebbe trovarsi al di fuori della distribuzione.

/ modifica: non esiste inoltre alcuna verità di base, ovvero set di dati etichettati disponibili. Quindi l'algoritmo è "cieco" rispetto alla natura dei punteggi di anomalia.

Ora non sono sicuro di come queste osservazioni possano essere espresse in termini di algoritmo o formula. Qualcuno ha un suggerimento su come risolvere questo problema? Spero che le mie spiegazioni siano sufficienti poiché il mio background statistico è molto limitato.

Grazie per l'aiuto!


Solo una nota, il primo grafico non sembra niente di normale per me.
mpiktas,

1
@cryptron, la domanda chiave è che cos'è una soglia sonora . Ad esempio, se ciascun allarme generato e non generato comporta determinati costi, la soglia può essere scelta in modo tale da ridurre al minimo i costi totali. Per questo abbiamo bisogno di dati di costo. Senza la definizione esatta del suono è impossibile misurare come valutare il metodo scelto per selezionare la soglia.
mpiktas,

@mpiktas: Devo ammetterlo, la parola "suono" è stata sfortunata in questo contesto perché non ho modo di valutare rigorosamente la soglia (quindi, l'ho modificata). Fondamentalmente, la soglia dovrebbe minimizzare i falsi positivi perché sono molto più costosi dei falsi negativi nel rilevamento delle anomalie di rete.
Cryptron,

@cryptron, hai qualche dato su cosa sia un falso positivo?
mpiktas,

1
Sono confuso dalle tue trame. Questa è una serie temporale univariata assume valori in ? O dovrebbe essere ? (osservando l'asse x nella prima trama). Un tracciato sarebbe anche più utile. Ad esempio, ottieni punteggi più alti per un periodo di tempo prolungato o in raffiche brevi (o entrambi)? Se entrambi, uno è più preoccupante dell'altro? Se riesci a mettere giù un modello ragionevole per i dati puoi usare i quantili teorici dalla distribuzione adattata, il che risolverebbe il problema che hai identificato con i quantili di esempio. 0 < x t5 0 < x t0,5{xt}0<xt50<xt0.5
JMS,

Risposte:


2

Potresti trovare questo documento di interesse. Vedi anche la presentazione più dettagliata di modelli simili in West & Harrison . Esistono anche altri esempi di questo tipo di monitoraggio, molti dei quali sono più recenti, ma non è esattamente la mia timoniera :). Indubbiamente ci sono implementazioni adeguate di questi modelli, ma non so cosa potrebbero essere fuori mano ...

L'idea di base è che hai un modello di commutazione in cui alcune osservazioni / sequenze di osservazioni sono attribuite a stati di rete anormali mentre il resto è considerato normale. Una miscela come questa potrebbe spiegare la lunga coda destra nella tua prima trama. Un modello dinamico potrebbe anche avvisarti di salti anomali come alle 8:00 e alle 4:00 in tempo reale assegnando un'alta probabilità a nuove osservazioni appartenenti a uno stato problematico. Potrebbe anche essere facilmente esteso per includere cose come predittori, componenti periodiche (forse il tuo punteggio aumenta / diminuisce un po 'con l'attività) e quel genere di cose.

Modifica: dovrei anche aggiungere che questo tipo di modello è "senza supervisione", nel senso che le anomalie vengono colte mostrando un grande spostamento medio o un aumento della varianza. Man mano che raccogli i dati, puoi migliorare il modello con distribuzioni precedenti più informative. Ma forse una volta che hai abbastanza dati (ed esempi di allenamento duramente vinti affrontando problemi di rete!) Potresti escogitare alcune semplici regole di monitoraggio (soglie, ecc.)


1

Hai esempi "etichettati" di ciò che costituisce un'anomalia? vale a dire valori associati a un errore di rete o qualcosa del genere?

Un'idea che potresti considerare di applicare è una curva ROC, che è utile per selezionare trefoli che soddisfano criteri specifici, come massimizzare i veri positivi o minimizzare i falsi negativi.

Naturalmente, per utilizzare una curva ROC, è necessario etichettare i dati in qualche modo.


1
Sfortunatamente, non ho set di dati etichettati. C'è solo il presupposto che code lunghe o valori anomali indicano anomalie nel set di dati.
Cryptron,

@cryptron vedo. Quindi ciò di cui hai bisogno è un modo per identificare dinamicamente i valori anomali.
Zach,

Ciò risolverebbe una parte del problema, sì.
Cryptron,

1

Il grafico della "serie originale" non deve presentare alcuna struttura predefinita. Ciò che è critico è che il grafico dei "residui di una serie di modelli adatti" deve presentare una struttura gaussiana. Questa "struttura gaussiana" di solito può essere ottenuta incorporando una o più delle seguenti "trasformazioni" 1. un modello di arima 2. Adeguamenti per spostamenti di livello locale o tendenze dell'ora locale o impulsi stagionali o impulsi ordinari 3. un'analisi ponderata che sfrutta l'eterogeneità della varianza comprovata 4. un'eventuale trasformazione di potenza (registri ecc.) Per far fronte a una specifica eterogeneità della varianza 5. il rilevamento di punti nel tempo in cui il modello / i parametri potrebbero essere cambiati.

Il rilevamento dell'intervento fornirà una dichiarazione sul significato statistico dell'evento più recente che suggerisce una normalità o un'anomalia


0

Nella risposta del PO alla mia precedente risposta ha pubblicato i suoi dati sul web. 60 letture all'ora per 24 ore per 6 giorni . Dato che si tratta di serie temporali, strumenti trasversali come DBSCAN hanno una rilevanza limitata poiché i dati hanno una dipendenza temporale. Con dati come questo normalmente si cerca la struttura intraora e intra giorno. Oltre a questo tipo di struttura si può perseguire il rilevamento di anomalie che possono essere di una sola volta (impulso) o di natura sistematica (spostamento di livello) usando metodi ben documentati (vedere la letteratura di Tsay, Tiao, Chen et. al.) Queste procedure hanno prodotto le seguenti "anomalie". Si noti che uno spostamento di livello è essenzialmente indicativo di "cluster" separati. anomalie maggiormente identificate

                                HOUR/MINUTE     TIME

-1

Dopo che un mio amico mi ha indicato la direzione degli algoritmi di clustering , mi sono imbattuto in DBSCAN che crea cluster nello spazio n-dimensionale secondo due parametri predefiniti. L'idea di base è il clustering basato sulla densità, ovvero le regioni dense formano i cluster. Gli outlier vengono restituiti separatamente dall'algoritmo. Quindi, quando applicato al mio istogramma monodimensionale, DBSCAN è in grado di dirmi se i miei punteggi di anomalia presentano valori anomali. Nota: in DBSCAN, un valore anomalo è solo un punto che non appartiene a nessun cluster. Durante le normali operazioni, mi aspetto che l'algoritmo produca solo un singolo cluster (e nessun valore anomalo).

Dopo alcuni esperimenti, ho scoperto che i parametri funzionano bene. Ciò significa che i punti devono mostrare una distanza di almeno 0,1 dal cluster "normale" per essere visti come anomali.ϵ0.1

Dopo essere stato in grado di identificare i valori anomali, trovare la soglia si riduce a semplici regole come:

  • Se l'insieme presenta valori anomali, impostare la soglia tra il cluster "normale" e "anomalo" in modo che il margine su entrambi sia massimizzato.
  • Se il set non presenta valori anomali, impostare la soglia di una deviazione standard lontano dal punto più a destra.

Comunque, grazie per tutte le risposte utili!


@crypton In che modo DBSCAN gestisce le serie autocorrelate. Ad esempio una serie temporale 1,9,1,9,1,9,5 avrebbe un valore inlier / insolito. Gestisce i cambiamenti di livello nelle serie o una serie di possibili tendenze? In che modo tratta i dati autoregressivi stagionali laddove diverso da giugno di ogni mese la serie è "regolare" mentre ogni giugno la serie è "grande". I "grandi valori di giugno" vengono rilevati come valori anomali? Solo curioso !
IrishStat,

2
@IrishStat Fondamentalmente, i cluster DBSCAN indicano punti nello spazio n-dimensionale. Quindi la sua idoneità per l'analisi delle serie storiche è molto limitata. Funziona per il mio caso speciale poiché mi aspetto un solo cluster nel mio istogramma (monodimensionale). Per rispondere alle tue domande: quando usi i parametri appropriati, il valore 5 del tuo esempio verrà rilevato come anomalo. Suppongo che possa gestire le tendenze, ma nelle serie temporali "1, 2, 3, 4, 5, 6, 7, 2", il valore 2 non sarebbe considerato anomalo! Spero che ciò dia un'idea approssimativa delle capacità e dei limiti di DBSCAN.
Cryptron,

1
@crypton Grazie per le informazioni. Mi sembra che quando si fa riferimento a 1 cluster, si intende 1 e solo 1 media. Anche se non vi è alcun cambiamento nell'autocorrelazione media nei dati, la si rende "serie temporale", il che suggerisce che DBSCAN potrebbe non essere utile come si pensa per separare il segnale dal rumore che porta all'identificazione efficiente di dati anamolosi.
IrishStat,

1
@crypton Mi sembra che un cluster implichi 1 media rispetto a una serie temporale che diceva 1,1,1,1,2,2,2,2 con alcune piccole deviazioni attorno a questi valori.
IrishStat,

2
@crpton Penso che tu stia utilizzando uno strumento di sezione trasversale per un problema di serie storiche. Pubblica i dati effettivi e cercherò di dimostrarti il ​​rilevamento di anomalie con l'analisi delle serie temporali
IrishStat
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.