Anomaliedetectie van Time Series

Belangrijk

De ondersteuning voor Azure Machine Learning-studio (klassiek) eindigt op 31 augustus 2024. U wordt aangeraden om vóór die datum over te stappen naar Azure Machine Learning.

Vanaf 1 december 2021 kunt u geen nieuwe resources voor Azure Machine Learning-studio (klassiek) meer maken. Tot en met 31 augustus 2024 kunt u de bestaande resources van Azure Machine Learning-studio (klassiek) blijven gebruiken.

De documentatie van ML-studio (klassiek) wordt buiten gebruik gesteld en wordt in de toekomst mogelijk niet meer bijgewerkt.

Detecteert afwijkingen in de invoertijdreeksgegevens.

Categorie: Tijdreeks

Notitie

Van toepassing op: alleen Machine Learning Studio (klassiek)

Vergelijkbare modules voor slepen en neerzetten zijn beschikbaar in Azure Machine Learning designer.

Moduleoverzicht

In dit artikel wordt beschreven hoe u de module Time Series Anomaly Detection in Machine Learning Studio (klassiek) gebruikt om afwijkingen in tijdreeksgegevens te detecteren. De module leert de normale werkingskenmerken van een tijdreeks die u als invoer opgeeft en gebruikt die informatie om afwijkingen van het normale patroon te detecteren. De module kan zowel wijzigingen in de algehele trend detecteren als wijzigingen in de grootte of het bereik van waarden.

Het detecteren van wijzigingen in tijdreeksgegevens heeft brede toepassingen. U kunt deze bijvoorbeeld gebruiken voor bijna realtime bewaking van sensoren, netwerken of resourcegebruik. Door servicefouten, servicegebruik en andere KPI's bij te houden, kunt u snel reageren op kritieke afwijkingen. Andere toepassingen zijn gezondheidszorg en financiën.

Methoden voor anomaliedetectie

Anomaliedetectie is het probleem van het vinden van patronen in gegevens die niet voldoen aan een model van normaal gedrag. Typische benaderingen voor het detecteren van dergelijke wijzigingen maken gebruik van eenvoudige door mensen berekende drempelwaarden of gemiddelde en standaarddeviatie om te bepalen wanneer gegevens aanzienlijk afwijken van het gemiddelde.

Dergelijke eenvoudige benaderingen zijn echter niet eenvoudig aangepast aan tijdreeksgegevens:

  • Grote aantallen onwaar-afwijkingen worden gegenereerd

  • De methoden zijn niet van toepassing op het wijzigen van gegevenswaarden

  • Kan niet eenvoudig schalen naar grote tijdreeksen

Deze module biedt twee extra methoden voor het beoordelen van de variantie van een tijdreekstrend:

  • De grootte van opwaartse en neerwaartse veranderingen meten

    Het aantal aanvragen op een webservice kan bijvoorbeeld enige tijd het best worden uitgevoerd en vervolgens aanzienlijk toenemen.

  • De richting en duur van trends meten: positieve versus negatieve veranderingen

    Een aanhoudende stijgende trend in de lengte van een servicewachtrij kan bijvoorbeeld duiden op een onderliggend probleem. Hoewel de algehele trend consistent toeneemt en daarom als stabiel kan worden beschouwd, kan een wijziging in de helling worden gemarkeerd als een anomalie. Als u echter het geheugengebruik van een server bewaakt, kan een constante afname van de vrije geheugengrootte duiden op een probleem.

Voorbeelden van afwijkende patronen in tijdreeksen

Wijzigingen in omhoog en omlaag

Stel dat u het aantal aanvragen per dag hebt bewaakt naar een webservice gedurende een bepaalde periode en dat het aantal aanvragen binnen een bepaald bereik blijft. Na een update van de webservice wordt het aantal aanvragen voor die webservice echter gewijzigd. De nieuwe trend kan hoger of lager zijn dan de oorspronkelijke trend; zowel opwaartse als neerwaartse pieken kunnen worden gedetecteerd.

upward and downward level changes

Positieve of negatieve trends veranderen

Stel dat u de lengte van een wachtrij op een serviceondersteuningssite bewaakt. Een aanhoudende stijgende trend kan duiden op een onderliggend serviceprobleem.

In andere gevallen kan een aanhoudende negatieve trend de anomalie zijn. Als u bijvoorbeeld het geheugengebruik op een server bewaakt wanneer de vrije geheugengrootte afneemt, kan dit duiden op een mogelijk geheugenlek.

positive or negative trend change

Resources

Zie de volgende artikelen voor meer informatie over het onderzoek onder deze aanpak:

Anomaliedetectie van Time Series configureren

  1. Voeg de module Time Series Anomaly Detection toe aan uw experiment en verbind de gegevensset die de tijdreeks bevat.

    De gegevensset die als invoer wordt gebruikt, moet ten minste één kolom bevatten met datum/tijd-waarden in tekenreeksindeling en een andere kolom die de trendwaarden bevat, in een numerieke indeling. Andere kolommen worden genegeerd.

    Omdat elke rij overeenkomt met een gegevenspunt in de tijdreeks die de waarde op dat moment vertegenwoordigt, moeten de tijdwaarden uniek zijn.

  2. Gegevenskolom: Selecteer één kolom in uw gegevensset die numerieke gegevenswaarden bevat. Deze waarden zijn de gegevenspunten in de trend die u wilt modelleren, zoals populatietotalen in de loop van de tijd, kosten per maand of temperaturen gedurende een bepaalde periode.

  3. Tijdkolom: Selecteer één kolom in uw gegevensset die de bijbehorende tijdreekswaarde bevat.

    De kolom moet geldige datum/tijd-waarden bevatten, wat betekent dat alle datums binnen het datumbereik moeten liggen dat wordt ondersteund door de .NET Framework.

    De kolom Tijd moet het gegevenstype DateTime gebruiken. Als uw datums een tekenreeksindeling hebben, kunt u ze casten met behulp van de module Apply SQL Transformation of converteren met behulp van de module Execute R Script. Als uw datums worden weergegeven als gehele getallen, moet u ook een geschikte datum/tijd-conversiefunctie gebruiken om de waarden weer te geven met een geldige datum/tijd-notatie.

    Met de volgende SQL-instructie wordt bijvoorbeeld een Excel seriële datumwaarde gewijzigd in een datum/tijd-notatie:

     SELECT CAST([SerialDate]  AS SmallDateTime) as [NewValidDate] from t1;  
    

    Nadat de datumwaarden de juiste indeling hebben, gebruikt u de module Metagegevens bewerken om het kolomtype in te stellen op DateTime.

  4. Martingale Type: Selecteer de martingale-functie die u wilt gebruiken.

    • PowerAvg. Deze optie is een gemarginaliseerde implementatie van de macht martingale.

      De standaardwaarde is PowerAvg zonder extra parameters. Deze optie biedt een stabielere anomaliedetector en moet geschikt zijn voor de meeste behoeften.

    • Macht. Een niet-marginale implementatie van de macht martingale.

      De power-optie biedt gebruikers de mogelijkheid om een waarde tussen 0 en 1 voor de Epsilon-parameter op te geven om de gevoeligheid van de detector te bepalen. Over het algemeen betekent een hogere epsilon-waarde een hogere gevoeligheid voor afwijkingen, maar minder zekerheid.

    Zie voor een definitie van martingales en de methoden die in deze module worden gebruikt: Anomaliedetectie met behulp van machine learning om afwijkingen in tijdreeksgegevens te detecteren

  5. Vreemdheid, functietype: deze optie wordt gebruikt voor specifieke verschillende typen afwijkingen. Er worden drie opties ondersteund, waarvoor geen verdere parameters nodig zijn:

    • RangePercentile.

      Dit is de standaardinstelling en wordt meestal gebruikt voor het detecteren van niveauwijzigingen.

    • SlowPosTrend. Kies deze optie om positieve trendwijzigingen te detecteren.

    • SlowNegTrend. Kies deze optie om negatieve trendwijzigingen te detecteren.

  6. Lengte van Martingale - en Vreemdheidswaarden: Geef de grootte van het geschiedenisvenster op, dat wordt gebruikt om martingale-waarden te berekenen over de terugblikgeschiedenis.

    De standaardwaarde is 500, maar u kunt elk geheel getal tussen 0 en 5000 opgeven. Voor grote tijdreeksen zou de standaardwaarde goed moeten werken. Voor kleinere tijdreeksen kunt u proberen de waarde voor de verwachte lengte van het abnormale gedrag te schatten.

    We raden u aan deze twee parameters in het algemeen in te stellen op dezelfde waarde.

  7. Lengte van vreemdheidswaarden: Geef de lengte op van het geschiedenisvenster dat wordt gebruikt om vreemdheid op elk gegevenspunt te berekenen.

    De standaardwaarde is 500, maar u kunt elk geheel getal tussen 0 en 5000 opgeven.

    Deze parameter heeft dezelfde beperkingen als Lengte van Martingale. Dat wil gezegd, u moet de waarde instellen op het geschatte aantal gegevenspunten dat nodig is om 'normaal' gedrag te leren.

    De standaardwaarde van 500 werkt voor de meeste gevallen goed, maar als de schaal waarop "normalcy" wordt gemeten varieert, kan het nuttig zijn om lengte van vreemdheidswaarden een grotere waarde te maken dan lengte van Martingale.

    Als u bijvoorbeeld fouten bewaakt en ervan uitgaat dat gegevenspunten worden vastgelegd met intervallen van 15 minuten, kan de tijd die nodig is om de normale trend te leren sterk variëren van maand tot maand.

    Over het algemeen leidt het gebruik van een groter venster tot tragere prestaties, omdat de module moet leren over een grotere gegevensset.

    We raden u aan deze twee parameters in het algemeen in te stellen op dezelfde waarde.

  8. Waarschuwingsdrempel: geef een waarde op waarboven de anomaliescore een waarschuwing genereert.

    De standaardwaarde is 3,25, wat betekent dat er een waarschuwing wordt gegenereerd voor elke rij met een score van 3,25 of meer. J

    U kunt een drijvendekommanummer tussen 0 en 100 opgeven. Er is echter een compromis tussen gevoeligheid en vertrouwen in de keuze van de drempelwaarde:

    • Een lagere drempelwaarde zou de detector gevoeliger maken voor afwijkingen en meer waarschuwingen genereren.

    • Een lagere drempelwaarde kan ertoe leiden dat normale wijzigingen onjuist worden geclassificeerd als afwijkingen.

  9. Voer het experiment uit.

    Houd er rekening mee dat u dit model niet afzonderlijk hoeft te trainen; het algoritme leert het patroon van de gegevens die u opgeeft als invoer voor deze module.

Resultaten

Wanneer de training is voltooid, voert de module een tijdreeks uit die dezelfde lengte heeft als de invoertijdreeks; Er worden echter twee kolommen toegevoegd om waarden aan te geven die mogelijk afwijkend zijn.

  • Anomaliescore: De eerste kolom bevat een score die de kans aangeeft dat de tijdreekswaarde afwijkend is.

  • Waarschuwing: Deze kolom bevat een vlag met de waarde 0 of 1, waarbij 1 betekent dat er een anomalie is gedetecteerd. U kunt de drempelwaarde voor het genereren van de waarschuwing instellen op basis van de scorekolom, maar de parameter Waarschuwingsdrempel instellen.

Voorbeelden

In de volgende voorbeelden ziet u hoe u de martingale-functie instelt om afwijkingen te detecteren en hoe u de resultaten interpreteert.

Niveauwijzigingen detecteren

Ter illustratie van de impact van verschillende instellingen bestaat de voorbeeldgegevensset die in dit voorbeeld wordt gebruikt uit 8870 gegevenspunten, met drie niveaus. Op basis van deze gegevens hebben we twee modellen gemaakt met behulp van de volgende parameters.

  • Martingale Type: PowerAvg

  • Type vreemde functie: RangePercentile

  • Lengte van Martingale = 50

  • Lengte van vreemdheidswaarden = 50

Het model is getraind op de binnenkomende gegevens, maar er is een andere waarde toegepast voor de drempelwaarde voor waarschuwingen. De resultaten van de voorspelling worden weergegeven in de volgende afbeeldingen voor Model 1 en Model 2. In deze grafieken vertegenwoordigen de blauwe lijnen de gegevenswaarden en de rode lijnen geven de waarschuwingen weer die worden gegenereerd voor een anomalie.

Waarschuwingsdrempel van 0.9

level change with alert of 0.9

In dit model is de drempelwaarde lager en worden er daarom waarschuwingen gegenereerd (afwijkingen gedetecteerd) zelfs wanneer de wijzigingen tijdelijk zijn.

Afhankelijk van het type tijdreeks dat u bewaakt, kunnen sommige van deze waarschuwingen worden beschouwd als valse waarschuwingen. Een lagere drempelwaarde kan echter de voorkeur hebben als u zich niet kunt veroorloven om afwijkingen over het hoofd te zien.

Waarschuwingsdrempel van 3.25

level change with alert of 3.25

In dit model was de waarschuwingsdrempel veel hoger en daardoor detecteert het model alleen de wijzigingen die langer blijven bestaan. Een hogere drempelwaarde voor waarschuwingen is mogelijk wenselijk in een scenario waarin u alleen langdurigere wijzigingen wilt ondervangen.

Positieve hellingswijzigingen detecteren

Ter illustratie van deze optie voor anomaliedetectie hebben we een voorbeeldgegevensset met 300 gegevenspunten gebruikt. Alle punten vormden een positieve trend in het algemeen, met twee afwijkingen.

We hebben opnieuw twee modellen gemaakt met parameters die identiek waren, met uitzondering van de drempelwaarde voor waarschuwingen.

  • Martingale Type: PowerAvg

  • Type vreemde functie: SlowPosTrend

  • Lengte van Martingale = 50

  • Lengte van vreemdheidswaarden = 50

In deze grafieken vertegenwoordigen de blauwe lijnen gegevenswaarden en de rode lijnen geven waarschuwingen weer die worden gegenereerd voor een anomalie.

Waarschuwingsdrempel van 4.25

positive trend with alert of 4.25

Waarschuwingsdrempel van 6.0

positive trend with alert threshold of 6.0

We raden u aan te experimenteren met verschillende drempelwaarden voor waarschuwingen om het juiste gevoeligheidsniveau voor uw anomaliedetectiescenario te vinden.

Verwachte invoer

Naam Type Beschrijving
Invoergegevens met tijdstempels en -waarden Gegevenstabel Invoergegevens met datum-tijdstempels en -waarden.

Moduleparameters

Naam Type Bereik Optioneel Standaard Beschrijving
Waardekolom ColumnSelection Vereist Kies de kolom die de tijdreeks bevat die u wilt bijhouden
Venstergrootte Geheel getal Vereist Een waarde opgeven waarmee de grootte van het analysevenster wordt bepaald
Drempelwaarde Float Optioneel Geef een waarde op waarmee de drempelwaarde voor de score wordt bepaald om een anomalie te identificeren

Uitvoerwaarden

Naam Type Beschrijving
Tijdreeks met aantekeningen met afwijkingsscores Gegevenstabel Gegevensset met anomalieintervallen.

Zie ook

Anomaliedetectie
One-Class Support Vector Machine
Anomaliedetectie op basis van PCA