AnomalyDetection_ChangePoint (Azure Stream Analytics)

Mendeteksi anomali persisten dalam aliran peristiwa rangkaian waktu. Model pembelajaran mesin yang mendasar menggunakan algoritma Exchangeability Martingales.

Sintaks

AnomalyDetection_ChangePoint(
        <scalar_expression>, 
        <confidence>, 
        <historySize>)
    OVER ([PARTITION BY <partition key>] 
        LIMIT DURATION(<unit>, <length>)
    [WHEN boolean_expression])

Argumen

scalar_expression

Kolom peristiwa atau bidang komputasi tempat model melakukan deteksi anomali. Nilai yang diizinkan untuk parameter ini termasuk jenis data FLOAT atau BIGINT yang mengembalikan nilai tunggal (skalar).

Ekspresi kartubebas * tidak diperbolehkan. Selain itu, scalar_expression tidak dapat berisi fungsi analitik atau fungsi eksternal lainnya.

Kepercayaan

Angka persentase dari 1,00 hingga 100 (inklusif) yang menetapkan sensitivitas model pembelajaran mesin. Semakin rendah kepercayaan diri, semakin tinggi jumlah anomali yang terdeteksi, dan sebaliknya. Mulai dari angka arbitrer antara 70 dan 90 dan sesuaikan ini berdasarkan hasil yang diamati dalam pengembangan atau pengujian.

historySize

Jumlah peristiwa di jendela geser yang terus dipelajari model dan digunakan untuk menilai peristiwa berikutnya untuk anomali. Biasanya, ini harus mewakili periode waktu perilaku normal untuk memungkinkan model menandai anomali berikutnya. Mulailah dengan tebakan terdidik menggunakan log historis, dan sesuaikan berdasarkan hasil yang diamati dalam pengembangan atau pengujian.

OVER ([ partition_by_clause ] limit_duration_clause [when_clause])

partition_by_clause

Digunakan untuk mempartisi pelatihan model berdasarkan kolom tertentu dalam peristiwa. Model menerapkan pengaturan parameter fungsi yang sama di semua partisi.

limit_duration_clause DURATION(unit, panjang)

Ukuran jendela geser dalam Azure Stream Analytics dalam hal waktu. Ukuran yang disarankan dari jendela waktu ini setara dengan waktu yang diperlukan untuk menghasilkan riwayatUkuran jumlah peristiwa dalam keadaan stabil.

when_clause

Menentukan kondisi boolean agar peristiwa diberikan kepada model untuk melakukan deteksi anomali. when_clause bersifat opsional.

Jenis Pengembalian

Fungsi mengembalikan rekaman berlapis yang terdiri dari kolom berikut:

IsAnomaly

BIGINT (0 atau 1) menunjukkan apakah peristiwa itu anomali atau tidak.

Skor

Skor Martingale komputasi (float) menunjukkan seberapa anomali suatu peristiwa. Skor ini tumbuh secara eksponensial dengan nilai anomali.

Contoh

Dalam sampel kueri berikut, kueri pertama mengasumsikan peristiwa setiap 5 menit, dan kueri kedua mengasumsikan peristiwa setiap detik. Tingkat keyakinan diatur pada 75 untuk kedua model.

AnomalyDetection_ChangePoint(reading, 75, 72)
    OVER (LIMIT DURATION(hour, 6))

AnomalyDetection_ChangePoint(temperature, 75, 120)
    OVER ([PARTITION BY sensorId] LIMIT DURATION(second, 120))

Contoh dengan asumsi tingkat input seragam 1 peristiwa per detik dalam jendela geser 20 menit dengan ukuran riwayat 1200 peristiwa. Pernyataan SELECT akhir mengekstrak dan menghasilkan skor dan status anomali dengan tingkat keyakinan 80%.

WITH AnomalyDetectionStep AS
(
SELECT
EVENTENQUEUEDUTCTIME as time,
CAST(temperature as float) as temp,
AnomalyDetection_ChangePoint(CAST(temperature as float), 80, 1200) 
OVER(LIMIT DURATION(minute, 20)) as ChangePointScores
FROM input
)

SELECT
time,
temp,
CAST(GetRecordPropertyValue(ChangePointScores, 'Score') as float) as
ChangePointScore,
CAST(GetRecordPropertyValue(ChangePointScores, 'IsAnomaly') as bigint) as
IsChangePointAnomaly

INTO output
FROM AnomalyDetectionStep

Contoh dengan aliran input non-seragam yang dibuat seragam menggunakan jendela tumbling 1 detik:

WITH SmootheningStep AS
(
SELECT
System.Timestamp() as time,
AVG(CAST(temperature as float)) as temp
FROM input
GROUP BY TUMBLINGWINDOW(second, 1)
),
AnomalyDetectionStep AS
(
SELECT
time,
temp,
AnomalyDetection_ChangePoint(temp, 80, 1200) 
OVER(LIMIT DURATION(minute, 20)) as ChangePointScores
FROM SmootheningStep
)

SELECT
time,
temp,
CAST(GetRecordPropertyValue(ChangePointScores, 'Score') as float) as
ChangePointScore,
CAST(GetRecordPropertyValue(ChangePointScores, 'IsAnomaly') as bigint) as
IsChangePointAnomaly

INTO output
FROM AnomalyDetectionStep

Contoh dengan kueri yang dipartisi untuk melatih model terpisah per sensor:

WITH AnomalyDetectionStep AS
(
SELECT
sensorid,
System.Timestamp() as time,
CAST(temperature as float) as temp,
AnomalyDetection_ChangePoint(CAST(temperature as float), 80, 1200) 
OVER(PARTITION BY sensorid
LIMIT DURATION(minute, 20)) as ChangePointScores
FROM input
)

SELECT
CAST (sensorid as nvarchar(max)) as sensoridstring,
time,
temp,
CAST(GetRecordPropertyValue(ChangePointScores, 'Score') as float) as
ChangePointScore,
CAST(GetRecordPropertyValue(ChangePointScores, 'IsAnomaly') as bigint) as
IsChangePointAnomaly

INTO output
FROM AnomalyDetectionStep