Aracılığıyla paylaş


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