AnomalyDetection_SpikeAndDip (Azure Stream Analytics)
Bir zaman serisi olayındaki geçici anomalileri algılar.
Temel alınan makine öğrenmesi modeli uyarlamalı çekirdek yoğunluğu tahmin algoritmasını kullanır.
Söz dizimi
AnomalyDetection_SpikeAndDip(
<scalar_expression>,
<confidence>,
<historySize>,
<mode>)
OVER ([PARTITION BY <partition key>]
LIMIT DURATION(<unit>, <length>)
[WHEN boolean_expression])
Bağımsız değişkenler
Scalar_expression
Modelin 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 verilmiyor. 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ı. Genellikle bu, 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.
mod
Değeri sırasıyla yalnızca ani artışları, yalnızca düşüşleri veya hem ani artışları hem de düşüşleri algılamak için değeri "ani artışlar", "dips" veya "spikesanddips" olan bir dize parametresi.
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, geçmiş oluşturmak için gereken süreyle eşdeğerdirSize olay sayısını sabit durumda.
when_clause
Anomali algılaması gerçekleştirmek için model tarafından kabul edilecek olayların 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ı belirten bir BIGINT (0 veya 1).
Puan
Bir olayın ne kadar anormal olduğunu gösteren hesaplanan p-değeri puanı (float). Düşük puanlar, olayın aynı dağılımın parçası olma olasılığının düşük olduğu ve dolayısıyla ne kadar anormal olduğu anlamına gelir.
Örnekler
Aşağıdaki örnek, geçmiş boyutu 120 olay olan 2 dakikalık kayan pencerede saniyede 1 olay için tekdüzen giriş hızı olduğunu varsayar. Son SELECT deyimi puanı ve anomali durumunu %95 güvenilirlik düzeyiyle ayıklar ve çıkarır.
WITH AnomalyDetectionStep AS
(
SELECT
EVENTENQUEUEDUTCTIME as time,
CAST(temperature AS FLOAT) as temp,
AnomalyDetection_SpikeAndDip(CAST(temperature AS FLOAT), 95, 120, 'spikesanddips')
OVER(LIMIT DURATION(second, 120)) AS SpikeAndDipScores
FROM input
)
SELECT
time,
temp,
CAST(GetRecordPropertyValue(SpikeAndDipScores, 'Score') as FLOAT) AS
SpikeAndDipScore,
CAST(GetRecordPropertyValue(SpikeAndDipScores, 'IsAnomaly') AS BIGINT) AS
IsSpikeAndDipAnomaly
INTO output
FROM AnomalyDetectionStep
1 saniyelik atlayan bir pencere kullanılarak tekdüzen hale gelen tekdüzen olmayan giriş akışına sahip örnek:
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_SpikeAndDip(temp, 95, 120, 'spikesanddips')
OVER(LIMIT DURATION(second, 120)) as SpikeAndDipScores
FROM SmootheningStep
)
SELECT
time,
temp,
CAST(GetRecordPropertyValue(SpikeAndDipScores, 'Score') AS FLOAT) As
SpikeAndDipScore,
CAST(GetRecordPropertyValue(SpikeAndDipScores, 'IsAnomaly') AS BIGINT) AS
IsSpikeAndDipAnomaly
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_SpikeAndDip(CAST(temperature AS FLOAT), 95, 120, 'spikesanddips')
OVER(PARTITION BY sensorid LIMIT DURATION(second, 120)) AS SpikeAndDipScores
FROM input
)
SELECT
CAST (sensorid AS NVARCHAR(max)) AS sensoridstring,
time,
temp,
CAST(GetRecordPropertyValue(SpikeAndDipScores, 'Score') as float) AS
SpikeAndDipScore,
CAST(GetRecordPropertyValue(SpikeAndDipScores, 'IsAnomaly') AS BIGINT) AS
IsSpikeAndDipAnomaly
INTO output
FROM AnomalyDetectionStep
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