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.

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.

upward and downward level changes

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.

positive or negative trend change

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

    Källor och citat (Microsoft Academic)

  • Valentina Fedorova, Alex J. Gammerman, Ilia Nouretdinov, Vladimir Vovk, "Plug-in martingales for testing exchangeability on-line", ICML 2012

    Källor och citat (Microsoft Academic)

  • Vladimir Vovk, Ilia Nouretdinov, Alex J. Gammerman, "Testing Exchangeability Online", ICML 2003.

    Källor och citat (Microsoft Academic)

Så här konfigurerar du time series-avvikelseidentifiering

  1. 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.

  2. 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.

  3. 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.

  4. 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

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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

level change with alert of 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

level change with alert of 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

positive trend with alert of 4.25

Tröskelvärde för avisering på 6,0

positive trend with alert threshold of 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