PCA-Based onderdeel anomaliedetectie

In dit artikel wordt beschreven hoe u het onderdeel PCA-Based Anomaliedetectie 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 waarin het eenvoudig is om trainingsgegevens op te halen uit één klasse, 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 op te trainen. Maar u kunt veel voorbeelden van goede transacties hebben. Het onderdeel PCA-Based anomaliedetectie lost het probleem op door de beschikbare functies te analyseren om te bepalen wat een 'normale' klasse is. Het onderdeel past vervolgens metrische afstandsgegevens toe om gevallen te identificeren die afwijkingen vertegenwoordigen. Met deze benadering kunt u een model trainen met behulp van bestaande onbalansgegevens.

Meer informatie over analyse van principal-onderdelen

PCA is een gangbare techniek in machine learning. Het wordt vaak gebruikt bij verkennende gegevensanalyse omdat hiermee de interne structuur van de gegevens wordt weergegeven en de afwijking in de gegevens wordt 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 die de principal-onderdelen wordt genoemd.

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

Zie de volgende artikelen voor meer informatie over de werking van PCA en over de implementatie voor anomaliedetectie:

Anomaliedetectie PCA-Based configureren

  1. Voeg het onderdeel PCA-gebaseerde anomaliedetectie 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-sweep 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. Geef bij Aantal onderdelen dat moet worden gebruikt in PCA 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 bepaald 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 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 voorbeelden gegenereerd voor gebruik bij het trainen van het model.

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

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

    Notitie

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

  5. Selecteer de optie Gemiddelde normalisatie van invoerfunctie 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 ingeschakeld. Hef de selectie op als waarden al zijn genormaliseerd via een andere methode of schaal.

  6. Een getagde trainingsgegevensset verbinden met een van de trainingsonderdelen.

    Als u de optie Trainermodus maken instelt op Enkele parameter, gebruikt u het onderdeel Model voor anomaliedetectie trainen .

  7. Verzend de pijplijn.

Resultaten

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

De resultaten van een anomaliedetectiemodel evalueren:

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

    Als u een anomaliedetectiemodel wilt evalueren en de fout 'Er is geen scorekolom in de scoregegevensset om te vergelijken' krijgt, gebruikt u een typische evaluatiegegevensset die een labelkolom bevat, maar geen waarschijnlijkheidsscores. Kies een gegevensset die overeenkomt met de schema-uitvoer voor modellen voor anomaliedetectie, waaronder de kolommen Scored Labels en Scored Probabilities .

  2. Zorg ervoor dat labelkolommen zijn gemarkeerd.

    Soms worden de metagegevens die zijn gekoppeld aan de labelkolom verwijderd in de pijplijngrafiek. Als dit gebeurt en u het onderdeel Evaluate Model gebruikt om de resultaten van twee modellen voor anomaliedetectie te vergelijken, krijgt u mogelijk de fout 'Er is geen labelkolom in de scorede gegevensset'. Of u krijgt mogelijk de fout 'Er is geen labelkolom in de scoregegevensset om te vergelijken'.

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

  3. Gebruik het onderdeel Python-script uitvoeren om labelkolomcategorieën 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 opmerkingen

Dit algoritme maakt gebruik van PCA om de subruimte met de klasse Normaal te benaderen. De subruimte wordt omspannen door eigenvectoren die zijn gekoppeld aan de belangrijkste eigenwaarden van de gegevenscovariantiematrix.

Voor elke nieuwe invoer berekent de anomaliedetectie eerst de projectie op de eigenvectoren en berekent vervolgens de genormaliseerde reconstructiefout. Deze fout is de anomaliescore. Hoe hoger de fout, hoe afwijkender het exemplaar. Zie Wikipedia: Principal component analysis (Engelstalig) 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 ontwerper voor een lijst met fouten die specifiek zijn voor de onderdelen van de ontwerper.