Componente rilevamento anomalie basato su PCA

Questo articolo descrive come usare il componente Rilevamento anomalie basato su PCA nella finestra di progettazione di Azure Machine Learning per creare un modello di rilevamento anomalie basato sull'analisi dei componenti principale .

Questo componente consente di creare un modello in scenari in cui è facile ottenere dati di training da una classe, ad esempio transazioni valide, ma difficile ottenere campioni sufficienti delle anomalie mirate.

Ad esempio, per rilevare le transazioni fraudolente, spesso non sono disponibili esempi sufficienti di frodi su cui eseguire il training. Tuttavia, potrebbero essere disponibili molti esempi di transazioni valide. Il componente rilevamento anomalie basato su PCA risolve il problema analizzando le funzionalità disponibili per determinare cosa costituisce una classe "normale". Il componente applica quindi le metriche di distanza per identificare i casi che rappresentano anomalie. Questo approccio consente di eseguire il training di un modello usando dati sbilanciati esistenti.

Altre informazioni sull'analisi dei componenti principali

PCA è una tecnica consolidata nell'apprendimento automatico. Viene spesso usato nell'analisi esplorativa dei dati perché rivela la struttura interna dei dati e spiega la varianza nei dati.

Questa tecnica consiste nell'eseguire l'analisi di dati che contengono più variabili. Cerca le correlazioni tra le variabili e determina la combinazione di valori che meglio rappresenta le differenze nei risultati. Questi valori di funzionalità combinati vengono usati per creare uno spazio di funzionalità più compatto denominato componenti principali.

Per il rilevamento anomalie, ogni nuovo input viene analizzato. L'algoritmo di rilevamento anomalie calcola la proiezione sugli eigenvettori, insieme a un errore di ricostruzione normalizzato. L'errore normalizzato viene usato come punteggio anomalie. A un punteggio maggiore corrisponde una maggiore anomalia dell'istanza.

Per altre informazioni sul funzionamento di PCA e sull'implementazione per il rilevamento delle anomalie, vedere questi documenti:

Come configurare il rilevamento anomalie basato su PCA

  1. Aggiungere il componente Rilevamento anomalie basato su PCA alla pipeline nella finestra di progettazione. È possibile trovare questo componente nella categoria Rilevamento anomalie.

  2. Nel pannello destro del componente selezionare l'opzione Modalità di training. Indicare se si vuole eseguire il training del modello usando un set specifico di parametri o usare uno sweep di parametri per trovare i parametri migliori.

    Se si sa come configurare il modello, selezionare l'opzione Single Parameter (Parametro singolo) e specificare un set specifico di valori come argomenti.

  3. Per Numero di componenti da usare in PCA, specificare il numero di funzionalità o componenti di output desiderati.

    La decisione del numero di componenti da includere è una parte importante della progettazione dell'esperimento che usa PCA. Linee guida generali è che non è consigliabile includere lo stesso numero di componenti PCA in quanto sono presenti variabili. È invece consigliabile iniziare con un numero minore di componenti e aumentarli fino a quando non viene soddisfatto un criterio.

    I risultati migliori vengono ottenuti quando il numero di componenti di output è minore del numero di colonne di funzionalità disponibili nel set di dati.

  4. Specificare la quantità di sovracampionamento da eseguire durante il training PCA casuale. Nei problemi di rilevamento anomalie, i dati sbilanciati rendono difficile applicare tecniche PCA standard. Specificando una quantità di sovracampionamento, è possibile aumentare il numero di istanze di destinazione.

    Se si specifica 1, non viene eseguito alcun sovracampionamento. Se si specifica un valore maggiore di 1, vengono generati altri esempi da usare per il training del modello.

    Esistono due opzioni, a seconda che si usi o meno uno sweep di parametri:

    • Parametro di sovracampionamento per PCA casuale: digitare un singolo numero intero che rappresenta il rapporto di sovracampionamento della classe di minoranza rispetto alla classe normale. Questa opzione è disponibile quando si usa Metodo di training a parametro singolo.

    Nota

    Non è possibile visualizzare il set di dati oversampled. Per altre informazioni sull'utilizzo dell'overcampionamento con PCA, vedere Note tecniche.

  5. Selezionare l'opzione Abilita normalizzazione media funzionalità di input per normalizzare tutte le funzionalità di input in una media pari a zero. La normalizzazione o la scalabilità a zero è in genere consigliata per PCA, perché l'obiettivo di PCA è ottimizzare la varianza tra le variabili.

    Questa opzione è selezionata per impostazione predefinita. Deselezionarlo se i valori sono già stati normalizzati tramite un metodo o una scala diversi.

  6. Connettere un set di dati di training con tag e uno dei componenti di training.

    Se si imposta l'opzione Create trainer mode (Crea modalità di training) su Single Parameter (Parametro singolo), usare il componente Train Anomaly Detection Model (Esegui training del modello di rilevamento anomalie).

  7. Inviare la pipeline.

Risultati

Al termine del training, è possibile salvare il modello sottoposto a training. In alternativa, è possibile connetterlo al componente Score Model per stimare i punteggi delle anomalie.

Per valutare i risultati di un modello di rilevamento anomalie:

  1. Assicurarsi che una colonna score sia disponibile in entrambi i set di dati.

    Se si prova a valutare un modello di rilevamento anomalie e viene visualizzato l'errore "Non è presente alcuna colonna di punteggio nel set di dati con punteggio da confrontare", si usa un set di dati di valutazione tipico che contiene una colonna di etichetta ma nessun punteggio di probabilità. Scegliere un set di dati che corrisponda all'output dello schema per i modelli di rilevamento anomalie, che include etichette con punteggio e colonne Probabilità con punteggio.

  2. Assicurarsi che le colonne di etichetta siano contrassegnate.

    In alcuni casi i metadati associati alla colonna etichetta vengono rimossi nel grafico della pipeline. In questo caso, quando si usa il componente Evaluate Model per confrontare i risultati di due modelli di rilevamento anomalie, è possibile che venga visualizzato l'errore "There is no label column in scored dataset". In alternativa, è possibile che venga visualizzato l'errore "Non è presente alcuna colonna etichetta nel set di dati con punteggio da confrontare".

    È possibile evitare questi errori aggiungendo il componente Modifica metadati prima del componente Evaluate Model . Usare il selettore di colonna per scegliere la colonna della classe e nell'elenco Campi selezionare Etichetta.

  3. Usare il componente Esegui script Python per modificare le categorie di colonne delle etichette come 1(positivo, normale) e 0(negativo, anomalo).

    label_column_name = 'XXX'
    anomaly_label_category = YY
    dataframe1[label_column_name] = dataframe1[label_column_name].apply(lambda x: 0 if x == anomaly_label_category else 1)
    

Note tecniche

Questo algoritmo usa PCA per approssimare lo spazio secondario che contiene la classe normale. Lo spazio secondario è esteso da eigenvettori associati ai primi eigenvalue della matrice di covarianza dei dati.

Per ogni nuovo input, il rilevatore anomalie calcola prima la proiezione sugli eigentori e quindi calcola l'errore di ricostruzione normalizzato. Questo errore è il punteggio di anomalia. Maggiore è l'errore, maggiore è l'anomalia dell'istanza. Per informazioni dettagliate sul modo in cui viene calcolato lo spazio normale, vedere Wikipedia: Analisi dei componenti principale.

Passaggi successivi

Vedere il set di componenti disponibili per Azure Machine Learning.

Vedere Eccezioni e codici di errore per la finestra di progettazione per un elenco di errori specifici dei componenti della finestra di progettazione.