Share via


Aanbevolen procedures voor het gebruik van de Multivariate Anomaly Detector-API

Belangrijk

Vanaf 20 september 2023 kunt u geen nieuwe Anomaly Detector-resources maken. De Anomaly Detector-service wordt op 1 oktober 2026 buiten gebruik gesteld.

Dit artikel bevat richtlijnen voor aanbevolen procedures die moeten worden gevolgd bij het gebruik van de MVAD-API's (Multivariate Anomaly Detector). In deze zelfstudie gaat u:

  • API-gebruik: informatie over het gebruik van MVAD zonder fouten.
  • Data engineering: leer hoe u uw gegevens het beste kunt koken, zodat MVAD met een betere nauwkeurigheid presteert.
  • Veelvoorkomende valkuilen: leer hoe u veelvoorkomende valkuilen kunt voorkomen die klanten tegenkomen.
  • Veelgestelde vragen: Meer informatie over antwoorden op veelgestelde vragen.

API-gebruik

Volg de instructies in deze sectie om fouten te voorkomen tijdens het gebruik van MVAD. Als u nog steeds fouten krijgt, raadpleegt u de volledige lijst met foutcodes voor uitleg en acties die u moet ondernemen.

Invoerparameters

Vereiste parameters

Deze drie parameters zijn vereist voor trainings- en deductie-API-aanvragen:

  • source - De koppeling naar uw zip-bestand in Azure Blob Storage met Shared Access Signatures (SAS).
  • startTime - De begintijd van de gegevens die worden gebruikt voor training of deductie. Als het eerder is dan de werkelijke vroegste tijdstempel in de gegevens, wordt de werkelijke vroegste tijdstempel gebruikt als het beginpunt.
  • endTime - De eindtijd van de gegevens die worden gebruikt voor training of deductie die later dan of gelijk aan startTimemoet zijn. Als endTime dit later is dan de werkelijke laatste tijdstempel in de gegevens, wordt de werkelijke laatste tijdstempel gebruikt als het eindpunt. Als endTime dit gelijk is aan startTime, betekent dit deductie van één gegevenspunt dat vaak wordt gebruikt in streamingscenario's.

Optionele parameters voor trainings-API

Andere parameters voor de trainings-API zijn optioneel:

  • slidingWindow - Hoeveel gegevenspunten worden gebruikt om afwijkingen te bepalen. Een geheel getal tussen 28 en 2.880. De standaardwaarde is 300. Als slidingWindow dit het geval is k voor modeltraining, moeten ten minste k punten toegankelijk zijn vanuit het bronbestand tijdens deductie om geldige resultaten te verkrijgen.

    MVAD neemt een segment van gegevenspunten om te bepalen of het volgende gegevenspunt een anomalie is. De lengte van het segment is slidingWindow. Houd rekening met twee dingen bij het kiezen van een slidingWindow waarde:

    1. De eigenschappen van uw gegevens: of deze periodiek en de steekproeffrequentie zijn. Wanneer uw gegevens periodiek zijn, kunt u de lengte van 1 - 3 cycli instellen als de slidingWindow. Wanneer uw gegevens een hoge frequentie hebben (kleine granulariteit), zoals minuutniveau of tweede niveau, kunt u een relatief hogere waarde slidingWindowinstellen.
    2. De afweging tussen trainings-/deductietijd en mogelijke invloed op de prestaties. Een grotere slidingWindow kan leiden tot langere trainings-/deductietijd. Er is geen garantie dat grotere slidingWindows leiden tot nauwkeurigheidswinsten. Een klein slidingWindow model kan ertoe leiden dat het model moeilijk kan worden geconvergeerd naar een optimale oplossing. Het is bijvoorbeeld moeilijk om afwijkingen te detecteren wanneer slidingWindow er slechts twee punten zijn.
  • alignMode - Meerdere variabelen (tijdreeksen) uitlijnen op tijdstempels. Er zijn twee opties voor deze parameter en Inner , en Outerde standaardwaarde is Outer.

    Deze parameter is essentieel wanneer er sprake is van een onjuiste uitlijning tussen tijdstempelreeksen van de variabelen. Het model moet de variabelen uitlijnen op dezelfde tijdstempelreeks voordat het verder wordt verwerkt.

    Inner betekent dat het model alleen detectieresultaten rapporteert op tijdstempels waarop elke variabele een waarde heeft, dat wil zeggen het snijpunt van alle variabelen. Outer betekent dat het model detectieresultaten rapporteert op tijdstempels waarop een variabele een waarde heeft, dat wil zeggen de samenvoeging van alle variabelen.

    Hier volgt een voorbeeld om verschillende alignModel waarden uit te leggen.

    Variabele-1

    tijdstempel waarde
    2020-11-01 1
    2020-11-02 2
    2020-11-04 4
    2020-11-05 5

    Variabele-2

    tijdstempel waarde
    2020-11-01 1
    2020-11-02 2
    2020-11-03 3
    2020-11-04 4

    Inner twee variabelen samenvoegen

    tijdstempel Variabele-1 Variabele-2
    2020-11-01 1 1
    2020-11-02 2 2
    2020-11-04 4 4

    Outer twee variabelen samenvoegen

    tijdstempel Variabele-1 Variabele-2
    2020-11-01 1 1
    2020-11-02 2 2
    2020-11-03 nan 3
    2020-11-04 4 4
    2020-11-05 5 nan
  • fillNAMethod - De samengevoegde tabel invullen nan . Er ontbreken mogelijk waarden in de samengevoegde tabel en deze moeten correct worden verwerkt. We bieden verschillende methoden om ze op te vullen. De opties zijn Linear, Previous, , Subsequenten Zeroen Fixed de standaardwaarde is Linear.

    Optie Methode
    Linear Waarden doorvoeren nan door lineaire interpolatie
    Previous Geef de laatste geldige waarde door om hiaten te vullen. Voorbeeld: [1, 2, nan, 3, nan, 4] ->[1, 2, 2, 3, 3, 4]
    Subsequent Gebruik de volgende geldige waarde om hiaten te vullen. Voorbeeld: [1, 2, nan, 3, nan, 4] ->[1, 2, 3, 3, 4, 4]
    Zero Vul nan waarden in met 0.
    Fixed Vul nan waarden in met een opgegeven geldige waarde die moet worden opgegeven in paddingValue.
  • paddingValue - Opvullingswaarde wordt gebruikt om in dat geval op te vullen nanfillNAMethodFixed en moet in dat geval worden opgegeven. In andere gevallen is dit optioneel.

  • displayName - Dit is een optionele parameter die wordt gebruikt om modellen te identificeren. U kunt deze bijvoorbeeld gebruiken om parameters, gegevensbronnen en andere metagegevens over het model en de bijbehorende invoergegevens te markeren. De standaardwaarde is een lege tekenreeks.

Invoergegevensschema

MVAD detecteert afwijkingen van een groep met metrische gegevens en we noemen elke metrische waarde een variabele of een tijdreeks.

  • U kunt het voorbeeldgegevensbestand van Microsoft downloaden om het geaccepteerde schema te controleren van: https://aka.ms/AnomalyDetector/MVADSampleData

  • Elke variabele moet twee en slechts twee velden timestamp bevatten en valuemoet worden opgeslagen in een csv-bestand (door komma's gescheiden waarden).

  • De kolomnamen van het CSV-bestand moeten nauwkeurig timestamp en valuehoofdlettergevoelig zijn.

  • De waarden moeten voldoen aan ISO 8601. Dit timestampvalue kunnen gehele getallen of decimalen zijn met een willekeurig aantal decimalen. Een goed voorbeeld van de inhoud van een CSV-bestand:

    tijdstempel waarde
    2019-04-01T00:00:00Z 5
    2019-04-01T00:01:00Z 3,6
    2019-04-01T00:02:00Z 4
    ... ...

    Notitie

    Als uw tijdstempels uren, minuten en/of seconden hebben, moet u ervoor zorgen dat deze correct worden afgerond voordat u de API's aanroept.

    Als uw gegevensfrequentie bijvoorbeeld elke 30 seconden één gegevenspunt moet zijn, maar u tijdstempels ziet, zoals '12:00:01' en '12:00:28', is het een sterk signaal dat u de tijdstempels vooraf moet verwerken naar nieuwe waarden zoals '12:00:00' en '12:00:30'.

    Raadpleeg de sectie 'Timestamp round-up' in het document met aanbevolen procedures voor meer informatie.

  • De naam van het CSV-bestand wordt gebruikt als de naam van de variabele en moet uniek zijn. Bijvoorbeeld 'temperature.csv' en 'humidity.csv'.

  • Variabelen voor training en variabelen voor deductie moeten consistent zijn. Als u bijvoorbeeld gebruikmaakt vanseries_1, series_2, , series_3en series_4series_5 voor training, moet u precies dezelfde variabelen voor deductie opgeven.

  • CSV-bestanden moeten worden gecomprimeerd in een zip-bestand en geüpload naar een Azure Blob-container. Het zip-bestand kan elke gewenste naam hebben.

Mapstructuur

Een veelvoorkomende fout bij het voorbereiden van gegevens is extra mappen in het zip-bestand. Stel dat de naam van het zip-bestand is series.zip. Na het decomprimeren van de bestanden naar een nieuwe map ./series, is het juiste pad naar CSV-bestanden ./series/series_1.csv en kan een verkeerd pad zijn ./series/foo/bar/series_1.csv.

Het juiste voorbeeld van de mapstructuur na het decomprimeren van het zip-bestand in Windows

.
└── series
    ├── series_1.csv
    ├── series_2.csv
    ├── series_3.csv
    ├── series_4.csv
    └── series_5.csv

Een onjuist voorbeeld van de mapstructuur na het decomprimeren van het zip-bestand in Windows

.
└── series
    └── series
        ├── series_1.csv
        ├── series_2.csv
        ├── series_3.csv
        ├── series_4.csv
        └── series_5.csv

Data engineering

Nu kunt u uw code zonder fouten uitvoeren met MVAD-API's. Wat kan er worden gedaan om de nauwkeurigheid van uw model te verbeteren?

Gegevenskwaliteit

  • Naarmate het model normale patronen van historische gegevens leert, moeten de trainingsgegevens de algemene normale status van het systeem vertegenwoordigen. Het is moeilijk voor het model om deze soorten patronen te leren als de trainingsgegevens vol afwijkingen zijn. Een empirische drempelwaarde van abnormale snelheid is 1% en lager voor een goede nauwkeurigheid.
  • Over het algemeen moet de ontbrekende waardeverhouding van trainingsgegevens lager zijn dan 20%. Te veel ontbrekende gegevens kunnen tot gevolg hebben dat automatisch ingevulde waarden (meestal lineaire waarden of constante waarden) worden geleerd als normale patronen. Dit kan ertoe leiden dat echte (ontbrekende) gegevenspunten worden gedetecteerd als afwijkingen.

Gegevenshoeveelheid

  • Het onderliggende model van MVAD heeft miljoenen parameters. Er is een minimum aantal gegevenspunten nodig om een optimale set parameters te leren. De empirische regel is dat u 5000 of meer gegevenspunten (tijdstempels) per variabele moet opgeven om het model te trainen voor een goede nauwkeurigheid. Hoe meer trainingsgegevens, hoe nauwkeuriger. In gevallen waarin u echter niet zoveel gegevens kunt verzamelen, raden we u nog steeds aan om met minder gegevens te experimenteren en te zien of de gekraakte nauwkeurigheid nog steeds acceptabel is.

  • Telkens wanneer u de deductie-API aanroept, moet u ervoor zorgen dat het brongegevensbestand precies genoeg gegevenspunten bevat. Dat is normaal gesproken slidingWindow + het aantal gegevenspunten dat echt deductieresultaten nodig heeft. In een streaming-case bijvoorbeeld wanneer u telkens wanneer u een nieuwe tijdstempel wilt deductie uitvoeren, kan het gegevensbestand alleen het voorloop-plus-EN-gegevenspunt slidingWindow bevatten. Vervolgens kunt u doorgaan en een ander zip-bestand maken met hetzelfde aantal gegevenspunten (slidingWindow+1), maar één stap naar de 'rechterkant' verplaatsen en verzenden voor een andere deductietaak.

    Alles wat buiten dat of "voor" het voorloopschuifvenster valt, heeft helemaal geen invloed op het deductieresultaat en kan alleen een downgrade van de prestaties veroorzaken. Alles hieronder kan leiden tot een NotEnoughInput fout.

Round-up van tijdstempel

In een groep variabelen (tijdreeksen) kan elke variabele worden verzameld uit een onafhankelijke bron. De tijdstempels van verschillende variabelen kunnen inconsistent zijn met elkaar en met de bekende frequenties. Hier volgt een eenvoudig voorbeeld.

Variabele-1

tijdstempel waarde
12:00:01 1.0
12:00:35 1.5
12:01:02 0,9
12:01:31 2.2
12:02:08 1.3

Variabele-2

tijdstempel waarde
12:00:03 2.2
12:00:37 2.6
12:01:09 1.4
12:01:34 1,7
12:02:04 2.0

We hebben twee variabelen verzameld van twee sensoren die elke 30 seconden één gegevenspunt verzenden. De sensoren verzenden echter geen gegevenspunten met een strikte even frequentie, maar soms eerder en soms later. Omdat MVAD rekening houdt met correlaties tussen verschillende variabelen, moeten tijdstempels correct worden uitgelijnd, zodat de metrische gegevens de toestand van het systeem correct kunnen weerspiegelen. In het bovenstaande voorbeeld moeten tijdstempels van variabele 1 en variabele 2 goed worden afgerond op de frequentie vóór de uitlijning.

Laten we eens kijken wat er gebeurt als ze niet vooraf worden verwerkt. Als we zijn ingesteld alignMode op ( Outer wat betekent samenvoeging van twee sets), is de samengevoegde tabel:

tijdstempel Variabele-1 Variabele-2
12:00:01 1.0 nan
12:00:03 nan 2.2
12:00:35 1.5 nan
12:00:37 nan 2.6
12:01:02 0,9 nan
12:01:09 nan 1.4
12:01:31 2.2 nan
12:01:34 nan 1,7
12:02:04 nan 2.0
12:02:08 1.3 nan

nan geeft ontbrekende waarden aan. De samengevoegde tabel is natuurlijk niet wat u zou verwachten. Variabele 1 en variabele 2 interleave, en het MVAD-model kan geen informatie over correlaties extraheren. Als dit is ingesteld alignModeInner, is de samengevoegde tabel leeg omdat er geen algemene tijdstempel is in variabele 1 en variabele 2.

Daarom moeten de tijdstempels van variabele 1 en variabele 2 vooraf worden verwerkt (afgerond op de dichtstbijzijnde tijdstempels van 30 seconden) en de nieuwe tijdreeksen zijn:

Variabele-1

tijdstempel waarde
12:00:00 1.0
12:00:30 1.5
12:01:00 0,9
12:01:30 2.2
12:02:00 1.3

Variabele-2

tijdstempel waarde
12:00:00 2.2
12:00:30 2.6
12:01:00 1.4
12:01:30 1,7
12:02:00 2.0

De samengevoegde tabel is nu redelijker.

tijdstempel Variabele-1 Variabele-2
12:00:00 1.0 2.2
12:00:30 1.5 2.6
12:01:00 0,9 1.4
12:01:30 2.2 1,7
12:02:00 1.3 2.0

Waarden van verschillende variabelen bij dichte tijdstempels zijn goed uitgelijnd en het MVAD-model kan nu correlatie-informatie extraheren.

Beperkingen

Er zijn enkele beperkingen in zowel de trainings- als deductie-API's. Houd rekening met deze beperkingen om fouten te voorkomen.

Algemene beperkingen

  • Schuifvenster: 28-2880 tijdstempels, standaard is 300. Stel voor periodieke gegevens de lengte van 2-4 cycli in als het schuifvenster.
  • Variabelenummers: voor training en batchdeductie, maximaal 301 variabelen.

Trainingsbeperkingen

  • Tijdstempels: maximaal 1000000. Te weinig tijdstempels kunnen de modelkwaliteit verlagen. Raad aan om meer dan 5000 tijdstempels te hebben.
  • Granulariteit: de minimale granulariteit is per_second.

Beperkingen voor batchdeductie

  • Tijdstempels: maximaal 20000, ten minste 1 schuifvensterlengte.

Beperkingen voor streamingdeductie

  • Tijdstempels: maximaal 2880, ten minste 1 schuifvensterlengte.
  • Tijdstempels detecteren: van 1 tot 10.

Modelkwaliteit

Hoe omgaan met fout-positief en fout-negatief in echte scenario's?

We hebben ernst opgegeven die de significantie van afwijkingen aangeeft. Fout-positieven kunnen worden gefilterd door een drempelwaarde in te stellen voor de ernst. Soms worden er te veel fout-positieven weergegeven wanneer er patroonverschuivingen zijn in de deductiegegevens. In dergelijke gevallen moet een model mogelijk opnieuw worden getraind op nieuwe gegevens. Als de trainingsgegevens te veel afwijkingen bevatten, kunnen er fout-negatieven zijn in de detectieresultaten. Dit komt doordat het model patronen van de trainingsgegevens en afwijkingen leert, kan leiden tot vooroordelen in het model. Het opschonen van gegevens kan dus helpen bij het verminderen van fout-negatieven.

Hoe kunt u schatten welk model het beste kan worden gebruikt op basis van trainingsverlies en validatieverlies?

Over het algemeen is het moeilijk om te bepalen welk model het beste is zonder een gelabelde gegevensset. We kunnen echter gebruikmaken van het trainings- en validatieverlies om een ruwe schatting te maken en die slechte modellen te negeren. Eerst moeten we kijken of trainingsverlies convergeren. Uiteenlopende verliezen geven vaak een slechte kwaliteit van het model aan. Ten tweede kunnen verlieswaarden helpen bepalen of underfitting of overfitting plaatsvindt. Modellen die underfitting of overfitting zijn, hebben mogelijk geen gewenste prestaties. Ten derde, hoewel de definitie van de verliesfunctie niet rechtstreeks de detectieprestaties weergeeft, kunnen verlieswaarden een hulphulpprogramma zijn om de kwaliteit van het model te schatten. Lage verlieswaarde is een noodzakelijke voorwaarde voor een goed model, dus we kunnen modellen met hoge verlieswaarden negeren.

Veelvoorkomende valkuilen

Naast de foutcodetabel hebben we geleerd van klanten zoals u enkele veelvoorkomende valkuilen tijdens het gebruik van MVAD-API's. Deze tabel helpt u om deze problemen te voorkomen.

Pitfall Gevolg Uitleg en oplossing
Tijdstempels in trainingsgegevens en/of deductiegegevens zijn niet naar boven afgerond om te voldoen aan de respectieve gegevensfrequentie van elke variabele. De tijdstempels van de deductieresultaten zijn niet zoals verwacht: te weinig tijdstempels of te veel tijdstempels. Raadpleeg de round-up van timestamp.
Te veel afwijkende gegevenspunten in de trainingsgegevens De nauwkeurigheid van het model wordt negatief beïnvloed omdat er afwijkende gegevenspunten als normale patronen tijdens de training worden behandeld. Empirisch kunt u de abnormale snelheid met of minder dan 1% behouden.
Te weinig trainingsgegevens De nauwkeurigheid van het model is aangetast. Empirisch vereist het trainen van een MVAD-model 15.000 of meer gegevenspunten (tijdstempels) per variabele om een goede nauwkeurigheid te behouden.
Alle gegevenspunten als isAnomaly=true afwijkingen gebruiken Te veel fout-positieven U moet zowel isAnomaly als severity (of score) gebruiken om afwijkingen die niet ernstig zijn uit te luizen en (optioneel) groepering te gebruiken om de duur van de afwijkingen te controleren om willekeurige ruis te onderdrukken. Raadpleeg de sectie Veelgestelde vragen hieronder voor het verschil tussen severity en score.
Submappen worden in het gegevensbestand gezipt voor training of deductie. De CSV-gegevensbestanden in submappen worden genegeerd tijdens de training en/of deductie. Er zijn geen submappen toegestaan in het zip-bestand. Raadpleeg de mapstructuur voor meer informatie.
Te veel gegevens in het deductiegegevensbestand: bijvoorbeeld het comprimeren van alle historische gegevens in het zip-bestand van deductiegegevens Er worden mogelijk geen fouten weergegeven, maar u ondervindt verminderde prestaties wanneer u het zip-bestand probeert te uploaden naar Azure Blob en wanneer u deductie probeert uit te voeren. Raadpleeg de hoeveelheid gegevens voor meer informatie.
Anomaly Detector-resources maken in Azure-regio's die MVAD nog niet ondersteunen en MVAD-API's aanroepen Er wordt een fout 'resource niet gevonden' weergegeven tijdens het aanroepen van de MVAD-API's. Tijdens de preview-fase is MVAD alleen beschikbaar voor beperkte regio's. Maak een bladwijzer voor wat er nieuw is in Anomaly Detector om up-to-date te blijven met de implementaties van MVAD-regio's. U kunt ook een GitHub-probleem indienen of contact met ons opnemen om AnomalyDetector@microsoft.com specifieke regio's aan te vragen.

Veelgestelde vragen

Hoe werkt MVAD-schuifvenster?

Laten we twee voorbeelden gebruiken om te leren hoe het schuifvenster van MVAD werkt. Stel dat u = 1440 hebt ingesteld slidingWindow en dat uw invoergegevens een granulariteit van één minuut hebben.

  • Streamingscenario: u wilt voorspellen of het ONE-gegevenspunt op '2021-01-02T00:00:00Z' afwijkend is. Uw startTime en endTime zijn dezelfde waarde ('2021-01-02T00:00:00Z'). Uw deductiegegevensbron moet echter ten minste 1440 + 1 tijdstempels bevatten. Omdat MVAD de voorloopgegevens vóór het doelgegevenspunt neemt ('2021-01-02T00:00:00Z') om te bepalen of het doel een anomalie is. De lengte van de benodigde voorloopgegevens is slidingWindow of 1440 in dit geval. 1.440 = 60 * 24, dus uw invoergegevens moeten beginnen vanaf uiterlijk "2021-01-01T00:00:00Z".

  • Batch-scenario: u hebt meerdere doelgegevenspunten om te voorspellen. Je endTime zal groter zijn dan je startTime. Deductie in dergelijke scenario's wordt uitgevoerd op een 'bewegend venster'. MVAD gebruikt bijvoorbeeld gegevens van 2021-01-01T00:00:00Z tot 2021-01-01T23:59:00Z (inclusief) om te bepalen of gegevens 2021-01-02T00:00:00Z afwijkend zijn. Vervolgens wordt verder aangegeven en worden gegevens van 2021-01-01T00:01:00Z ( 2021-01-02T00:00:00Z inclusief) naar (inclusief) gebruikt om te bepalen of gegevens 2021-01-02T00:01:00Z afwijkend zijn. Het gaat op dezelfde manier verder (waarbij 1440 gegevenspunten moeten worden vergeleken) tot de laatste tijdstempel die is opgegeven door endTime (of de werkelijke laatste tijdstempel). Daarom moet uw deductiegegevensbron gegevens bevatten die beginnen van startTime - slidingWindow en idealiter gegevens bevatten in totaal slidingWindow + ().endTime - startTime

Wat is het verschil tussen severity en score?

Normaal gesproken raden we u aan om te gebruiken severity als filter om 'anomalieën' uit te zaaien die niet zo belangrijk zijn voor uw bedrijf. Afhankelijk van uw scenario en gegevenspatroon hebben deze afwijkingen die minder belangrijk zijn vaak relatief lagere severity waarden of zelfstandige (niet-aaneengeslagen) hoge severity waarden, zoals willekeurige pieken.

In gevallen waarin u meer geavanceerde regels nodig hebt dan drempelwaarden voor severity of de duur van continue hoge severity waarden, kunt u gebruiken score om krachtigere filters te bouwen. Als u begrijpt hoe MVAD gebruikt score om afwijkingen te bepalen, kan dit helpen:

We overwegen of een gegevenspunt afwijkend is vanuit zowel globaal als lokaal perspectief. Als score een tijdstempel hoger is dan een bepaalde drempelwaarde, wordt de tijdstempel gemarkeerd als een anomalie. Als score deze lager is dan de drempelwaarde, maar relatief hoger is in een segment, wordt deze ook gemarkeerd als anomalie.

Volgende stappen