Best practices voor het gebruik van Anomaly Detector multivariate API

In dit artikel vindt u richtlijnen voor aanbevolen procedures die u kunt volgen bij het gebruik van de MVAD-API's (multivariate Anomaly Detector). In deze zelfstudie gaat u:

  • API-gebruik: meer informatie over het gebruik van MVAD zonder fouten.
  • Data engineering: leer hoe u uw gegevens het beste kunt maken, zodat MVAD nauwkeuriger presteert.
  • Veelvoorkomende valkuilen: meer informatie over het voorkomen van veelvoorkomende valkuilen waar klanten aan voldoen.
  • Veelgestelde vragen: hier vindt u antwoorden op veelgestelde vragen.

API-gebruik

Volg de instructies in deze sectie om fouten tijdens het gebruik van MVAD te voorkomen. Als er nog steeds fouten optreden, raadpleegt u de volledige lijst met foutcodes voor uitleg en acties die moeten worden ondernomen.

Invoerparameters

Vereiste parameters

Deze drie parameters zijn vereist voor api-aanvragen voor training en de deference:

  • source- De koppeling naar uw ZIP-bestand in de Azure Blob Storage shared access signatures (SAS).
  • startTime - De begintijd van gegevens die worden gebruikt voor training of de deferie. Als deze eerder is dan de werkelijke vroegste tijdstempel in de gegevens, wordt de daadwerkelijke vroegste tijdstempel gebruikt als beginpunt.
  • endTime - De eindtijd van gegevens die worden gebruikt voor training of de deferie, die later moet zijn dan of gelijk moet zijn aan startTime . Als later is dan de werkelijke meest recente tijdstempel in de gegevens, wordt de werkelijke laatste tijdstempel gebruikt endTime als het eindpunt. Als endTime gelijk is aan , betekent dit de startTime deferentie 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 2880. De standaardwaarde is 300. Als is voor modeltraining, moeten ten minste punten toegankelijk zijn vanuit het bronbestand tijdens slidingWindow k de k deference om geldige resultaten te krijgen.

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

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

    Deze parameter is essentieel wanneer er een onjuiste uitlijning is tussen tijdstempelreeksen van de variabelen. Het model moet de variabelen uitlijnen op dezelfde tijdstempelreeks voordat verdere verwerking wordt uitgevoerd.

    Innerbetekent dat het model detectieresultaten alleen rapporteert op tijdstempels waarop elke variabele een waarde heeft, dat wil zeggen het snijpunt van alle variabelen. Outerbetekent dat het model detectieresultaten rapporteert over tijdstempels waarop een variabele een waarde heeft, dat wil zeggen de union van alle variabelen.

    Hier is een voorbeeld om verschillende waarden uit alignModel 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 lid maken

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

    Outer twee variabelen lid maken

    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 nan samengevoegde tabel invullen. Mogelijk ontbreken er waarden in de samengevoegde tabel en moeten deze correct worden verwerkt. We bieden verschillende methoden om ze te vullen. De opties zijn Linear , , , en de Previous Subsequent Zero Fixed standaardwaarde is Linear .

    Optie Methode
    Linear Waarden nan opvullen met lineaire interpolatie
    Previous De laatste geldige waarde doorgeven om hiaten op te vullen. Voorbeeld: [1, 2, nan, 3, nan, 4] -> [1, 2, 2, 3, 3, 4]
    Subsequent Gebruik de volgende geldige waarde om hiaten op 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 - De opvullingswaarde wordt gebruikt om nan op te vullen wanneer is en moet in dat geval worden fillNAMethod Fixed 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 invoergegevens te markeren. De standaardwaarde is een lege tekenreeks.

Schema voor invoergegevens

MVAD detecteert afwijkingen in een groep metrische gegevens en we noemen elke metrische gegevens een variabele of een tijdreeks.

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

  • Elke variabele moet twee en slechts twee velden hebben, en , en moeten worden opgeslagen in een timestamp value CSV-bestand (door komma's gescheiden waarden).

  • De kolomnamen van het CSV-bestand moeten nauwkeurig timestamp en value , casegevoelig zijn.

  • De timestamp waarden moeten voldoen aan ISO 8601; de kan gehele getallen of decimalen met een aantal decimalen value zijn. 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 ze goed worden afgerond voordat u de API's aanroept.

    Als uw gegevensfrequentie bijvoorbeeld elke 30 seconden één gegevenspunt moet zijn, maar u wel 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 'Tijdstempel round-up' in het document best practices 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 de deferentie moeten consistent zijn. Als u bijvoorbeeld , , , , en gebruikt voor de training, moet u exact dezelfde variabelen series_1 series_2 voor de series_3 series_4 series_5 deferie verstrekken.

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

Mapstructuur

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

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 de code zonder fouten uitvoeren met MVAD-API's. Wat kan er worden gedaan om de nauwkeurigheid van uw model te verbeteren?

Gegevenskwaliteit

  • Wanneer 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 dit soort patronen te leren als de trainingsgegevens vol afwijkingen zijn. Een empirische drempelwaarde van een abnormaal percentage is 1% en lager voor een goede nauwkeurigheid.
  • Over het algemeen moet de verhouding van ontbrekende waarden van trainingsgegevens lager zijn dan 20%. Te veel ontbrekende gegevens kunnen uiteindelijk leiden tot het leren van automatisch ingevulde waarden (meestal lineaire waarden of constante waarden) als normale patronen. Dit kan ertoe leiden dat echte (niet ontbrekende) gegevenspunten als afwijkingen worden gedetecteerd. Er zijn echter gevallen waarin een hoge ontbrekende verhouding acceptabel is. Als u bijvoorbeeld twee variabelen (tijdreeksen) in een groep hebt die de modus gebruiken om Outer hun tijdstempels uit te lijnen. Een van deze heeft een granulariteit van één minuut, de andere heeft granulariteit per uur. De variabele per uur heeft dan ten minste 59/60 = 98,33% ontbrekende gegevenspunten. In dergelijke gevallen is het prima om de variabele per uur in te vullen met behulp van de enige beschikbare waarde (niet ontbreekt) als deze doorgaans niet te veel fluctueert.

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 15.000 of meer gegevenspunten (tijdstempels) per variabele moet leveren om het model voor een goede nauwkeurigheid te trainen. Over het algemeen is het zo dat hoe meer trainingsgegevens, hoe nauwkeuriger de gegevens zijn. In gevallen waarin u echter niet zoveel gegevens kunt maken, raden we u nog steeds aan te experimenteren met minder gegevens en te kijken of de aangetaste nauwkeurigheid nog steeds acceptabel is.

  • Telkens wanneer u de deference-API aanroept, moet u ervoor zorgen dat het brongegevensbestand net voldoende gegevenspunten bevat. Dat is normaal slidingWindow gesproken + het aantal gegevenspunten dat echt de deferenceresultaten nodig heeft. In een streaming-geval kan het gegevensbestand bijvoorbeeld telkens wanneer u een nieuwe tijdstempel wilt defereren, alleen het voorlooppunt plus één gegevenspunt bevatten. Vervolgens kunt u een ander zip-bestand met hetzelfde aantal gegevenspunten slidingWindow (+ 1) maken en één stap naar de 'rechterkant' verplaatsen en verzenden voor een andere deference-taak. slidingWindow

    Alles buiten dat of 'vóór' de sliding window heeft helemaal geen invloed op het deferentieresultaat en kan alleen leiden tot een downgrade van de prestaties. Alles hieronder dat kan leiden tot een NotEnoughInput fout.

Timestamp round-up

In een groep variabelen (tijdreeksen) kan elke variabele worden verzameld uit een onafhankelijke bron. De tijdstempels van verschillende variabelen zijn mogelijk inconsistent met elkaar en met de bekende frequenties. Hier is 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

Er zijn 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 goed worden uitgelijnd, zodat de metrische gegevens de voorwaarde van het systeem correct kunnen weerspiegelen. In het bovenstaande voorbeeld moeten tijdstempels van variabele 1 en variabele 2 correct 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 op (wat betekent dat we twee sets moeten alignMode samenvoegen), wordt de Outer 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. Uiteraard is de samengevoegde tabel niet wat u had verwacht. Variabele 1 en variabele 2 interleave, en het MVAD-model kan geen informatie extraheren over correlaties ertussen. Als we instellen op , is de samengevoegde tabel leeg omdat variabele 1 en variabele 2 geen veelvoorkomende alignMode Inner tijdstempel hebben.

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

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 close-timestamps zijn goed uitgelijnd en het MVAD-model kan nu correlatiegegevens extraheren.

Veelvoorkomende valkuilen

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

Pitfall Gevolg Uitleg en oplossing
Tijdstempels in trainingsgegevens en/of de deferentiegegevens zijn niet naar boven afgerond om te worden uitgelijnd met de respectieve gegevensfrequentie van elke variabele. De tijdstempels van de deferentieresultaten zijn niet zoals verwacht: te weinig tijdstempels of te veel tijdstempels. Raadpleeg Tijdstempel round-up.
Te veel afwijkende gegevenspunten in de trainingsgegevens De nauwkeurigheid van het model wordt negatief beïnvloed omdat afwijkende gegevenspunten tijdens de training als normale patronen worden behandeld. Empirisch gezien helpt het om de abnormale snelheid op of onder de 1% te houden.
Te weinig trainingsgegevens De nauwkeurigheid van het model is aangetast. Empirisch gezien vereist het trainen van een MVAD-model 15.000 of meer gegevenspunten (tijdstempels) per variabele om een goede nauwkeurigheid te behouden.
Alle gegevenspunten met isAnomaly = true als afwijkingen nemen Te veel fout-positieven U moet zowel als (of ) gebruiken om afwijkingen op te zoeken die niet ernstig zijn en isAnomaly severity (optioneel) groepering te gebruiken om de duur van de afwijkingen te controleren om willekeurige ruis score te onderdrukken. Raadpleeg de sectie Veelgestelde vragen hieronder voor het verschil tussen severity en score .
Submappen worden ingepakt in het gegevensbestand voor training of de deferie. De CSV-gegevensbestanden in submappen worden genegeerd tijdens de training en/of de delegering. Er zijn geen submappen toegestaan in het zip-bestand. Raadpleeg Mapstructuur voor meer informatie.
Te veel gegevens in het deferentiegegevensbestand: bijvoorbeeld het comprimeren van alle historische gegevens in het ZIP-bestand met de deferentiegegevens Mogelijk ziet u geen fouten, maar de prestaties zullen verslechteren wanneer u het ZIP-bestand probeert te uploaden naar Azure Blob en wanneer u de deferentie probeert uit te voeren. Raadpleeg Gegevenshoeveelheid voor meer informatie.
Het maken Anomaly Detector resources in Azure-regio's die nog geen ondersteuning bieden voor MVAD en het aanroepen van MVAD-API's U krijgt de fout 'resource niet gevonden' tijdens het aanroepen van de MVAD-API's. Tijdens de preview-fase is MVAD alleen beschikbaar in beperkte regio's. Maak een bladwijzer voor wat er nieuw is in Anomaly Detector up-to-date te houden met de implementaties van MVAD-regio's. U kunt ook een probleem met GitHub of contact met ons opnemen op AnomalyDetector@microsoft.com om een aanvraag voor specifieke regio's uit te brengen.

Veelgestelde vragen

Hoe werkt MVAD sliding window?

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

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

  • Batchscenario: u hebt meerdere doelgegevenspunten om te voorspellen. Uw endTime is groter dan uw startTime . De deferentie in dergelijke scenario's wordt uitgevoerd op een 'bewegende venster'-manier. MVAD gebruikt bijvoorbeeld gegevens van tot (inclusief) om te bepalen of de gegevens op 2021-01-01T00:00:00Z 2021-01-01T23:59:00Z afwijkende gegevens 2021-01-02T00:00:00Z zijn. Vervolgens worden gegevens van naar (inclusief) verplaatst en gebruikt om te bepalen of gegevens op 2021-01-01T00:01:00Z 2021-01-02T00:00:00Z afwijkende gegevens 2021-01-02T00:01:00Z zijn. Het gaat op dezelfde manier verder (waarbij 1440 gegevenspunten worden vergeleken) tot de laatste tijdstempel die is opgegeven door (of de laatste endTime tijdstempel). Daarom moet uw deferentiegegevensbron gegevens bevatten die beginnen met en startTime - slidingWindow idealiter een totale grootte slidingWindow van + ( endTime - startTime bevatten).

Waarom alleen ZIP-bestanden accepteren voor training en de deferie?

We gebruiken zip-bestanden omdat we in batchscenario's verwachten dat de grootte van zowel trainings- als de deferentiegegevens erg groot is en niet in de http-aanvraag body kan worden opgeslagen. Hierdoor kunnen gebruikers batchdeferentie uitvoeren op historische gegevens voor modelvalidatie of gegevensanalyse.

Dit kan echter enigszins onhandig zijn voor streamingdeferentie en voor gegevens met een hoge frequentie. We hebben een plan om een nieuwe API toe te voegen die speciaal is ontworpen voor streamingdeferentie dat gebruikers gegevens kunnen doorgeven in de aanvraag body.

Wat is het verschil tussen severity en score ?

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

In gevallen waarin u behoefte hebt aan meer geavanceerde regels dan drempelwaarden tegen of de duur van continue hoge waarden, kunt u gebruiken om krachtigere severity severity filters te score bouwen. Inzicht in hoe MVAD wordt gebruikt om score afwijkingen te bepalen, kan helpen:

We gaan na of een gegevenspunt vanuit zowel globaal als lokaal perspectief afwijkende gegevens is. Als score een tijdstempel hoger is dan een bepaalde drempelwaarde, wordt het tijdstempel gemarkeerd als een anomalie. Als score lager is dan de drempelwaarde, maar relatief hoger is in een segment, wordt het ook gemarkeerd als een anomalie.

Volgende stappen