PCA-baserad komponent för avvikelseidentifiering

Den här artikeln beskriver hur du använder komponenten PCA-baserad avvikelseidentifiering i Azure Mašinsko učenje designer 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å de riktade avvikelserna.

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-baserad 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 huvudkomponentanalys

PCA är en etablerad teknik inom maskininlärning. Den används ofta i undersökande dataanalys eftersom den visar datans inre struktur 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 utfall. 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 sin projektion 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-baserad avvikelseidentifiering

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

  2. I den högra panelen i komponenten väljer du alternativet Träningsläge . Ange om du vill träna modellen med hjälp av en specifik uppsättning parametrar eller använda 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 uppfylls.

    De bästa resultaten 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 heltal som representerar förhållandet mellan översampling av minoritetsklassen och den normala klassen. (Det här alternativet är tillgängligt när du använder Träningsmetod med en parameter .)

    Kommentar

    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 indatafunktionens medelvärdesnormalisering för att normalisera alla indatafunktioner till ett medelvärde av 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ärden 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 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 modeller för avvikelseidentifiering, som innehåller kolumnerna Poängsatta etiketter och Poängsatta sannolikheter .

  2. Kontrollera att etikettkolumnerna är markerade.

    Ibland tas metadata som är associerade med etikettkolumnen bort i pipelinediagrammet. Om detta inträffar kan du få felet "Det finns ingen etikettkolumn i den poängsatta datamängden" 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 den poängsatta datamängden 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 i listan Fält väljer du Etikett.

  3. Använd komponenten Kör Python-skript för att justera etikettkolumnkategorier som 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 översta eigenvaluesna i 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: Principal component analysis (Wikipedia: Principal component analysis).

Nästa steg

Se den uppsättning komponenter som är tillgängliga för Azure Mašinsko učenje.

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