AnomalyDetection_ChangePoint (Azure Stream Analytics)
Bir zaman serisi olay akışındaki kalıcı anomalileri algılar. Temel alınan makine öğrenmesi modeli, Exchangeability Martingales algoritmasını kullanır.
Söz dizimi
AnomalyDetection_ChangePoint(
<scalar_expression>,
<confidence>,
<historySize>)
OVER ([PARTITION BY <partition key>]
LIMIT DURATION(<unit>, <length>)
[WHEN boolean_expression])
Bağımsız değişkenler
Scalar_expression
Modelin üzerinde anomali algılama gerçekleştirdiği olay sütunu veya hesaplanan alan. Bu parametre için izin verilen değerler, tek bir (skaler) değer döndüren FLOAT veya BIGINT veri türlerini içerir.
* joker karakter ifadesine izin verilmez. Ayrıca , scalar_expression diğer analitik işlevleri veya dış işlevleri içeremez.
Güven
Makine öğrenmesi modelinin duyarlılığını ayarlayan 1,00 ile 100 (dahil) arasında bir yüzde sayısı. Güvenilirlik ne kadar düşükse, algılanan anomali sayısı o kadar yüksektir ve tam tersi de geçerlidir. 70 ile 90 arasında rastgele bir sayıdan başlayın ve geliştirme veya testte gözlemlenen sonuçlara göre bunu ayarlayın.
historySize
Modelin sürekli olarak öğrendiği ve anormallik için bir sonraki olayı puanlamada kullandığı kayan penceredeki olayların sayısı. Bu genellikle modelin sonraki bir anomaliye bayrak eklemesini sağlamak için normal davranış süresini temsil etmelidir. Geçmiş günlükleri kullanarak eğitilmiş bir tahminle başlayın ve geliştirme veya testte gözlemlenen sonuçlara göre ayarlayın.
OVER ([ partition_by_clause ] limit_duration_clause [when_clause])
partition_by_clause
Bir modelin eğitimini olaylardaki belirli bir sütuna göre bölümlendirmek için kullanılır. Model, tüm bölümlere aynı işlev parametresi ayarlarını uygular.
limit_duration_clause SÜRE(birim, uzunluk)
Stream Analytics içindeki kayan pencerenin zaman açısından boyutu. Bu zaman penceresinin önerilen boyutu, historySize olay sayısını sabit durumda oluşturmak için gereken sürenin eşdeğeridir.
when_clause
Anomali algılaması gerçekleştirmek için modele sağlanacak olaylar için boole koşulunu belirtir. when_clause isteğe bağlıdır.
Dönüş Türleri
işlevi, aşağıdaki sütunlardan oluşan iç içe bir kayıt döndürür:
IsAnomaly
Olayın anormal olup olmadığını gösteren BIGINT (0 veya 1).
Puan
Olayın ne kadar anormal olduğunu gösteren hesaplanan Martingale puanı (float). Bu puan anormal değerlerle üstel olarak büyür.
Örnekler
Aşağıdaki sorgu örneğinde, ilk sorgu her 5 dakikada bir olay, ikinci sorgu ise saniyede bir olay varsayılır. Güvenilirlik düzeyi her iki model için de 75 olarak ayarlanır.
AnomalyDetection_ChangePoint(reading, 75, 72)
OVER (LIMIT DURATION(hour, 6))
AnomalyDetection_ChangePoint(temperature, 75, 120)
OVER ([PARTITION BY sensorId] LIMIT DURATION(second, 120))
Geçmiş boyutu 1200 olay olan 20 dakikalık kayan pencerede saniyede 1 olay olan tekdüzen giriş hızı varsayılarak örnek. Son SELECT deyimi puanı ve anomali durumunu %80 güvenilirlik düzeyiyle ayıklar ve çıkarır.
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
1 saniyelik atlayan bir pencere kullanılarak tekdüzen olarak yapılan tekdüzen olmayan giriş akışı örneği:
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
Algılayıcı başına ayrı bir model eğitmek için bölümlenmiş sorgu içeren örnek:
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