PCA-Based komponent för avvikelseidentifiering

Den här artikeln beskriver hur du använder komponenten PCA-Based avvikelseidentifiering i Azure Machine Learning-designern för att skapa en modell för avvikelseidentifiering baserat på huvudkomponentanalys (PCA).

Den här komponenten hjälper dig att skapa en modell i scenarier där det är enkelt att hämta träningsdata från en klass, till exempel giltiga transaktioner, men svårt att få tillräckligt med exempel på riktade avvikelser.

För att till exempel identifiera bedrägliga transaktioner har du ofta inte tillräckligt med exempel på bedrägerier att träna på. Men du kan ha många exempel på bra transaktioner. Komponenten PCA-Based Avvikelseidentifiering löser problemet genom att analysera tillgängliga funktioner för att avgöra vad som utgör en "normal" klass. Komponenten tillämpar sedan avståndsmått för att identifiera fall som representerar avvikelser. Med den här metoden kan du träna en modell med hjälp av befintliga obalanserade data.

Mer om analys av huvudkomponent

PCA är en etablerad teknik inom maskininlärning. Den används ofta i undersökande dataanalys eftersom den visar den inre strukturen för data och förklarar variansen i data.

PCA fungerar genom att analysera data som innehåller flera variabler. Den söker efter korrelationer mellan variablerna och avgör vilken kombination av värden som bäst samlar in skillnader i resultat. Dessa kombinerade funktionsvärden används för att skapa ett mer kompakt funktionsutrymme som kallas huvudkomponenter.

För avvikelseidentifiering analyseras varje ny indata. Algoritmen för avvikelseidentifiering beräknar projektionen på eigenvectors, tillsammans med ett normaliserat återuppbyggnadsfel. Det normaliserade felet används som avvikelsepoäng. Ju högre fel desto mer avvikande är instansen.

Mer information om hur PCA fungerar och om implementeringen för avvikelseidentifiering finns i följande artiklar:

Så här konfigurerar du PCA-Based avvikelseidentifiering

  1. Lägg till komponenten PCA-baserad avvikelseidentifiering i pipelinen i designern. Du hittar den här komponenten i kategorin Avvikelseidentifiering .

  2. Välj alternativet Träningsläge i den högra panelen i komponenten. Ange om du vill träna modellen med hjälp av en specifik uppsättning parametrar eller använd en parametersvepning för att hitta de bästa parametrarna.

    Om du vet hur du vill konfigurera modellen väljer du alternativet Enkel parameter och anger en specifik uppsättning värden som argument.

  3. För Antal komponenter som ska användas i PCA anger du antalet utdatafunktioner eller komponenter som du vill använda.

    Beslutet om hur många komponenter som ska inkluderas är en viktig del av experimentdesignen som använder PCA. Allmän vägledning är att du inte bör inkludera samma antal PCA-komponenter som det finns variabler. I stället bör du börja med ett mindre antal komponenter och öka dem tills något kriterium har uppfyllts.

    Det bästa resultatet erhålls när antalet utdatakomponenter är mindre än antalet tillgängliga funktionskolumner i datauppsättningen.

  4. Ange hur mycket översampling som ska utföras under randomiserad PCA-träning. Vid problem med avvikelseidentifiering gör obalanserade data det svårt att tillämpa vanliga PCA-tekniker. Genom att ange en viss mängd översampling kan du öka antalet målinstanser.

    Om du anger 1 utförs ingen översampling. Om du anger ett värde som är högre än 1 genereras ytterligare exempel som ska användas för att träna modellen.

    Det finns två alternativ, beroende på om du använder en parametersvepning eller inte:

    • Översamplingsparameter för randomiserad PCA: Skriv ett enda heltal som representerar förhållandet mellan översampling av minoritetsklassen jämfört med den normala klassen. (Det här alternativet är tillgängligt när du använder träningsmetoden Enkel parameter .)

    Anteckning

    Du kan inte visa datauppsättningen översamplad. Mer information om hur översampling används med PCA finns i Tekniska anteckningar.

  5. Välj alternativet Aktivera indatafunktion för normalisering för att normalisera alla indatafunktioner till ett medelvärde på noll. Normalisering eller skalning till noll rekommenderas vanligtvis för PCA, eftersom målet med PCA är att maximera variansen mellan variabler.

    Det här alternativet är markerat som standard. Avmarkera om värdena redan har normaliserats via en annan metod eller skala.

  6. Anslut en taggad träningsdatauppsättning och en av träningskomponenterna.

    Om du anger alternativet Skapa träningsläge till Enskild parameter använder du komponenten Train Anomaly Detection Model (Träna avvikelseidentifieringsmodell ).

  7. Skicka pipelinen.

Resultat

När träningen är klar kan du spara den tränade modellen. Eller så kan du ansluta den till komponenten Poängsätta modell för att förutsäga avvikelsepoäng.

Så här utvärderar du resultatet av en modell för avvikelseidentifiering:

  1. Kontrollera att en poängkolumn är tillgänglig i båda datauppsättningarna.

    Om du försöker utvärdera en modell för avvikelseidentifiering och får felet "Det finns ingen poängkolumn i den poängsatta datamängden att jämföra" använder du en typisk utvärderingsdatauppsättning som innehåller en etikettkolumn men inga sannolikhetspoäng. Välj en datauppsättning som matchar schemautdata för avvikelseidentifieringsmodeller, som innehåller kolumnerna Poängsatta etiketter och Poängsatta sannolikheter .

  2. Kontrollera att etikettkolumner är markerade.

    Ibland tas de metadata som är associerade med etikettkolumnen bort i pipelinediagrammet. Om detta inträffar kan du få felet "Det finns ingen etikettkolumn i poängsatta datamängder" när du använder komponenten Utvärdera modell för att jämföra resultatet av två modeller för avvikelseidentifiering. Eller så kan du få felet "Det finns ingen etikettkolumn i poängsatta datamängder att jämföra."

    Du kan undvika dessa fel genom att lägga till komponenten Redigera metadata före komponenten Utvärdera modell . Använd kolumnväljaren för att välja klasskolumnen och välj Etikett i listan Fält.

  3. Använd komponenten Execute Python Script (Kör Python-skript) för att justera kolumnkategorierna för etiketter till 1 (positiv, normal) och 0 (negativ, onormal).

    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)
    

Tekniska anteckningar

Den här algoritmen använder PCA för att approximera det underområde som innehåller den normala klassen. Underområdet spänns över av eigenvectors som är associerade med de främsta eigenvaluesna för datakovariansmatrisen.

För varje ny indata beräknar avvikelseidentifieringen först sin projektion på eigenvectors och beräknar sedan det normaliserade återuppbyggnadsfelet. Det här felet är avvikelsepoängen. Ju högre fel, desto mer avvikande instans. Mer information om hur det normala utrymmet beräknas finns i Wikipedia: Analys av huvudkomponent.

Nästa steg

Se den uppsättning komponenter som är tillgängliga för Azure Machine Learning.

Se Undantag och felkoder för designern för en lista över fel som är specifika för designerkomponenterna.