Osvědčené postupy pro používání Detektor anomálií rozhraní API pro více variant

Tento článek obsahuje pokyny k doporučeným postupům při používání rozhraní API pro více variant Detektor anomálií (MVAD). V tomto kurzu:

  • Využití rozhraní API: Zjistěte, jak používat MVAD bez chyb.
  • Zpracování dat: Naučte se, jak nejlépe připravovat data tak, aby funkce MVAD měla vyšší přesnost.
  • Běžné nástrahy: Zjistěte, jak se vyhnout běžným nástrahám, které zákazníci narážet.
  • Nejčastější dotazy: Přečtěte si odpovědi na nejčastější dotazy.

Využití rozhraní API

Pokud se chcete vyhnout chybám při používání MVAD, postupujte podle pokynů v této části. Pokud stále dochází k chybám, projděte si úplný seznam kódů chyb, ve které najdete vysvětlení a akce, které je dobré přijmout.

Vstupní parametry

Požadované parametry

Při žádostech rozhraní API pro trénování a odvozování se vyžaduje tyto tři parametry:

  • source– Odkaz na soubor zip umístěný ve složce Azure Blob Storage se sdílenými přístupové podpisy (SAS).
  • startTime – Čas zahájení dat používaných pro trénování nebo odvozování. Pokud je dřívější než skutečné nejstarší časové razítko v datech, použije se jako výchozí bod skutečné nejstarší časové razítko.
  • endTime – Koncový čas dat používaných pro trénování nebo odvozování, která musí být pozdější než nebo rovna startTime . Pokud je hodnota pozdější než skutečné nejnovější časové razítko v datech, použije se jako koncový bod skutečné nejnovější endTime časové razítko. Pokud se rovná , znamená to odvozování jednoho datového bodu, který se často endTime startTime používá ve scénářích streamování.

Volitelné parametry pro rozhraní API pro trénování

Další parametry pro rozhraní API pro trénování jsou volitelné:

  • slidingWindow – Kolik datových bodů se používá k určení anomálií. Celé číslo v rozmezí 28 až 2 880. Výchozí hodnota je 300. Pokud je pro trénování modelu, měly by být během odvozování alespoň body přístupné ze slidingWindow k zdrojového souboru, aby se k docíl k platným výsledkům.

    MVAD přebírá segment datových bodů, aby se rozhodl, jestli je dalším datovým bodem anomálie. Délka segmentu je slidingWindow . Při výběru hodnoty mějte na paměti dvě slidingWindow věci:

    1. Vlastnosti vašich dat: jestli jsou pravidelná a vzorkovací frekvence. Pokud jsou vaše data pravidelná, můžete nastavit délku 1 až 3 cykly jako slidingWindow . Pokud jsou vaše data vysokofrekvenční (malá členitost), například na úrovni minut nebo na druhé úrovni, můžete nastavit relativně vyšší hodnotu slidingWindow .
    2. Rozdíl mezi dobami trénování a odvozování a potenciálním dopadem na výkon Větší může slidingWindow způsobit delší dobu trénování nebo odvozování. Neexistuje žádná záruka, že větší slidingWindow hodnoty povede ke zvýšení přesnosti. Malá může způsobit, že se model obtížně slidingWindow konverguje na optimální řešení. Například je obtížné detekovat anomálie, pokud slidingWindow mají pouze dva body.
  • alignMode – Jak zarovnat více proměnných (časovou řadu) podle časových razítek. Pro tento parametr existují dvě možnosti a Inner a výchozí hodnota je Outer Outer .

    Tento parametr je kritický, pokud dochází k nesouladu mezi sekvencemi časového razítka proměnných. Model musí před dalším zpracováním zarovnat proměnné ke stejné sekvenci časového razítka.

    Innerznamená, že model bude hlásit výsledky detekce pouze u časových razítek, na kterých má každá proměnná hodnotu, tj. průnik všech proměnných. Outerznamená, že model bude hlásit výsledky detekce podle časových razítek, na kterých má libovolná proměnná hodnotu, tj. sjednocené všechny proměnné.

    Tady je příklad vysvětlení různých alignModel hodnot.

    Proměnná-1

    časové razítko hodnota
    2020-11-01 1
    2020-11-02 2
    2020-11-04 4
    2020-11-05 5

    Proměnná-2

    časové razítko hodnota
    2020-11-01 1
    2020-11-02 2
    2020-11-03 3
    2020-11-04 4

    Inner spojení dvou proměnných

    časové razítko Proměnná-1 Proměnná-2
    2020-11-01 1 1
    2020-11-02 2 2
    2020-11-04 4 4

    Outer spojení dvou proměnných

    časové razítko Proměnná-1 Proměnná-2
    2020-11-01 1 1
    2020-11-02 2 2
    2020-11-03 nan 3
    2020-11-04 4 4
    2020-11-05 5 nan
  • fillNAMethod – Jak vyplnit nan sloučenou tabulku Ve sloučené tabulce můžou chybět hodnoty, které by se měly správně zpracovat. Nabízíme několik metod, jak je vyplnit. Možnosti jsou Linear , , , a výchozí hodnota je Previous Subsequent Zero Fixed Linear .

    Možnost Metoda
    Linear Vyplňování nan hodnot lineární interpolací
    Previous Šířete poslední platnou hodnotu, abyste vyplnili mezery. Příklad: [1, 2, nan, 3, nan, 4] -> [1, 2, 2, 3, 3, 4]
    Subsequent K vyplnění mezer použijte další platnou hodnotu. Příklad: [1, 2, nan, 3, nan, 4] -> [1, 2, 3, 3, 4, 4]
    Zero Vyplňte nan hodnoty hodnotou 0.
    Fixed Vyplňte nan hodnoty zadanou platnou hodnotou, která by měla být zadaná v paddingValue .
  • paddingValue – Hodnota odsazení se používá k vyplnění, když je a nan musí být v tomto případě fillNAMethod Fixed zadaná. V jiných případech je volitelný.

  • displayName – Toto je volitelný parametr, který slouží k identifikaci modelů. Můžete ji například použít k označení parametrů, zdrojů dat a všech dalších metadat o modelu a jeho vstupních datech. Výchozí hodnota je prázdný řetězec.

Schéma vstupních dat

MVAD detekuje anomálie ze skupiny metrik a každou metriku nazýváme proměnnou nebo časovou řadu.

  • Ukázkový datový soubor si můžete stáhnout od Microsoftu a zkontrolovat přijaté schéma z: https://aka.ms/AnomalyDetector/MVADSampleData

  • Každá proměnná musí mít dvě a jenom dvě pole a a by měla být uložena v souboru hodnot oddělených timestamp value čárkami (CSV).

  • Názvy sloupců souboru CSV by měly být přesně a timestamp value . Rozlišují se malá a velká písmena.

  • Hodnoty timestamp by měly odpovídat standardu ISO 8601; hodnota může být celá čísla nebo desetinná čísla s value libovolným počtem desetinných míst. Dobrý příklad obsahu souboru CSV:

    časové razítko hodnota
    2019-04-01T00:00:00Z 5
    2019-04-01T00:01:00Z 3,6
    2019-04-01T00:02:00Z 4
    ... ...

    Poznámka

    Pokud máte časová razítka v hodinách, minutách nebo sekundách, před voláním rozhraní API se ujistěte, že jsou správně zaokrouhlená nahoru.

    Pokud má mít například frekvence dat jeden datový bod každých 30 sekund, ale vidíte časová razítka jako 12:00:01 a 12:00:28, je to silný signál, že byste měli časová razítka předem zpracovat na nové hodnoty, jako jsou 12:00:00 a 12:00:30.

    Podrobnosti najdete v části "Zaokrouhlení časového razítka nahoru" v dokumentu s osvědčenými postupy.

  • Název souboru CSV se použije jako název proměnné a měl by být jedinečný. Například "temperature.csv" a "humidity.csv".

  • Proměnné pro trénování a proměnné pro odvozování by měly být konzistentní. Pokud například pro trénování používáte , , , a , měli byste pro odvození zadat přesně stejné series_1 series_2 series_3 series_4 series_5 proměnné.

  • Soubory CSV by se měly zkomprimovat do souboru ZIP a nahrát do kontejneru objektů blob Azure. Soubor zip může mít název, který chcete.

Struktura složek

Běžnou chybou při přípravě dat jsou další složky v souboru zip. Předpokládejme například, že název souboru zip je series.zip . Po dekomprimování souborů do nové složky je správná cesta k souborům CSV a nesprávná cesta ./series může být ./series/series_1.csv ./series/foo/bar/series_1.csv .

Správný příklad adresářového stromu po dekomprimování souboru zip v Windows

.
└── series
    ├── series_1.csv
    ├── series_2.csv
    ├── series_3.csv
    ├── series_4.csv
    └── series_5.csv

Nesprávný příklad adresářového stromu po dekomprimování souboru zip v Windows

.
└── series
    └── series
        ├── series_1.csv
        ├── series_2.csv
        ├── series_3.csv
        ├── series_4.csv
        └── series_5.csv

Zpracování dat

Teď můžete kód spustit pomocí rozhraní API MVAD bez jakékoli chyby. Co je možné udělat pro zlepšení přesnosti modelu?

Kvalita dat

  • Jak se model učí z historických dat normální vzory, trénovací data by měla představovat celkový normální stav systému. Pokud jsou trénovací data plná anomálií, je pro model obtížné se tyto typy vzorů naučit. Pro dobrou přesnost je empirická prahová hodnota neobvyklé rychlosti 1 % a nižší.
  • Obecně platí, že chybějící poměr hodnot trénovaných dat by měl být nižší než 20 %. Příliš mnoho chybějících dat může vést k tomu, že se jako normální vzory učí automaticky vyplněné hodnoty (obvykle lineární nebo konstantní hodnoty). To může vést ke zjištění skutečných (nezvěstných) datových bodů jako anomálií. Existují však případy, kdy je přijatelný vysoký poměr chybějících ů. Pokud máte například dvě proměnné (časovou řadu) ve skupině používající režim k zarovnání Outer časových razítek. Jedna z nich má jednominutovou členitost, druhá má hodinovou členitost. Hodinová proměnná ze své podstaty pak obsahuje alespoň 59 / 60 = 98,33 % chybějících datových bodů. V takových případech je v pořádku vyplnit hodinovou proměnnou pomocí jediné dostupné hodnoty (která chybí), pokud obvykle příliš kolísá.

Množství dat

  • Základní model MVAD má miliony parametrů. Potřebuje minimální počet datových bodů, aby se naučila optimální sadu parametrů. Empirické pravidlo je, že k trénování modelu pro zajištění dobré přesnosti je potřeba zadat 15 000 nebo více datových bodů (časových razítek) na proměnnou. Obecně platí, že čím více trénovací data, tím vyšší je přesnost. V případech, kdy ale tolik dat nenabídáte, stále doporučujeme experimentovat s méně daty a podívat se, jestli je ohrožená přesnost stále přijatelná.

  • Při každém volání rozhraní API pro odvozování musíte zajistit, aby zdrojový datový soubor měl jenom dostatek datových bodů. To je obvykle slidingWindow + počet datových bodů, které skutečně potřebují výsledky odvozování. Například v případě streamování, kdy pokaždé, když chcete odvozovat na JEDNO nové časové razítko, může datový soubor obsahovat pouze úvodní plus JEDEN datový bod. Pak můžete přejít dál a vytvořit další soubor ZIP se stejným počtem datových bodů ( + 1), ale přesunout JEDEN krok na slidingWindow "pravou" stranu a odeslat další úlohu odvození. slidingWindow

    Cokoli nad rámec nebo "před" úvodním posuvným oknem vůbec nebude mít vliv na výsledek odvozování a může způsobit pouze snížení výkonu. Cokoli pod tím, co může vést k NotEnoughInput chybě

Zaokrouhlení časového razítka nahoru

Ve skupině proměnných (časových řad) může být každá proměnná shromážděna z nezávislého zdroje. Časová razítka různých proměnných mohou být vzájemně nekonzistentní a se známými frekvencemi. Tady je jednoduchý příklad.

Proměnná-1

časové razítko hodnota
12:00:01 1.0
12:00:35 1.5
12:01:02 0,9
12:01:31 2,2
12:02:08 1.3

Proměnná-2

časové razítko hodnota
12:00:03 2,2
12:00:37 2,6
12:01:09 1.4
12:01:34 1.7
12:02:04 2.0

Máme dvě proměnné shromážděné ze dvou senzorů, které každých 30 sekund odesílat jeden datový bod. Senzory ale nesílá datové body s striktní frekvencí, ale někdy i dříve a někdy i později. Vzhledem k tomu, že MVAD bude brát v úvahu korelace mezi různými proměnnými, musí být časová razítka správně zarovnána, aby metriky správně odrážely stav systému. V příkladu výše musí být časová razítka proměnné 1 a proměnné 2 před zarovnáním správně zaokrouhlena na jejich frekvenci.

Podívejme se, co se stane, když nejsou předem zpracovány. Pokud nastavíme alignMode na hodnotu Outer (což znamená sjednocené spojení dvou sad), sloučená tabulka bude

časové razítko Proměnná-1 Proměnná-2
12:00:01 1.0 nan
12:00:03 nan 2,2
12:00:35 1.5 nan
12:00:37 nan 2,6
12:01:02 0,9 nan
12:01:09 nan 1.4
12:01:31 2,2 nan
12:01:34 nan 1.7
12:02:04 nan 2.0
12:02:08 1.3 nan

nan označuje chybějící hodnoty. Sloučená tabulka samozřejmě není tím, co jste očekávali. Proměnná 1 a proměnná 2 promíchá a model MVAD nemůže extrahovat informace o korelacích mezi nimi. Pokud nastavíme na , sloučená tabulka bude prázdná, protože v proměnné 1 a proměnné 2 neexistuje žádné běžné alignMode Inner časové razítko.

Proto by měla být časová razítka proměnné 1 a proměnné 2 předem zpracována (zaokrouhlena na nejbližší 30sekudová časová razítka) a nová časová řada jsou

Proměnná-1

časové razítko hodnota
12:00:00 1.0
12:00:30 1.5
12:01:00 0,9
12:01:30 2,2
12:02:00 1.3

Proměnná-2

časové razítko hodnota
12:00:00 2,2
12:00:30 2,6
12:01:00 1.4
12:01:30 1.7
12:02:00 2.0

Teď je sloučená tabulka přijatelnější.

časové razítko Proměnná-1 Proměnná-2
12:00:00 1.0 2,2
12:00:30 1.5 2,6
12:01:00 0,9 1.4
12:01:30 2,2 1.7
12:02:00 1.3 2.0

Hodnoty různých proměnných v blízkosti časových razítek jsou dobře zarovnané a model MVAD teď může extrahovat informace o korelaci.

Běžné nástrahy

Kromě tabulky kódů chyb jsmese od zákazníků, jako jste vy, dozvěděli o některých běžných nástrahách při používání rozhraní MVAD API. Tato tabulka vám pomůže se těmto problémům vyhnout.

Úskalí Důsledkem Vysvětlení a řešení
Časová razítka v trénovací nebo odvozovací data nebyla zaokrouhlená nahoru, aby byla v souladu s příslušnou frekvencí dat jednotlivých proměnných. Časová razítka výsledků odvozování nejsou podle očekávání: buď příliš málo časových razítek, nebo příliš mnoho časových razítek. Projděte si zaokrouhlení časového razítka nahoru.
Příliš mnoho neobvyklého datového bodu v trénovací data Přesnost modelu je negativně ovlivněna, protože při trénování považuje neobvyklé datové body za normální vzory. Empiricky vám pomůže udržet neobvyklou rychlost na 1 % nebo nižší.
Příliš málo trénovací data Je ohrožena přesnost modelu. Empirické trénování modelu MVAD vyžaduje 15 000 nebo více datových bodů (časových razítek) na proměnnou, aby se udržela dobrá přesnost.
Převzetí všech datových bodů isAnomaly = true s anomáliemi Příliš mnoho falešně pozitivních výsledků K odcizení anomálií, které nejsou závažné, byste měli použít i (nebo ) a isAnomaly (volitelně) použít seskupení ke kontrole doby trvání anomálií a potlačení náhodných severity score šumů. Rozdíly mezi a najdete v části Nejčastější dotazy severity score níže.
Podsložky jsou zazipované do datového souboru pro trénování nebo odvozování. Datové soubory CSV uvnitř pods složek se během trénování nebo odvozování ignorují. V souboru zip nejsou povolené žádné podsložky. Podrobnosti najdete v tématu Struktura složek.
Příliš mnoho dat v odvozování datového souboru: například komprimování všech historických dat v souboru ZIP s odvozovacími daty Nemusí se zobrazit žádné chyby, ale při pokusu o nahrání souboru ZIP do objektu blob Azure a při pokusu o spuštění odvozování dojde ke snížení výkonu. Podrobnosti najdete v tématu Objem dat.
Vytvoření Detektor anomálií prostředků v oblastech Azure, které ještě nepodporují MVAD, a volání rozhraní API MVAD Při volání rozhraní API MVAD se zobrazí chyba Prostředek nebyl nalezen. Během fáze Preview je MVAD k dispozici pouze v omezených oblastech. Pokud chcete mít aktuální informace o Detektor anomálií MVAD, přidejte si prosím záložku What's new in Detektor anomálií to keep up up with MVAD region roll outs. Můžete také vyřešit problém GitHub nás kontaktovat a AnomalyDetector@microsoft.com požádat o to v konkrétních oblastech.

Časté otázky

Jak funguje posuvné okno MVAD?

Pojďme se pomocí dvou příkladů naučit, jak posuvné okno MVAD funguje. Předpokládejme, že slidingWindow jste nastavili = 1 440 a vaše vstupní data mají jednominutovou členitost.

  • Scénář streamování: Chcete předpovědět, jestli je datový bod ONE v bodě 2021-01-02T00:00:00Z anomální. Vaše startTime hodnoty a budou stejné endTime ("2021-01-02T00:00:00Z"). Zdroj dat odvozování ale musí obsahovat alespoň 1 440 + 1 časová razítka. Vzhledem k tomu, že MVAD vezme počáteční data před cílový datový bod ("2021-01-02T00:00:00Z") a rozhodne, jestli je cílem anomálie. Délka potřebných úvodních dat je v tomto případě slidingWindow 1 440. 1 440 = 60 * 24, takže vstupní data musí začíná od nejnovějšího "2021-01-01T00:00:00Z".

  • Scénář dávky: Předpovídáte několik cílových datových bodů. Vaše endTime hodnota bude větší než vaše hodnota startTime . Odvozování se v takových scénářích provádí "pohyblivým oknem". MVAD například použije data z do (včetně) k určení, jestli 2021-01-01T00:00:00Z jsou data na adrese 2021-01-01T23:59:00Z 2021-01-02T00:00:00Z anomálií. Pak se posune vpřed a pomocí dat z do (včetně) určí, jestli jsou data v 2021-01-01T00:01:00Z 2021-01-02T00:00:00Z 2021-01-02T00:01:00Z anomálii. Postupuje stejným způsobem (trvá 1 440 datových bodů k porovnání) až do posledního časového razítka určeného parametrem (nebo skutečného nejnovějšího endTime časového razítka). Proto musí váš zdroj dat pro odvozování obsahovat data začínající a startTime - slidingWindow ideálně obsahuje celkovou velikost slidingWindow + ( endTime - startTime ).

Proč přijímat jenom soubory ZIP pro trénování a odvozování?

Soubory ZIP používáme, protože v dávkových scénářích očekáváme, že velikost dat trénování i odvozování bude velmi velká a nebude možné je umístit do textu požadavku HTTP. To umožňuje uživatelům provádět dávkové odvozování historických dat pro ověření modelu nebo analýzu dat.

To ale může být poněkud nepohodlné pro odvozování streamování a pro data s vysokou frekvencí. Máme plán pro přidání nového rozhraní API navrženého pro odvození streamování, které uživatelé můžou předat data v textu žádosti.

Jaký je rozdíl mezi severity a score ?

Obvykle doporučujeme, abyste použili severity jako filtr k navýšení anomálií, které nejsou tak důležité pro vaši firmu. V závislosti na vašem scénáři a způsobu dat mají tyto anomálie, které jsou méně důležité, často poměrně nižší severity hodnoty nebo samostatné (nesouvislé) vysoké severity hodnoty, jako jsou náhodné špičky.

V případech, kdy jste našli potřebnou propracovanější pravidla než prahové hodnoty severity nebo dobu trvání souvislých vysokých severity hodnot, můžete chtít použít score k vytvoření výkonnějších filtrů. Porozumění způsobu, jakým MVAD používá score k určení anomálií, může pomoci:

Bereme v úvahu, jestli se datový bod neobvyklé z globální i místní perspektivy. Pokud score je v časovém razítku vyšší než určitá prahová hodnota, je časové razítko označeno jako anomálie. Pokud score je menší než prahová hodnota, ale je relativně vyšší v segmentu, je také označena jako anomálie.

Další kroky