Delen via


Op PCA gebaseerde anomaliedetectieonderdeel

In dit artikel wordt beschreven hoe u het op PCA gebaseerde anomaliedetectieonderdeel in azure Machine Learning Designer gebruikt om een anomaliedetectiemodel te maken op basis van PCA (Principal Component Analysis).

Dit onderdeel helpt u bij het bouwen van een model in scenario's waarbij het eenvoudig is om trainingsgegevens van één klasse op te halen, zoals geldige transacties, maar moeilijk om voldoende voorbeelden van de beoogde afwijkingen te krijgen.

Als u bijvoorbeeld frauduleuze transacties wilt detecteren, hebt u vaak niet genoeg voorbeelden van fraude om mee te trainen. Maar misschien hebt u veel voorbeelden van goede transacties. Het probleem wordt opgelost met het onderdeel Anomaliedetectie op basis van PCA door beschikbare functies te analyseren om te bepalen wat een 'normale' klasse is. Het onderdeel past vervolgens metrische gegevens over afstand toe om gevallen te identificeren die afwijkingen vertegenwoordigen. Met deze benadering kunt u een model trainen met behulp van bestaande onevenwichtige gegevens.

Meer informatie over analyse van principal-onderdelen

PCA is een gevestigde techniek in machine learning. Het wordt vaak gebruikt in verkennende gegevensanalyse, omdat hiermee de interne structuur van de gegevens wordt weergegeven en wordt de variantie in de gegevens uitgelegd.

PCA werkt door gegevens te analyseren die meerdere variabelen bevatten. Het zoekt naar correlaties tussen de variabelen en bepaalt de combinatie van waarden die het beste verschillen in resultaten vastlegt. Deze gecombineerde functiewaarden worden gebruikt om een compactere functieruimte te maken, de belangrijkste onderdelen genoemd.

Voor anomaliedetectie wordt elke nieuwe invoer geanalyseerd. Het anomaliedetectie-algoritme berekent de projectie op de eigenvectors, samen met een genormaliseerde reconstructiefout. De genormaliseerde fout wordt gebruikt als anomaliescore. Hoe hoger de fout, hoe afwijkender het exemplaar is.

Zie de volgende documenten voor meer informatie over hoe PCA werkt en over de implementatie voor anomaliedetectie:

Anomaliedetectie op basis van PCA configureren

  1. Voeg het onderdeel Anomaliedetectie op basis van PCA toe aan uw pijplijn in de ontwerpfunctie. U vindt dit onderdeel in de categorie Anomaliedetectie .

  2. Selecteer in het rechterdeelvenster van het onderdeel de optie Trainingsmodus . Geef aan of u het model wilt trainen met behulp van een specifieke set parameters, of gebruik een parameter opruimen om de beste parameters te vinden.

    Als u weet hoe u het model wilt configureren, selecteert u de optie Enkele parameter en geeft u een specifieke set waarden op als argumenten.

  3. Als u het aantal onderdelen wilt gebruiken in PCA, geeft u het gewenste aantal uitvoerfuncties of onderdelen op.

    De beslissing over het aantal onderdelen dat moet worden opgenomen, is een belangrijk onderdeel van het experimentontwerp dat gebruikmaakt van PCA. Algemene richtlijnen zijn dat u niet hetzelfde aantal PCA-onderdelen moet opnemen als er variabelen zijn. In plaats daarvan moet u beginnen met een kleiner aantal onderdelen en deze verhogen totdat aan een criterium wordt voldaan.

    De beste resultaten worden verkregen wanneer het aantal uitvoeronderdelen kleiner is dan het aantal functiekolommen dat beschikbaar is in de gegevensset.

  4. Geef de hoeveelheid oversampling op die moet worden uitgevoerd tijdens een gerandomiseerde PCA-training. Bij anomaliedetectieproblemen maken onevenwichtige gegevens het moeilijk om standaard PCA-technieken toe te passen. Door een bepaalde hoeveelheid oversampling op te geven, kunt u het aantal doelexemplaren verhogen.

    Als u 1 opgeeft, wordt er geen oversampling uitgevoerd. Als u een waarde opgeeft die hoger is dan 1, worden er extra steekproeven gegenereerd die moeten worden gebruikt bij het trainen van het model.

    Er zijn twee opties, afhankelijk van of u een parametervegering gebruikt of niet:

    • Parameter voor oversampling voor gerandomiseerde PCA: typ één geheel getal dat de verhouding van oversampling van de minderheidsklasse boven de normale klasse vertegenwoordigt. (Deze optie is beschikbaar wanneer u de Trainingsmethode voor één parameter .)

    Notitie

    U kunt de oversampled gegevensset niet weergeven. Zie Technische notities voor meer informatie over het gebruik van oversampling met PCA.

  5. Selecteer de optie Invoerfunctie gemiddelde normalisatiefunctie inschakelen om alle invoerfuncties te normaliseren tot een gemiddelde van nul. Normalisatie of schalen naar nul wordt over het algemeen aanbevolen voor PCA, omdat het doel van PCA is om de variantie tussen variabelen te maximaliseren.

    Deze optie is standaard geselecteerd. Hef de selectie op als waarden al zijn genormaliseerd via een andere methode of schaal.

  6. Verbind een getagde trainingsgegevensset en een van de trainingsonderdelen.

    Als u de optie Trainermodus maken instelt op Single Parameter, gebruikt u het onderdeel Train Anomaly Detection Model.

  7. Verzend de pijplijn.

Resultaten

Wanneer de training is voltooid, kunt u het getrainde model opslaan. U kunt het ook verbinden met het onderdeel Score Model om afwijkingsscores te voorspellen.

De resultaten van een anomaliedetectiemodel evalueren:

  1. Zorg ervoor dat een scorekolom beschikbaar is in beide gegevenssets.

    Als u probeert een anomaliedetectiemodel te evalueren en de fout 'Er is geen scorekolom in scoregegevensset om te vergelijken' wordt weergegeven, gebruikt u een typische evaluatiegegevensset die een labelkolom bevat, maar geen waarschijnlijkheidsscores. Kies een gegevensset die overeenkomt met de schema-uitvoer voor anomaliedetectiemodellen, waaronder scored labels en scored waarschijnlijkheidskolommen .

  2. Zorg ervoor dat labelkolommen zijn gemarkeerd.

    Soms worden de metagegevens die aan de labelkolom zijn gekoppeld, verwijderd in de pijplijngrafiek. Als dit gebeurt, krijgt u, wanneer u het onderdeel Evaluate Model gebruikt om de resultaten van twee anomaliedetectiemodellen te vergelijken, mogelijk de fout 'Er is geen labelkolom in scored gegevensset'. Of u krijgt mogelijk de fout 'Er is geen labelkolom in de gescoorde gegevensset om te vergelijken'.

    U kunt deze fouten voorkomen door het onderdeel Metagegevens bewerken toe te voegen vóór het onderdeel Evaluate Model . Gebruik de kolomkiezer om de klassekolom te kiezen en selecteer label in de lijst Velden.

  3. Gebruik het onderdeel Python-script uitvoeren om kolomcategorieën voor labels aan te passen als 1(positief, normaal) en 0(negatief, abnormaal).

    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)
    

Technische notities

Dit algoritme maakt gebruik van PCA om de subruimte die de normale klasse bevat te benaderen. De subruimte wordt beheerd door eigenvectors die zijn gekoppeld aan de bovenste eigenwaarden van de matrix voor gegevenscovariantie.

Voor elke nieuwe invoer berekent de anomaliedetector eerst de projectie op de eigenvectors en berekent vervolgens de genormaliseerde reconstructiefout. Deze fout is de anomaliescore. Hoe hoger de fout, hoe afwijkend het exemplaar. Zie Wikipedia: Hoofdonderdeelanalyse voor meer informatie over hoe de normale ruimte wordt berekend.

Volgende stappen

Bekijk de set onderdelen die beschikbaar zijn voor Azure Machine Learning.

Zie Uitzonderingen en foutcodes voor de ontwerpfunctie voor een lijst met fouten die specifiek zijn voor de onderdelen van de ontwerpfunctie.