series_decompose_anomalies()
Detekce anomálií je založená na rozkladu řady. Další informace najdete v tématu series_decompose().
Funkce přebírá jako vstup výraz obsahující řadu (dynamické číselné pole) a extrahuje neobvyklé body se skóre.
Syntax
series_decompose_anomalies (
Série,
[ Prahová hodnota,
Sezónnost,
,
Trend Test_points,
AD_method,
Seasonality_threshold ])
Přečtěte si další informace o konvencích syntaxe.
Parametry
Název | Typ | Vyžadováno | Popis |
---|---|---|---|
Řada | dynamic |
✔️ | Matice číselných hodnot, obvykle výsledný výstup vytyčiných řad nebo make_list operátorů. |
Prahová hodnota | real |
Prahová hodnota anomálie. Výchozí hodnota je 1,5, k pro detekci mírných nebo silnějších anomálií. | |
Sezónnost | int |
Řídí sezónní analýzu. Možné hodnoty jsou: - -1 : Automatické rozpoznávání sezónnosti pomocí series_periods_detect. Toto je výchozí hodnota.- Celočíselné časové období: Kladné celé číslo určující očekávané období v počtu intervalů. Pokud je například řada v 1h intervalech, týdenní období je 168 přihrádek.- 0 : Bez sezónnosti, takže extrahování této komponenty přeskočte. |
|
Trendovou | string |
Řídí analýzu trendu. Možné hodnoty jsou: - avg : Definujte komponentu trendu jako average(x) . Tato možnost je výchozí.- linefit : Extrahujte komponentu trendu pomocí lineární regrese.- none : Žádný trend, takže extrahování této komponenty přeskočte. |
|
Test_points | int |
Kladné celé číslo určující počet bodů na konci řady, které se mají vyloučit z procesu učení nebo regrese. Tento parametr by se měl nastavit pro účely prognózování. Výchozí hodnota je 0. | |
AD_method | string |
Řídí metodu detekce anomálií pro reziduální časovou řadu obsahující jednu z následujících hodnot: - ctukey : Tukeyho plotový test s vlastním rozsahem 10.-90. percentilu. Tato možnost je výchozí.- tukey : Tukeyův plotový test se standardním rozsahem 25.-75. percentilu.Další informace o zbytkových časových řadách najdete v tématu series_outliers. |
|
Seasonality_threshold | real |
Prahová hodnota skóre sezónnosti, když je sezónnost nastavená na automatické rozpoznávání. Výchozí prahová hodnota skóre je 0,6. Další informace najdete v tématu series_periods_detect. |
Návraty
Funkce vrátí následující příslušnou řadu:
ad_flag
: Ternární řada obsahující (+1, -1, 0) označující anomálii nahoru/dolů/žádná anomálie v uvedeném pořadíad_score
: Skóre anomáliíbaseline
: Předpovězená hodnota řady podle rozkladu
Algoritmus
Tato funkce se řídí těmito kroky:
- Zavolá series_decompose() s příslušnými parametry a vytvoří řadu standardních hodnot a reziduí.
- Vypočítá ad_score řady použitím series_outliers() se zvolenou metodou detekce anomálií u řady reziduí.
- Vypočítá ad_flag řady použitím prahové hodnoty pro ad_score, která označí anomálii nahoru, dolů nebo žádnou.
Příklady
Detekce anomálií v týdenní sezónnosti
V následujícím příkladu vygenerujte řadu s týdenní sezónností a pak do ní přidejte odlehlé hodnoty. series_decompose_anomalies
autodetects the seasonality and generates a baselines that capture the opakující se vzor. Odlehlé hodnoty, které jste přidali, jsou jasně vidět v ad_score komponentě.
let ts=range t from 1 to 24*7*5 step 1
| extend Timestamp = datetime(2018-03-01 05:00) + 1h * t
| extend y = 2*rand() + iff((t/24)%7>=5, 10.0, 15.0) - (((t%24)/10)*((t%24)/10)) // generate a series with weekly seasonality
| extend y=iff(t==150 or t==200 or t==780, y-8.0, y) // add some dip outliers
| extend y=iff(t==300 or t==400 or t==600, y+8.0, y) // add some spike outliers
| summarize Timestamp=make_list(Timestamp, 10000),y=make_list(y, 10000);
ts
| extend series_decompose_anomalies(y)
| render timechart
Detekce anomálií v týdenní sezónnosti s trendem
V tomto příkladu přidejte do řady trend z předchozího příkladu. Nejprve spusťte series_decompose_anomalies
s výchozími parametry, ve kterých výchozí hodnota trendu avg
přebírá pouze průměr a nevypočítá trend. Vygenerovaný směrný plán neobsahuje trend a je méně přesný v porovnání s předchozím příkladem. V důsledku toho se některé odlehlé hodnoty, které jste vložili do dat, nezjistí kvůli vyšší odchylkě.
let ts=range t from 1 to 24*7*5 step 1
| extend Timestamp = datetime(2018-03-01 05:00) + 1h * t
| extend y = 2*rand() + iff((t/24)%7>=5, 5.0, 15.0) - (((t%24)/10)*((t%24)/10)) + t/72.0 // generate a series with weekly seasonality and ongoing trend
| extend y=iff(t==150 or t==200 or t==780, y-8.0, y) // add some dip outliers
| extend y=iff(t==300 or t==400 or t==600, y+8.0, y) // add some spike outliers
| summarize Timestamp=make_list(Timestamp, 10000),y=make_list(y, 10000);
ts
| extend series_decompose_anomalies(y)
| extend series_decompose_anomalies_y_ad_flag =
series_multiply(10, series_decompose_anomalies_y_ad_flag) // multiply by 10 for visualization purposes
| render timechart
Dále spusťte stejný příklad, ale protože očekáváte trend v řadě, zadejte linefit
v parametru trend. Vidíte, že směrný plán je mnohem blíže vstupní řadě. Zjistí se všechny vložené odlehlé hodnoty a také některé falešně pozitivní výsledky. Podívejte se na další příklad úprav prahové hodnoty.
let ts=range t from 1 to 24*7*5 step 1
| extend Timestamp = datetime(2018-03-01 05:00) + 1h * t
| extend y = 2*rand() + iff((t/24)%7>=5, 5.0, 15.0) - (((t%24)/10)*((t%24)/10)) + t/72.0 // generate a series with weekly seasonality and ongoing trend
| extend y=iff(t==150 or t==200 or t==780, y-8.0, y) // add some dip outliers
| extend y=iff(t==300 or t==400 or t==600, y+8.0, y) // add some spike outliers
| summarize Timestamp=make_list(Timestamp, 10000),y=make_list(y, 10000);
ts
| extend series_decompose_anomalies(y, 1.5, -1, 'linefit')
| extend series_decompose_anomalies_y_ad_flag =
series_multiply(10, series_decompose_anomalies_y_ad_flag) // multiply by 10 for visualization purposes
| render timechart
Úprava prahové hodnoty detekce anomálií
V předchozím příkladu bylo jako anomálie zjištěno několik hlučných bodů. Teď zvyšte prahovou hodnotu detekce anomálií z výchozí hodnoty 1,5 na 2,5. Tento rozsah mezicentilu použijte, aby se detekovaly pouze silnější anomálie. Nyní budou zjištěny pouze odlehlé hodnoty, které jste vložili do dat.
let ts=range t from 1 to 24*7*5 step 1
| extend Timestamp = datetime(2018-03-01 05:00) + 1h * t
| extend y = 2*rand() + iff((t/24)%7>=5, 5.0, 15.0) - (((t%24)/10)*((t%24)/10)) + t/72.0 // generate a series with weekly seasonality and onlgoing trend
| extend y=iff(t==150 or t==200 or t==780, y-8.0, y) // add some dip outliers
| extend y=iff(t==300 or t==400 or t==600, y+8.0, y) // add some spike outliers
| summarize Timestamp=make_list(Timestamp, 10000),y=make_list(y, 10000);
ts
| extend series_decompose_anomalies(y, 2.5, -1, 'linefit')
| extend series_decompose_anomalies_y_ad_flag =
series_multiply(10, series_decompose_anomalies_y_ad_flag) // multiply by 10 for visualization purposes
| render timechart
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro