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 rovnastartTime. 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 častoendTimestartTimepouží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é zeslidingWindowkzdrojového souboru, aby sekdocí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ěslidingWindowvěci:- 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šší hodnotuslidingWindow. - Rozdíl mezi dobami trénování a odvozování a potenciálním dopadem na výkon Větší může
slidingWindowzpůsobit delší dobu trénování nebo odvozování. Neexistuje žádná záruka, že většíslidingWindowhodnoty povede ke zvýšení přesnosti. Malá může způsobit, že se model obtížněslidingWindowkonverguje na optimální řešení. Například je obtížné detekovat anomálie, pokudslidingWindowmají pouze dva body.
- 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
alignMode– Jak zarovnat více proměnných (časovou řadu) podle časových razítek. Pro tento parametr existují dvě možnosti aInnera výchozí hodnota jeOuterOuter.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
alignModelhodnot.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 Innerspojení 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 Outerspojení 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 nan3 2020-11-04 4 4 2020-11-05 5 nanfillNAMethod– Jak vyplnitnanslouč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 jsouLinear, , , a výchozí hodnota jePreviousSubsequentZeroFixedLinear.Možnost Metoda LinearVyplňování nanhodnot 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]SubsequentK vyplnění mezer použijte další platnou hodnotu. Příklad: [1, 2, nan, 3, nan, 4]->[1, 2, 3, 3, 4, 4]ZeroVyplňte nanhodnoty hodnotou 0.FixedVyplňte nanhodnoty zadanou platnou hodnotou, která by měla být zadaná vpaddingValue.paddingValue– Hodnota odsazení se používá k vyplnění, když je ananmusí být v tomto případěfillNAMethodFixedzadaná. 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
timestampvaluečárkami (CSV).Názvy sloupců souboru CSV by měly být přesně a
timestampvalue. Rozlišují se malá a velká písmena.Hodnoty
timestampby měly odpovídat standardu ISO 8601; hodnota může být celá čísla nebo desetinná čísla svaluelibovolný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_1series_2series_3series_4series_5promě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 naslidingWindow"pravou" stranu a odeslat další úlohu odvození.slidingWindowCokoli 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
NotEnoughInputchybě
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
startTimehodnoty 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ěslidingWindow1 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
endTimehodnota bude větší než vaše hodnotastartTime. 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í, jestli2021-01-01T00:00:00Zjsou data na adrese2021-01-01T23:59:00Z2021-01-02T00:00:00Zanomálií. Pak se posune vpřed a pomocí dat z do (včetně) určí, jestli jsou data v2021-01-01T00:01:00Z2021-01-02T00:00:00Z2021-01-02T00:01:00Zanomá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šíhoendTimečasového razítka). Proto musí váš zdroj dat pro odvozování obsahovat data začínající astartTime-slidingWindowideálně obsahuje celkovou velikostslidingWindow+ (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.