series_decompose_anomalies()
Az anomáliadetektálás az adatsorok felbontásán alapul. További információ: series_decompose().
A függvény bemenetként egy adatsort (dinamikus numerikus tömböt) tartalmazó kifejezést használ, és a rendellenes pontokat pontszámokkal nyeri ki.
Syntax
series_decompose_anomalies (
Sorozat,
[ Küszöbérték,
Szezonalitás,
Trend,
,
Test_points,
AD_methodSeasonality_threshold ])
További információ a szintaxis konvenciókról.
Paraméterek
Név | Típus | Kötelező | Leírás |
---|---|---|---|
Adatsorozat | dynamic |
✔️ | Numerikus értékek tömbje, általában a make-series vagy make_list operátorok eredményül kapott kimenete. |
Küszöbérték | real |
Az anomáliák küszöbértéke. Az alapértelmezett érték 1,5 k, enyhe vagy erősebb anomáliák észleléséhez. | |
Szezonalitás | int |
Szabályozza a szezonális elemzést. Lehetséges értékek: - -1 : A szezonalitás automatikus észlelése series_periods_detect használatával. Ez az alapértelmezett érték.- Egész szám időszaka: Pozitív egész szám, amely a intervallumok számában adja meg a várt időszakot. Ha például a sorozat intervallumokban 1h van, a heti időszak 168 doboz.- 0 : Nincs szezonalitás, ezért hagyja ki ezt az összetevőt. |
|
Trend | string |
Szabályozza a trendelemzést. Lehetséges értékek: - avg : Trendösszetevő meghatározása a következőként average(x) : . Ez az alapértelmezett beállítás.- linefit : Trendösszetevő kinyerése lineáris regresszióval.- none : Nincs trend, ezért hagyja ki ezt az összetevőt. |
|
Test_points | int |
Pozitív egész szám, amely a sorozat végén a tanulási vagy regressziós folyamatból kizárandó pontok számát adja meg. Ezt a paramétert előrejelzési célokra kell beállítani. Az alapértelmezett érték a 0. | |
AD_method | string |
Az anomáliadetektálási módszert szabályozza a reziduális idősoron, amely az alábbi értékek egyikét tartalmazza: - ctukey : Tukey kerítéstesztje egyéni 10-90. percentilistartománysal. Ez az alapértelmezett beállítás.- tukey : Tukey kerítéstesztje standard 25-75. percentilis tartománnyal.További információ a reziduális idősorokról: series_outliers. |
|
Seasonality_threshold | real |
A szezonalitási pontszám küszöbértéke, ha a szezonalitás automatikus észlelésre van beállítva. Az alapértelmezett pontszám küszöbértéke 0,6. További információ: series_periods_detect. |
Válaszok
A függvény a következő sorozatot adja vissza:
ad_flag
: Egy ternáris sorozat, amely (+1, -1, 0) jelölést tartalmaz fel/le/nem anomáliátad_score
: Anomáliák pontszámabaseline
: Az adatsor előrejelzett értéke a felbontásnak megfelelően
Az algoritmus
Ez a függvény az alábbi lépéseket követi:
- Meghívja series_decompose() a megfelelő paramétereket az alapkonfiguráció és a reziduálisok sorozatának létrehozásához.
- Kiszámítja ad_score adatsort úgy, hogy a reziduális-sorozaton series_outliers () a kiválasztott anomáliadetektálási módszerrel alkalmazza.
- Kiszámítja a ad_flag adatsort úgy, hogy a küszöbértéket a ad_score alkalmazza fel/le/nem anomália jelölésére.
Példák
Anomáliák észlelése a heti szezonalitásban
Az alábbi példában hozzon létre egy heti szezonalitású sorozatot, majd adjon hozzá néhány kiugró értékeket. series_decompose_anomalies
automatikusan észleli a szezonalitást, és létrehoz egy alapkonfigurációt, amely rögzíti az ismétlődő mintát. A hozzáadott kiugró értékek egyértelműen kivehetők a ad_score összetevőben.
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
Anomáliák észlelése a heti szezonalitásban trenddel
Ebben a példában adjon hozzá egy trendet az előző példából származó sorozathoz. Először futtassa a parancsot series_decompose_anomalies
az alapértelmezett paraméterekkel, amelyekben a trend avg
alapértelmezett értéke csak az átlagot veszi figyelembe, és nem számítja ki a trendet. A létrehozott alapterv nem tartalmazza a trendet, és az előző példához képest kevésbé pontos. Következésképpen az adatokba beszúrt kiugró értékek némelyikét a rendszer nem észleli a nagyobb eltérés miatt.
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
Ezután futtassa ugyanezt a példát, de mivel trendet vár a sorozatban, adja meg linefit
a trendparamétert. Láthatja, hogy az alapkonfiguráció sokkal közelebb van a bemeneti adatsorhoz. A rendszer az összes beszúrt kiugró értéket észleli, valamint néhány téves pozitív eredményt is. Tekintse meg a következő példát a küszöbérték finomhangolására.
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
Az anomáliadetektálási küszöbérték finomhangolása
Az előző példában néhány zajos pontot észleltek anomáliákként. Most növelje az anomáliadetektálási küszöbértéket az alapértelmezett 1,5-ről 2,5-re. Használja ezt az interpercentilis tartományt, hogy csak erősebb anomáliákat észlelje a rendszer. Most csak az adatokba beszúrt kiugró értékek lesznek észlelve.
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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: