Rilevamento delle anomalie delle serie temporali
Importante
Il supporto dello studio di Azure Machine Learning (versione classica) terminerà il 31 agosto 2024. È consigliabile passare ad Azure Machine Learning entro tale data.
A partire dal 1° dicembre 2021 non sarà possibile creare nuove risorse dello studio di Azure Machine Learning (versione classica). Fino al 31 agosto 2024 sarà possibile continuare a usare le risorse dello studio di Azure Machine Learning (versione classica).
- Vedere leinformazioni sullo spostamento di progetti di Machine Learning da ML Studio (versione classica) ad Azure Machine Learning.
- Altre informazioni sulle Azure Machine Learning.
La documentazione relativa allo studio di Machine Learning (versione classica) è in fase di ritiro e potrebbe non essere aggiornata in futuro.
Rileva anomalie nei dati della serie temporale di input.
Categoria: Serie temporali
Nota
Si applica a: solo Machine Learning Studio (versione classica)
I moduli di trascinamento e rilascio simili sono disponibili in Azure Machine Learning finestra di progettazione.
Panoramica del modulo
Questo articolo descrive come usare il modulo Rilevamento anomalie serie temporali in Machine Learning Studio (versione classica) per rilevare anomalie nei dati delle serie temporali. Il modulo apprende le normali caratteristiche operative di una serie temporale fornita come input e usa tali informazioni per rilevare le deviazioni dal modello normale. Il modulo può rilevare entrambe le modifiche nella tendenza complessiva e le modifiche nella grandezza o nell'intervallo di valori.
Il rilevamento delle modifiche nei dati delle serie temporali include applicazioni wide. Ad esempio, è possibile usarlo per il monitoraggio quasi in tempo reale di sensori, reti o utilizzo delle risorse. Verificando gli errori del servizio, l'utilizzo del servizio e altri indicatori KPI, è possibile rispondere rapidamente alle anomalie critiche. Altre applicazioni includono assistenza sanitaria e finanza.
Metodi di Rilevamento delle anomalie
Il rilevamento anomalie è il problema di trovare modelli nei dati che non sono conformi a un modello di comportamento "normale". Gli approcci tipici per rilevare tali modifiche usano semplici soglie calcolate dall'uomo o la deviazione media e standard per determinare quando i dati deviano in modo significativo dalla media.
Tuttavia, tali approcci semplici non sono facilmente adatti ai dati della serie temporale:
Vengono generati grandi numeri di anomalie false
I metodi non sono applicabili alla modifica dei valori dei dati
Non è possibile ridimensionare facilmente le serie temporali di grandi dimensioni
Questo modulo fornisce due metodi aggiuntivi per la valutazione della varianza da una tendenza della serie temporale:
Misurazione della grandezza dei cambiamenti verso l'alto e verso il basso
Ad esempio, il numero di richieste in un servizio Web potrebbe essere ottimale per qualche tempo e quindi aumentare notevolmente.
Misurazione della direzione e della durata delle tendenze: modifiche positive e negative
Ad esempio, una tendenza verso l'alto persistente nella lunghezza di una coda del servizio potrebbe indicare un problema sottostante. Anche se la tendenza complessiva aumenta costantemente e pertanto può essere considerata stabile, un cambiamento di pendenza potrebbe essere contrassegnato come un'anomalia. Al contrario, se si monitora l'utilizzo della memoria di un server, una costante riduzione delle dimensioni della memoria libera potrebbe indicare un problema.
Esempi di modelli anomali nelle serie temporali
Cambiamenti verso l'alto e verso il basso
Si supponga, ad esempio, di aver eseguito il monitoraggio del numero di richieste al giorno a un servizio Web in un periodo di tempo e il numero di richieste sembra rimanere all'interno di un determinato intervallo. Tuttavia, dopo un aggiornamento al servizio Web, il numero di richieste a tale servizio Web cambia. La nuova tendenza potrebbe essere superiore o inferiore alla tendenza originale; è possibile rilevare sia picchi verso l'alto che verso il basso.
Cambiamenti positivi o negativi
Si supponga, ad esempio, di monitorare la lunghezza di una coda in un sito di supporto del servizio. Una tendenza verso l'alto persistente potrebbe indicare un problema di servizio sottostante.
In altri casi, una tendenza negativa persistente potrebbe essere l'anomalia. Ad esempio, se si monitora l'utilizzo della memoria in un server, quando le dimensioni di memoria gratuite si riducono, potrebbe indicare una potenziale perdita di memoria.
Risorse
Per altre informazioni sulla ricerca sottostante a questo approccio, vedere questi articoli:
Shen-Shyang Ho; Wechsler, H., "A Martingale Framework for Detecting Changes in Data Flussi by Testing Exchangeability", Pattern Analysis and Machine Intelligence, IEEE Transactions , vol.32, no.12, pp.2113.2127, Dec. 2010
Valentino Fedorova, Alex J. Gammerman, Ilia Nouretdinov, Vladimir Vovk, "Plug-in martingales for testing exchangeability on-line", ICML 2012
Vladimir Vovk, Ilia Nouretdinov, Alex J. Gammerman, "Testing Exchangeability Online", ICML 2003.
Come configurare il rilevamento anomalie di Time Series
Aggiungere il modulo Rilevamento anomalie serie temporali all'esperimento e connettere il set di dati contenente la serie temporale.
Il set di dati usato come input deve contenere almeno una colonna contenente valori datetime in formato stringa e un'altra colonna contenente i valori di tendenza, in formato numerico. Altre colonne vengono ignorate.
Poiché ogni riga corrisponde a un punto dati nella serie temporale che rappresenta il valore in quel momento, i valori temporali devono essere univoci.
Colonna dati: selezionare una singola colonna nel set di dati che contiene valori di dati numerici. Questi valori sono i punti dati della tendenza che si desidera modellare, ad esempio i totali della popolazione nel tempo, i costi al mese o le temperature in alcuni periodi.
Colonna temporale: selezionare una singola colonna nel set di dati contenente il valore della serie temporale associata.
La colonna deve contenere valori datetime validi, ovvero tutte le date devono trovarsi nell'intervallo di date supportate da .NET Framework.
La colonna Time deve usare il tipo di dati DateTime. Se le date sono in formato stringa, è possibile eseguirne il cast usando il modulo Applica SQL Trasformazione oppure convertirle usando il modulo Esegui script R. Se le date vengono rappresentate come interi, è necessario usare anche una funzione di conversione datetime appropriata per rappresentare i valori usando un formato datetime valido.
Ad esempio, l'istruzione SQL seguente modifica un valore di data seriale Excel in un formato datetime:
SELECT CAST([SerialDate] AS SmallDateTime) as [NewValidDate] from t1;
Dopo che i valori di data sono nel formato corretto, usare il modulo Modifica metadati per impostare il tipo di colonna su DateTime.
Tipo Martingale: selezionare la funzione martingale da usare.
PowerAvg. Questa opzione è un'implementazione marginalizzata dell'alimentazione martingale.
Il valore predefinito è PowerAvg senza parametri aggiuntivi. Questa opzione offre un rilevamento anomalie più stabile e deve essere adatto per la maggior parte delle esigenze.
Potenza. Implementazione non marginalizzata della martingale di potenza.
L'opzione Power consente agli utenti di specificare un valore compreso tra 0 e 1 per il parametro Epsilon per controllare la riservatezza del rilevatore. In genere, un valore epsilon superiore indica una maggiore sensibilità alle anomalie, ma meno certezza.
Per una definizione di martingales e i metodi usati in questo modulo, vedere: Rilevamento anomalie tramite Machine Learning per rilevare anomalie nei dati delle serie temporali
Tipo di funzione stranezza: questa opzione viene usata per specifici tipi di anomalie. Sono supportate tre opzioni, che non richiedono altri parametri:
RangePercentile.
Si tratta dell'impostazione predefinita e viene usata principalmente per rilevare le modifiche al livello.
SlowPosTrend. Scegliere questa opzione per rilevare le modifiche di tendenza positive.
SlowNegTrend. Scegliere questa opzione per rilevare le modifiche di tendenza negative.
Lunghezza dei valori Martingale e Stranezza: specificare le dimensioni della finestra di cronologia, utilizzata per calcolare i valori martingale sulla cronologia di look-back.
Il valore predefinito è 500, ma è possibile specificare qualsiasi intero compreso tra 0 e 5000. Per serie temporali di grandi dimensioni, il valore predefinito deve funzionare correttamente. Per serie temporali più piccole, è possibile provare a stimare il valore per la lunghezza prevista del comportamento anomalo.
È consigliabile impostare in genere questi due parametri sullo stesso valore.
Lunghezza dei valori di stranezza: specificare la lunghezza della finestra della cronologia usata per calcolare la stranezza in ogni punto dati.
Il valore predefinito è 500, ma è possibile specificare qualsiasi intero compreso tra 0 e 5000.
Questo parametro ha le stesse restrizioni della lunghezza di Martingale. Vale a dire, è necessario impostare il valore sul numero stimato di punti dati necessari per apprendere il comportamento "normale".
Il valore predefinito di 500 funziona bene per la maggior parte dei casi, ma se la scala su cui viene misurata la "normalità" varia, potrebbe essere utile rendere la lunghezza dei valori di stranezza un valore maggiore rispetto alla lunghezza di Martingale.
Ad esempio, se si stanno monitorando gli errori e si presuppone che i punti dati vengano acquisiti a intervalli di 15 minuti, il tempo necessario per apprendere la tendenza normale potrebbe variare notevolmente da mese a mese.
In generale, l'uso di una dimensione di finestra più grande comporta prestazioni più lente, perché il modulo deve acquisire informazioni su un set di dati più grande.
È consigliabile impostare in genere questi due parametri sullo stesso valore.
Soglia di avviso: specificare un valore superiore al quale il punteggio anomalie genera un avviso.
Il valore predefinito è 3.25, ovvero viene generato un avviso per ogni riga contenente un punteggio pari a 3,25 o più. S
È possibile specificare qualsiasi numero a virgola mobile compreso tra 0 e 100. Tuttavia, esiste un compromesso tra riservatezza e fiducia nella scelta della soglia:
Una soglia inferiore renderebbe il rilevatore più sensibile alle anomalie e genera più avvisi.
Una soglia inferiore potrebbe causare modifiche normali non classificate come anomalie.
Eseguire l'esperimento.
Si noti che non è necessario eseguire il training di questo modello separatamente; l'algoritmo apprende il modello dai dati forniti come input a questo modulo.
Risultati
Al termine del training, il modulo restituisce una serie temporale che corrisponde alla stessa lunghezza della serie temporale di input; tuttavia, due colonne vengono aggiunte per indicare i valori potenzialmente anomali.
Punteggio anomalie: la prima colonna contiene un punteggio che rappresenta la probabilità che il valore della serie temporale sia anomalo.
Avviso: questa colonna contiene un flag con un valore pari a 0 o 1, dove 1 indica che è stata rilevata un'anomalia. È possibile impostare la soglia per generare l'avviso in base alla colonna punteggio, ma impostando il parametro Soglia avviso .
Esempio
Negli esempi seguenti viene illustrato come impostare la funzione martingale per rilevare anomalie e come interpretare i risultati.
Rilevare le modifiche al livello
Per illustrare l'impatto di impostazioni diverse, il set di dati di esempio usato in questo esempio è costituito da 8870 punti dati, con tre modifiche di livello. In base a questi dati, sono stati creati due modelli usando i parametri seguenti.
Tipo Martingale: PowerAvg
Tipo di funzione Stranezza: RangePercentile
Lunghezza di Martingale = 50
Lunghezza dei valori di stranezza = 50
Il modello è stato sottoposto a training sui dati in ingresso, ma è stato applicato un valore diverso per La soglia di avviso. I risultati della stima vengono tracciati nelle immagini seguenti per Model 1 e Model 2. In questi grafici le linee blu rappresentano i valori dei dati e le righe rosse rappresentano gli avvisi generati per un'anomalia.
Soglia di avviso pari a 0,9
In questo modello il valore soglia è inferiore e quindi vengono generati avvisi (anomalie rilevate) anche quando le modifiche sono momentanee.
A seconda del tipo di serie temporali di cui si sta eseguendo il monitoraggio, alcuni di questi avvisi potrebbero essere considerati avvisi falsi. Tuttavia, una soglia inferiore potrebbe essere preferibile se non è possibile permettersi di ignorare qualsiasi anomalia.
Soglia di avviso 3.25
In questo modello la soglia di avviso è stata molto più alta e, di conseguenza, il modello rileva solo le modifiche che persistono più a lungo. Una soglia più elevata per l'avviso potrebbe essere più auspicabile in uno scenario in cui si desidera rilevare solo modifiche più durature.
Rilevare modifiche di pendenza positive
Per illustrare questa opzione per il rilevamento anomalie, è stato usato un set di dati di esempio contenente 300 punti dati. Tutti i punti formano una tendenza positiva complessivamente, con due anomalie.
Di nuovo, sono stati creati due modelli usando parametri identici, ad eccezione del valore soglia di avviso.
Tipo Martingale: PowerAvg
Tipo di funzione Stranezza: SlowPosTrend
Lunghezza di Martingale = 50
Lunghezza dei valori di stranezza = 50
In questi grafici le linee blu rappresentano valori di dati e le righe rosse rappresentano avvisi generati per un'anomalia.
Soglia di avviso 4.25
Soglia di avviso 6.0
È consigliabile sperimentare valori di soglia di avviso diversi per trovare il livello di riservatezza appropriato per lo scenario di rilevamento anomalie.
Input previsti
Nome | Tipo | Descrizione |
---|---|---|
Dati di input contenenti timestamp e valori | Tabella dati | Dati di input contenenti indicatori e valori data-ora. |
Parametri del modulo
Nome | Tipo | Intervallo | Facoltativo | Predefinito | Descrizione |
---|---|---|---|---|---|
Colonna valore | ColumnSelection | Obbligatoria | Scegliere la colonna contenente la serie temporale da tenere traccia | ||
Dimensioni della finestra | Integer | Obbligatoria | Specificare un valore che controlla le dimensioni della finestra di analisi | ||
Soglia | Float | Facoltativo | Specificare un valore che determina la soglia del punteggio per identificare un'anomalia |
Output
Nome | Tipo | Descrizione |
---|---|---|
Serie temporali annotate con punteggi di anomalie | Tabella dati | Set di dati con intervalli di anomalie. |
Vedi anche
Anomaly Detection
One-Class Support Vector Machine
PCA-Based Anomaly Detection (Rilevamento anomalie basato su PCA)