Sdílet prostřednictvím


Detekce anomálií časových řad

Důležité

Podpora studia Machine Learning (Classic) skončí 31. srpna 2024. Doporučujeme do tohoto data přejít na službu Azure Machine Learning.

Od 1. prosince 2021 nebude možné vytvářet nové prostředky studia Machine Learning (Classic). Do 31. srpna 2024 můžete pokračovat v používání stávajících prostředků studia Machine Learning (Classic).

Dokumentace ke studiu ML (Classic) se vyřazuje z provozu a v budoucnu se nemusí aktualizovat.

Detekuje anomálie ve vstupních datech časových řad.

Kategorie: Časová řada

Poznámka

Platí pro: pouze Machine Learning Studio (classic)

Podobné moduly pro přetažení jsou dostupné v návrháři Azure Machine Learning.

Přehled modulu

Tento článek popisuje, jak pomocí modulu Detekce anomálií časové řady v Machine Learning Studiu (classic) zjišťovat anomálie v datech časových řad. Modul se naučí normální provozní charakteristiky časové řady, kterou zadáte jako vstup, a použije je k detekci odchylek od normálního vzoru. Modul dokáže rozpoznat změny v celkovém trendu a změny velikosti nebo rozsahu hodnot.

Detekce změn v datech časových řad má široké aplikace. Můžete ho například použít k monitorování senzorů, sítí nebo využití prostředků téměř v reálném čase. Sledováním chyb služeb, využití služeb a dalších klíčových ukazatelů výkonu můžete rychle reagovat na kritické anomálie. Mezi další aplikace patří zdravotní péče a finance.

Metody detekce anomálií

Detekce anomálií je problém hledání vzorů v datech, které neodpovídají modelu "normálního" chování. Typické přístupy k detekci takových změn buď používají jednoduché prahové hodnoty pro člověka, nebo střední a směrodatnou odchylku k určení, kdy se data výrazně odchylují od průměru.

Tyto jednoduché přístupy se ale snadno nepřizpůsobují datům časových řad:

  • Vygeneruje se velký počet falešně anomálií.

  • Metody se nevztahují na změnu hodnot dat.

  • Nejde snadno škálovat na velké časové řady

Tento modul poskytuje dvě další metody posouzení odchylek od trendu časových řad:

  • Měření velikosti změn směrem nahoru a dolů

    Například počet požadavků na webovou službu může být po nějakou dobu nejvhodnější a pak výrazně zvýšit.

  • Měření směru a doby trvání trendů: pozitivní vs. negativní změny

    Například trvalý vzestupný trend délky fronty služeb může znamenat základní problém. I když se celkový trend konzistentně zvyšuje a proto může být považován za stabilní, může být změna sklonu označena příznakem jako anomálie. Pokud naopak monitorujete využití paměti serveru, může konstantní snížení velikosti volné paměti znamenat problém.

Příklady neobvyklých vzorů v časových řadách

Změny směrem nahoru a dolů

Předpokládejme například, že jste monitorovali počet požadavků za den u webové služby v určitém časovém období a počet žádostí se zdá být v určitém rozsahu. Po aktualizaci webové služby se ale změní počet požadavků na danou webovou službu. Nový trend může být vyšší nebo nižší než původní trend; je možné zjistit jak vzestupné, tak i dolů.

upward and downward level changes

Změny pozitivních nebo negativních trendů

Předpokládejme například, že monitorujete délku fronty na webu podpory služby. Trvalý vzestupný trend může znamenat základní problém se službou.

V jiných případech může být trvalý negativní trend anomálií. Pokud například monitorujete využití paměti na serveru, když se velikost volné paměti zmenší, může to znamenat potenciální únik paměti.

positive or negative trend change

Zdroje informací

Další informace o výzkumu, který je základem tohoto přístupu, najdete v těchto článcích:

  • Shen-Shyang Ho; Wechsler, H., "A Martingale Framework for Detecting Changes in Data Toky by Testing Exchangeability," Pattern Analysis and Machine Intelligence, IEEE Transactions , vol.32, no.12, pp.2113,2127, Dec 2010

    Zdroje a citace (Microsoft Academic)

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

    Zdroje a citace (Microsoft Academic)

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

    Zdroje a citace (Microsoft Academic)

Konfigurace detekce anomálií časových řad

  1. Přidejte do experimentu modul Detekce anomálií time series a připojte datovou sadu obsahující časovou řadu.

    Datová sada použitá jako vstup musí obsahovat alespoň jeden sloupec obsahující hodnoty data a času v řetězcovém formátu a další sloupec obsahující hodnoty trendu v číselném formátu. Ostatní sloupce se ignorují.

    Vzhledem k tomu, že každý řádek odpovídá datovému bodu v časové řadě představující hodnotu v daném okamžiku, měly by být hodnoty času jedinečné.

  2. Datový sloupec: Vyberte jeden sloupec v datové sadě, který obsahuje číselné hodnoty dat. Tyto hodnoty jsou datové body v trendu, který chcete modelovat, například celkový počet obyvatel v průběhu času, náklady za měsíc nebo teploty v určitém období.

  3. Časový sloupec: Vyberte jeden sloupec v datové sadě, který obsahuje přidruženou hodnotu časové řady.

    Sloupec musí obsahovat platné hodnoty data a času, což znamená, že všechna kalendářní data musí být v rozsahu kalendářních dat podporovaných rozhraním .NET Framework.

    Sloupec Čas musí používat datový typ DateTime. Pokud jsou data ve formátu řetězce, můžete je přetypovat pomocí modulu Použít SQL Transformace nebo je převést pomocí modulu Spustit skript jazyka R. Pokud jsou kalendářní data reprezentovaná jako celá čísla, musíte také použít příslušnou funkci převodu data a času k reprezentaci hodnot pomocí platného formátu datetime.

    Například následující příkaz SQL změní hodnotu sériového data Excel na formát datetime:

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

    Jakmile jsou hodnoty kalendářních dat ve správném formátu, nastavte typ sloupce na DateTime pomocí modulu Upravit metadata.

  4. Typ Martingale: Vyberte funkci martingale, která se má použít.

    • PowerAvg. Tato možnost představuje implementaci napájení martingale.

      Výchozí hodnota je PowerAvg bez dalších parametrů. Tato možnost poskytuje stabilní detektor anomálií a měla by být vhodná pro většinu potřeb.

    • Napájení. Neregistrovaná implementace energie martingale.

      Možnost Napájení umožňuje uživatelům poskytnout hodnotu v rozmezí od 0 do 1 parametru Epsilon pro řízení citlivosti detektoru. Obecně platí, že vyšší hodnota epsilonu znamená vyšší citlivost na anomálie, ale méně jistoty.

    Definice martingalů a metod používaných v tomto modulu najdete v tématu: Detekce anomálií pomocí strojového učení k detekci odchylek v datech časových řad

  5. Typ podivnosti funkce: Tato možnost se používá ke konkrétním typům anomálií. Podporují se tři možnosti, které nevyžadují žádné další parametry:

    • RangePercentile.

      Toto je výchozí a většinou se používá ke zjišťování změn na úrovni.

    • SlowPosTrend. Tuto možnost zvolte, pokud chcete zjistit pozitivní změny trendu.

    • SlowNegTrend. Tuto možnost zvolte, pokud chcete zjistit negativní změny trendu.

  6. Délka hodnot Martingale a Podivnost: Zadejte velikost okna historie, která se používá k výpočtu hodnot martingale v historii zpětného vyhledávání.

    Výchozí hodnota je 500, ale můžete zadat libovolné celé číslo mezi 0 a 5000. U velkých časových řad by výchozí hodnota měla dobře fungovat. V případě menších časových řad se můžete pokusit odhadnout hodnotu očekávané délky neobvyklého chování.

    Obecně doporučujeme tyto dva parametry nastavit na stejnou hodnotu.

  7. Délka hodnot podivnosti: Zadejte délku okna historie sloužícího k výpočtu podivnosti v každém datovém bodě.

    Výchozí hodnota je 500, ale můžete zadat libovolné celé číslo mezi 0 a 5000.

    Tento parametr má stejná omezení jako Délka Martingale. To znamená, že byste měli nastavit hodnotu na odhadovaný počet datových bodů, které jsou potřeba k učení "normálního" chování.

    Výchozí hodnota 500 funguje ve většině případů dobře, ale pokud se měřítko, u kterého se měří "normální" hodnota, může být výhodné, aby délka podivnosti byla větší hodnotou než Délka Martingale.

    Pokud například monitorujete chyby a předpokládáte, že datové body se zaznamenávají v 15minutových intervalech, může se doba potřebná k získání normálního trendu výrazně lišit od měsíce po měsíc.

    Obecně platí, že použití větší velikosti okna vede k pomalejšímu výkonu, protože se modul musí učit přes větší datovou sadu.

    Obecně doporučujeme tyto dva parametry nastavit na stejnou hodnotu.

  8. Prahová hodnota upozornění: Zadejte hodnotu, nad kterou skóre anomálií vygeneruje výstrahu.

    Výchozí hodnota je 3,25, což znamená, že se pro každý řádek obsahující skóre 3,25 nebo více vygeneruje výstraha. Y

    Můžete zadat libovolné číslo s plovoucí desetinou čárkou od 0 do 100. Existuje však kompromis mezi citlivostí a důvěrou v volbu prahové hodnoty:

    • Nižší prahová hodnota by detektoru zpřístupňovala anomálie a generovala více výstrah.

    • Nižší prahová hodnota může vést k nesprávné klasifikaci normálních změn jako anomálií.

  9. Spusťte experiment.

    Mějte na paměti, že tento model nemusíte trénovat samostatně; algoritmus se učí vzor z dat, která zadáte jako vstup do tohoto modulu.

Výsledky

Po dokončení trénování modul vypíše časovou řadu, která je stejná jako vstupní časová řada; Dva sloupce jsou však přidány k označení hodnot, které jsou potenciálně neobvyklé.

  • Skóre anomálií: První sloupec obsahuje skóre, které představuje pravděpodobnost, že hodnota časové řady je neobvyklá.

  • Upozornění: Tento sloupec obsahuje příznak s hodnotou 0 nebo 1, kde 1 znamená, že byla zjištěna anomálie. Můžete nastavit prahovou hodnotu pro generování výstrahy na základě sloupce skóre, ale nastavení parametru Prahová hodnota upozornění .

Příklady

Následující příklady ukazují, jak nastavit funkci martingale pro detekci anomálií a jak interpretovat výsledky.

Detekce změn na úrovni

Pro ilustraci dopadu různých nastavení se ukázková datová sada použitá v tomto příkladu skládá z 8870 datových bodů se třemi změnami úrovně. Na základě těchto dat jsme vytvořili dva modely s využitím následujících parametrů.

  • Typ Martingale: PowerAvg

  • Typ zvláštní funkce: RangePercentile

  • Délka Martingale = 50

  • Délka hodnot podivnosti = 50

Model se natrénoval na příchozích datech, ale pro prahovou hodnotu upozornění byla použita jiná hodnota. Výsledky predikce se vykreslují na následujících obrázcích pro Model 1 a Model 2. V těchto grafech modré čáry představují hodnoty dat a červené čáry představují výstrahy vyvolané pro anomálii.

Prahová hodnota upozornění 0,9

level change with alert of 0.9

V tomto modelu je prahová hodnota nižší, a proto jsou vyvolána upozornění (zjištěny anomálie) i v případě, že jsou změny momentální.

V závislosti na typu časové řady, kterou monitorujete, se některá z těchto upozornění můžou považovat za falešná upozornění. Nižší prahová hodnota však může být vhodnější, pokud si nemůžete dovolit přehlédnout žádnou anomálii.

Prahová hodnota upozornění 3,25

level change with alert of 3.25

V tomto modelu byla prahová hodnota upozornění mnohem vyšší a v důsledku toho model detekuje pouze ty změny, které trvají déle. Vyšší prahová hodnota pro upozorňování může být v případě, že chcete zachytit pouze dlouhotrvající změny.

Zjištění pozitivních změn sklonu

K ilustraci této možnosti pro detekci anomálií jsme použili ukázkovou datovou sadu obsahující 300 datových bodů. Všechny body vytvořily celkově pozitivní trend se dvěma anomáliemi.

Znovu jsme vytvořili dva modely pomocí parametrů, které byly s identické s výjimkou prahové hodnoty upozornění.

  • Typ Martingale: PowerAvg

  • Typ funkce Podivnost: SlowPosTrend

  • Délka Martingale = 50

  • Délka hodnot podivnosti = 50

V těchto grafech modré čáry představují datové hodnoty a červené čáry představují výstrahy vyvolané pro anomálii.

Prahová hodnota upozornění 4.25

positive trend with alert of 4.25

Prahová hodnota upozornění 6,0

positive trend with alert threshold of 6.0

Doporučujeme experimentovat s různými prahovými hodnotami upozornění a najít odpovídající úroveň citlivosti pro váš scénář detekce anomálií.

Očekávané vstupy

Název Typ Description
Vstupní data obsahující časová razítka a hodnoty Tabulka dat Vstupní data obsahující razítka a hodnoty data a času

Parametry modulu

Název Typ Rozsah Volitelné Výchozí Description
Sloupec hodnot ColumnSelection Vyžadováno Zvolte sloupec, který obsahuje časovou řadu, kterou chcete sledovat.
Velikost okna Integer Vyžadováno Zadejte hodnotu, která řídí velikost okna analýzy.
Prahová hodnota Float Volitelné Zadejte hodnotu, která určuje prahovou hodnotu skóre pro identifikaci anomálií.

Výstupy

Název Typ Description
Časové řady označené skóre anomálií Tabulka dat Datová sada s intervaly anomálií

Viz také

Detekce anomálií
One-Class Support Vector Machine
Detekce anomálií na základě PCA