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.
- Zie informatie over het verplaatsen van machine learning-projecten van ML Studio (klassiek) naar Azure Machine Learning.
- Meer informatie over Azure Machine Learning.
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.
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.
Resources
Zie de volgende artikelen voor meer informatie over het onderzoek onder deze aanpak:
Shen-Shyang Ho; Wechsler, H., "A Martingale Framework for Detecting Changes in Data Streams by Testing Exchangeability," Pattern Analysis and Machine Intelligence, IEEE Transactions , vol.32, no.12, pp.2113,2127, Dec. 2010
Valentina Fedorova, Alex J. Gammerman, Ilia Nouretdinov, Vladimir Vovk, "Plug-in martingales for testing exchangeability on-line", ICML 2012
Vladimir Vovk, Ilia Nouretdinov, Alex J. Gammerman, "Testing Exchangeability Online", ICML 2003.
Anomaliedetectie van Time Series configureren
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.
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.
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.
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
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.
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.
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.
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.
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
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
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
Waarschuwingsdrempel van 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