Time Series Anomaly Detection
Viktigt
Stödet för Machine Learning Studio (klassisk) upphör den 31 augusti 2024. Vi rekommenderar att du byter till Azure Machine Learning innan dess.
Från och med den 1 december 2021 kan du inte längre skapa nya Machine Learning Studio-resurser (klassisk). Du kan fortsätta att använda befintliga Machine Learning Studio-resurser (klassisk) till och med den 31 augusti 2024.
- Se information om hur du flyttar maskininlärningsprojekt från ML Studio (klassisk) till Azure Machine Learning.
- Läs mer om Azure Machine Learning.
Dokumentationen om ML Studio (klassisk) håller på att dras tillbaka och kanske inte uppdateras i framtiden.
Identifierar avvikelser i indata för tidsseriedata.
Kategori: Tidsserier
Anteckning
Gäller endast för: Machine Learning Studio (klassisk)
Liknande dra och släpp-moduler finns i Azure Machine Learning designer.
Modulöversikt
Den här artikeln beskriver hur du använder time series anomaly detection-modulen i Machine Learning Studio (klassisk) för att identifiera avvikelser i tidsseriedata. Modulen lär sig de normala driftegenskaperna för en tidsserie som du anger som indata och använder den informationen för att identifiera avvikelser från det normala mönstret. Modulen kan identifiera både ändringar i den övergripande trenden och ändringar i värdens storlek eller intervall.
Det finns många program för att identifiera ändringar i tidsseriedata. Du kan till exempel använda den för nästan realtidsövervakning av sensorer, nätverk eller resursanvändning. Genom att spåra tjänstfel, tjänstanvändning och andra KPI:er kan du snabbt reagera på kritiska avvikelser. Andra program inkluderar hälso- och sjukvård och ekonomi.
Metoder för avvikelseidentifiering
Avvikelseidentifiering är problemet med att hitta mönster i data som inte överensstämmer med en modell med "normalt" beteende. Vanliga metoder för att identifiera sådana ändringar använder antingen enkla mänskliga beräknade tröskelvärden eller medelvärde och standardavvikelse för att avgöra när data avviker avsevärt från medelvärdet.
Sådana enkla metoder är dock inte lätta att anpassa till tidsseriedata:
Ett stort antal falska avvikelser genereras
Metoderna gäller inte för ändring av datavärden
Det går inte att enkelt skala till stora tidsserier
Den här modulen innehåller ytterligare två metoder för att bedöma variansen från en tidsserietrend:
Mäta storleken på förändringar uppåt och nedåt
Till exempel kan antalet begäranden på en webbtjänst vara bäst under en tid och sedan öka dramatiskt.
Mäta trenders riktning och varaktighet: positiva eller negativa förändringar
En beständig uppåtgående trend i längden på en tjänstkö kan till exempel tyda på ett underliggande problem. Även om den övergripande trenden ständigt ökar och därför kan betraktas som stabil kan en ändring av lutningen flaggas som en avvikelse. Om du däremot övervakar minnesanvändningen för en server kan en konstant minskning av mängden ledigt minne tyda på ett problem.
Exempel på avvikande mönster i tidsserier
Ändringar på uppåt- och nedåtnivå
Anta till exempel att du har övervakat antalet begäranden per dag till en webbtjänst under en viss tidsperiod och att antalet begäranden verkar ligga inom ett visst intervall. Efter en uppdatering av webbtjänsten ändras dock antalet begäranden till webbtjänsten. Den nya trenden kan vara antingen högre eller lägre än den ursprungliga trenden. både uppåt- och nedåttoppar kan upptäckas.
Positiva eller negativa trender ändras
Anta till exempel att du övervakar längden på en kö på en tjänstsupportwebbplats. En beständig uppåtgående trend kan tyda på ett underliggande tjänstproblem.
I andra fall kan en beständig negativ trend vara avvikelsen. Om du till exempel övervakar minnesanvändningen på en server, när den lediga minnesstorleken minskar, kan det tyda på en potentiell minnesläcka.
Resurser
Mer information om den forskning som ligger till grund för den här metoden finns i följande artiklar:
Shen-Shyang Ho; Wechsler, H., "A Martingale Framework for Detecting Changes in Data Flöden 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.
Så här konfigurerar du time series-avvikelseidentifiering
Lägg till time series anomaly detection-modulen i experimentet och anslut den datauppsättning som innehåller tidsserien.
Datauppsättningen som används som indata måste innehålla minst en kolumn som innehåller datetime-värden i strängformat och en annan kolumn som innehåller trendvärdena i ett numeriskt format. Andra kolumner ignoreras.
Eftersom varje rad motsvarar en datapunkt i tidsserien som representerar värdet vid den tidpunkten, bör tidsvärdena vara unika.
Datakolumn: Välj en enda kolumn i datauppsättningen som innehåller numeriska datavärden. Dessa värden är de datapunkter i den trend som du vill modellera, till exempel befolkningssummor över tid, kostnader per månad eller temperaturer under en viss period.
Tidskolumn: Välj en enda kolumn i datauppsättningen som innehåller det associerade tidsserievärdet.
Kolumnen måste innehålla giltiga datetime-värden, vilket innebär att alla datum måste ligga inom det datumintervall som stöds av .NET Framework.
Kolumnen Tid måste använda datatypen DateTime. Om datumen är i strängformat kan du omvandla dem med hjälp av modulen Tillämpa SQL transformation eller konvertera dem med hjälp av modulen Execute R Script (Kör R-skript). Om dina datum representeras som heltal måste du också använda en lämplig datetime-konverteringsfunktion för att representera värdena med ett giltigt datetime-format.
Följande SQL-instruktion ändrar till exempel ett Excel seriellt datumvärde till ett datetime-format:
SELECT CAST([SerialDate] AS SmallDateTime) as [NewValidDate] from t1;
När datumvärdena har rätt format använder du modulen Redigera metadata för att ange kolumntypen till DateTime.
Martingale-typ: Välj den martingalefunktion som ska användas.
PowerAvg. Det här alternativet är en marginaliserad implementering av power martingale.
Standardvärdet är PowerAvg utan ytterligare parametrar. Det här alternativet ger en stabilare avvikelsedetektor och bör vara lämplig för de flesta behov.
Ström. En icke-marginaliserad implementering av power martingale.
Alternativet Ström ger användarna möjlighet att ange ett värde mellan 0 och 1 för epsilonparametern för att styra känsligheten för detektorn. I allmänhet innebär ett högre epsilonvärde högre känslighet för avvikelser men mindre säkerhet.
En definition av martingales och de metoder som används i den här modulen finns i: Avvikelseidentifiering med hjälp av maskininlärning för att identifiera avvikelser i tidsseriedata
Funktionstyp för konstighet: Det här alternativet används för att specifika typer av avvikelser. Tre alternativ stöds, som inte kräver några ytterligare parametrar:
RangePercentile.
Detta är standardinställningen och används främst för att identifiera nivåändringar.
SlowPosTrend. Välj det här alternativet för att identifiera positiva trendändringar.
SlowNegTrend. Välj det här alternativet för att identifiera negativa trendändringar.
Längd på Martingale - och Strangeness-värden: Ange storleken på historikfönstret, som används för att beräkna martingalevärden över tillbakablickshistoriken.
Standardvärdet är 500, men du kan ange ett heltal mellan 0 och 5 000. För stora tidsserier bör standardvärdet fungera bra. För mindre tidsserier kan du försöka beräkna värdet för den förväntade längden på det onormala beteendet.
Vi rekommenderar att du vanligtvis anger dessa två parametrar till samma värde.
Längd på konstighetsvärden: Ange längden på det historikfönster som används för att beräkna konstigheter vid varje datapunkt.
Standardvärdet är 500, men du kan ange ett heltal mellan 0 och 5 000.
Den här parametern har samma begränsningar som Längd på Martingale. Du bör alltså ange värdet till det uppskattade antalet datapunkter som behövs för att lära dig "normalt" beteende.
Standardvärdet 500 fungerar bra i de flesta fall, men om skalan över vilken "normalitet" mäts varierar kan det vara fördelaktigt att göra Längd på konstighetsvärden till ett större värde än Längd på Martingale.
Om du till exempel övervakar fel och antar att datapunkter samlas in med 15 minuters intervall kan den tid som krävs för att lära dig den normala trenden variera kraftigt från månad till månad.
I allmänhet leder användningen av en större fönsterstorlek till långsammare prestanda eftersom modulen måste lära sig mer om en större datauppsättning.
Vi rekommenderar att du vanligtvis anger dessa två parametrar till samma värde.
Aviseringströskel: Ange ett värde över vilket avvikelsepoängen genererar en avisering.
Standardvärdet är 3,25, vilket innebär att en avisering genereras för varje rad som innehåller en poäng på 3,25 eller mer. Y
Du kan ange ett flyttalsnummer mellan 0 och 100. Det finns dock en kompromiss mellan känslighet och förtroende för valet av tröskelvärde:
Ett lägre tröskelvärde skulle göra detektorn mer känslig för avvikelser och generera fler aviseringar.
Ett lägre tröskelvärde kan leda till att normala ändringar felklassificeras som avvikelser.
Kör experimentet.
Observera att du inte behöver träna den här modellen separat. algoritmen lär sig mönstret från de data som du anger som indata till den här modulen.
Resultat
När träningen är klar matar modulen ut en tidsserie som har samma längd som indatatidsserien. Två kolumner läggs dock till för att ange värden som kan vara avvikande.
Avvikelsepoäng: Den första kolumnen innehåller en poäng som representerar sannolikheten att tidsserievärdet är avvikande.
Avisering: Den här kolumnen innehåller en flagga med värdet 0 eller 1, där 1 innebär att en avvikelse har identifierats. Du kan ange tröskelvärdet för att generera aviseringen baserat på poängkolumnen, men ange parametern Aviseringströskel .
Exempel
Följande exempel visar hur du ställer in martingale-funktionen för att identifiera avvikelser och hur du tolkar resultaten.
Identifiera nivåändringar
För att illustrera effekten av olika inställningar består exempeldatauppsättningen som används i det här exemplet av 8870 datapunkter med tre nivåändringar. Baserat på dessa data skapade vi två modeller med hjälp av följande parametrar.
Martingale Typ: PowerAvg
Funktionstypen Strangeness: RangePercentile
Längd på Martingale = 50
Längd på konstighetsvärden = 50
Modellen tränades på inkommande data, men ett annat värde tillämpades för tröskelvärdet för avisering. Resultatet av förutsägelsen ritas i följande bilder för Modell 1 och Modell 2. I de här graferna representerar de blå linjerna datavärdena och de röda linjerna representerar de aviseringar som har utlösts för en avvikelse.
Tröskelvärde för aviseringar på 0,9
I den här modellen är tröskelvärdet lägre och därför utlöses aviseringar (avvikelser identifieras) även när ändringarna är tillfälligt.
Beroende på vilken typ av tidsserie du övervakar kan vissa av dessa aviseringar betraktas som falska aviseringar. Ett lägre tröskelvärde kan dock vara att föredra om du inte har råd att förbise eventuella avvikelser.
Tröskelvärde för aviseringar på 3,25
I den här modellen var aviseringströskelvärdet mycket högre och därför identifierar modellen bara de ändringar som finns kvar längre. Ett högre tröskelvärde för aviseringar kan vara mer önskvärt i ett scenario där du bara vill fånga upp mer långvariga ändringar.
Identifiera positiva lutningsändringar
För att illustrera det här alternativet för avvikelseidentifiering använde vi en exempeldatauppsättning som innehåller 300 datapunkter. Alla punkter utgjorde en positiv trend totalt sett, med två avvikelser.
Återigen skapade vi två modeller med parametrar som var identiska förutom tröskelvärdet för avisering.
Martingale Typ: PowerAvg
Funktionstypen Strangeness: SlowPosTrend
Längd på Martingale = 50
Längd på konstighetsvärden = 50
I de här graferna representerar de blå linjerna datavärden och de röda linjerna representerar aviseringar som utlöses för en avvikelse.
Aviseringströskel på 4,25
Tröskelvärde för avisering på 6,0
Vi rekommenderar att du experimenterar med olika tröskelvärden för aviseringar för att hitta lämplig känslighetsnivå för ditt scenario för avvikelseidentifiering.
Förväntade indata
Namn | Typ | Description |
---|---|---|
Indata som innehåller tidsstämplar och värden | Datatabell | Indata som innehåller datum/tid-stämplar och värden. |
Modulparametrar
Namn | Typ | Intervall | Valfritt | Standardvärde | Description |
---|---|---|---|---|---|
Värdekolumn | ColumnSelection | Obligatorisk | Välj den kolumn som innehåller den tidsserie som ska spåras | ||
Fönsterstorlek | Integer | Obligatorisk | Ange ett värde som styr storleken på analysfönstret | ||
Tröskelvärde | Float | Valfritt | Ange ett värde som avgör tröskelvärdet för poängen för att identifiera en avvikelse |
Utdata
Namn | Typ | Description |
---|---|---|
Tidsserie kommenterad med avvikelsepoäng | Datatabell | Datauppsättning med avvikelseintervall. |
Se även
Avvikelseidentifiering
One-Class Support Vector Machine
PCA-baserad avvikelseidentifiering