series_decompose_anomalies()
Anomali Algılama, seri ayrıştırmayı temel alır. Daha fazla bilgi için bkz. series_decompose().
işlevi giriş olarak seri (dinamik sayısal dizi) içeren bir ifade alır ve puanlarla anormal noktaları ayıklar.
Syntax
series_decompose_anomalies (
Serisi,
[ Eşik,
Seasonality,
Eğilim,
,
Test_points,
AD_methodSeasonality_threshold ])
Söz dizimi kuralları hakkında daha fazla bilgi edinin.
Parametreler
Ad | Tür | Gerekli | Açıklama |
---|---|---|---|
Seriler | dynamic |
✔️ | Sayısal değerler dizisi, genellikle seri yapma veya make_list işleçlerinin elde edilen çıkışıdır. |
Eşik | real |
Anomali eşiği. Hafif veya daha güçlü anomalileri algılamak için varsayılan değer 1,5, k değeridir. | |
Seasonality | int |
Mevsimsel analizi denetler. Olası değerler şunlardır: - -1 : series_periods_detect kullanarak mevsimselliği otomatik olarak algıla. Varsayılan değer budur.- Tamsayı süresi: Bölme sayısı cinsinden beklenen dönemi belirten pozitif bir tamsayı. Örneğin, seri bölmeler içindeyse 1h haftalık dönem 168 bölmedir.- 0 : Mevsimsellik yok, bu nedenle bu bileşeni ayıklamayı atlayın. |
|
Eğilim | string |
Eğilim analizini denetler. Olası değerler şunlardır: - avg : Eğilim bileşenini olarak average(x) tanımlayın. Bu varsayılan seçenektir.- linefit : Doğrusal regresyon kullanarak eğilim bileşenini ayıklayın.- none : Eğilim yok, bu nedenle bu bileşeni ayıklamayı atlayın. |
|
Test_points | int |
Öğrenme veya regresyon sürecinin dışında tutulacak serinin sonundaki nokta sayısını belirten pozitif bir tamsayı. Bu parametre tahmin amacıyla ayarlanmalıdır. Varsayılan değer 0’dır. | |
AD_method | string |
Artık zaman serisindeki anomali algılama yöntemini denetler ve aşağıdaki değerlerden birini içerir: - ctukey : Tukey'in özel 10.-90. yüzdebirlik aralığına sahip çit testi. Bu varsayılan seçenektir.- tukey : Tukey'in standart 25.-75. yüzdebirlik aralığına sahip çit testi.Artık zaman serisi hakkında daha fazla bilgi için bkz. series_outliers. |
|
Seasonality_threshold | real |
Mevsimsellik otomatik algıla olarak ayarlandığında mevsimsellik puanı eşiği. Varsayılan puan eşiği 0,6'dır. Daha fazla bilgi için bkz. series_periods_detect. |
Döndürülenler
işlevi aşağıdaki ilgili seriyi döndürür:
ad_flag
: Sırasıyla yukarı/aşağı/anomali yok olarak işaretlenen (+1, -1, 0) içeren üçüncül seriad_score
: Anomali puanıbaseline
: Ayrıştırmaya göre serinin tahmin edilen değeri
Algoritma
Bu işlev şu adımları izler:
- Taban çizgisi ve artıklar serisini oluşturmak için ilgili parametrelerle series_decompose() çağırır.
- Artıklar serisinde seçilen anomali algılama yöntemiyle series_outliers() uygulayarak ad_score serisini hesaplar.
- Ad_score sırasıyla anomaliyi yukarı/aşağı/hiç işaretlemek için eşiği uygulayarak ad_flag serisini hesaplar.
Örnekler
Haftalık mevsimsellik anomalilerini algılama
Aşağıdaki örnekte, haftalık mevsimsellik düzeyine sahip bir seri oluşturun ve ardından buna bazı aykırı değerler ekleyin. series_decompose_anomalies
mevsimselliği otomatik olarak algılar ve yinelenen deseni yakalayan bir taban çizgisi oluşturur. Eklediğiniz aykırı değerler, ad_score bileşeninde açıkça tespit edilebilir.
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
Eğilimle haftalık mevsimsellik anomalilerini algılama
Bu örnekte, önceki örnekteki seriye bir eğilim ekleyin. İlk olarak, eğilim varsayılan değerinin yalnızca ortalamayı aldığı ve eğilimi avg
hesaplamadığı varsayılan parametrelerle komutunu çalıştırınseries_decompose_anomalies
. Oluşturulan taban çizgisi eğilimi içermez ve önceki örne göre daha az kesindir. Sonuç olarak, yüksek varyans nedeniyle verilere eklediğiniz aykırı değerlerden bazıları algılanmamıştır.
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
Ardından aynı örneği çalıştırın, ancak seride bir eğilim beklediğiniz için eğilim parametresinde belirtin linefit
. Temelin giriş serisine çok daha yakın olduğunu görebilirsiniz. Eklenen tüm aykırı değerler algılanır ve bazı hatalı pozitif sonuçlar da bulunur. Eşiği ayarlamayla ilgili bir sonraki örniğe bakın.
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
Anomali algılama eşiğini ayarlama
Önceki örnekte birkaç gürültülü nokta anomali olarak algılandı. Şimdi anomali algılama eşiğini varsayılan değer olan 1,5'ten 2,5'e yükseltin. Yalnızca daha güçlü anomaliler algılandığından, bu birlikte çalışma aralığını kullanın. Artık yalnızca verilere eklediğiniz aykırı değerler algılanır.
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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin