Sdílet prostřednictvím


AnomalyDetection_SpikeAndDip (Azure Stream Analytics)

Detekuje dočasné anomálie v události časové řady.

Základní model strojového učení používá algoritmus odhadu adaptivní hustoty jádra.

Syntaxe

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

Argumenty

Scalar_expression

Sloupec události nebo počítané pole, ve kterém model provádí detekci anomálií. Povolené hodnoty pro tento parametr zahrnují datové typy FLOAT nebo BIGINT, které vracejí jednu (skalární) hodnotu.

Zástupný výraz * není povolen. Scalar_expression také nemůže obsahovat jiné analytické funkce nebo externí funkce.

Důvěru

Procentuální číslo od 1,00 do 100 (včetně), které nastavuje citlivost modelu strojového učení. Čím nižší je spolehlivost, tím vyšší je počet zjištěných anomálií a naopak. Začněte od libovolného čísla mezi 70 a 90 a upravte ho na základě výsledků při vývoji nebo testování.

historySize

Počet událostí v posuvném okně, ze kterého se model průběžně učí, a používá k vyhodnocení další události z hlediska anomálií. Obvykle by to mělo představovat časové období normálního chování, aby model mohl označit následnou anomálii. Začněte se poučeným odhadem pomocí historických protokolů a upravte je na základě výsledků zaznamenaných ve vývoji nebo testu.

režim

Řetězcový parametr, jehož hodnota je "špičky", "dips" nebo "spikesanddips", který detekuje pouze špičky, pouze poklesy nebo špičky i poklesy v uvedeném pořadí.

OVER ( [ partition_by_clause ] limit_duration_clause [when_clause])

partition_by_clause

Slouží k rozdělení trénování modelu na základě konkrétního sloupce v událostech. Model použije stejné nastavení parametru funkce ve všech oddílech.

limit_duration_clause DURATION(jednotka, délka)

Velikost posuvného okna v rámci Stream Analytics z hlediska času. Doporučená velikost tohoto časového intervalu je ekvivalentem času, který trvá k vygenerování historieSize počtu událostí v ustáleném stavu.

when_clause

Určuje logickou podmínku pro události, které má model přijmout za účelem detekce anomálií. When_clause je nepovinný.

Návratové typy

Funkce vrátí vnořený záznam složený z následujících sloupců:

IsAnomaly

BIGINT (0 nebo 1) označující, jestli byla událost neobvyklá, nebo ne.

Skóre

Vypočítané skóre p-hodnoty (float) označující, jak neobvyklá je událost. Nižší skóre znamenají nižší pravděpodobnost, že událost je součástí stejného rozdělení, a tím je tím neobvyklejší.

Příklady

Následující příklad předpokládá jednotnou vstupní rychlost 1 události za sekundu v 2minutovém posuvném okně s velikostí historie 120 událostí. Konečný příkaz SELECT extrahuje a vypíše skóre a stav anomálií s úrovní spolehlivosti 95 %.

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

Příklad s nerovnoměrným vstupním datovým proudem, který je jednotný pomocí přeskakujícího okna 1 sekundy:

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

Příklad s děleným dotazem pro trénování samostatného modelu na senzor:

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