Megosztás a következőn keresztül:


Ajánlott eljárások a Többváltozós anomáliadetektor API használatához

Fontos

2023. szeptember 20-tól nem hozhat létre új anomáliadetektor erőforrásokat. A anomáliadetektor szolgáltatás 2026. október 1-jén megszűnik.

Ez a cikk útmutatást nyújt a többváltozós anomáliadetektor (MVAD) API-k használatakor követendő ajánlott eljárásokról. Ebben az oktatóanyagban a következőket fogja elkönyvelni:

  • API-használat: Megtudhatja, hogyan használhatja az MVAD-t hibák nélkül.
  • Adatelemzés: Megtudhatja, hogyan készítheti el a legjobban az adatokat úgy, hogy az MVAD nagyobb pontossággal teljesítsen.
  • Gyakori buktatók: Megtudhatja, hogyan kerülheti el az ügyfelek által gyakran előforduló buktatókat.
  • Gyakori kérdések: Gyakori kérdésekre adott válaszok.

API-használat

Kövesse az ebben a szakaszban található utasításokat az MVAD használata során előforduló hibák elkerüléséhez. Ha továbbra is hibaüzeneteket kap, tekintse meg a hibakódok teljes listáját a magyarázatokért és a végrehajtandó műveletekért.

Bemeneti paraméterek

Kötelező paraméterek

Ez a három paraméter szükséges a betanítási és következtetési API-kérésekhez:

  • source – Az Azure Blob Storage-ban található zip-fájlra mutató hivatkozás közös hozzáférésű jogosultságkódokkal (SAS).
  • startTime - A betanításhoz vagy következtetéshez használt adatok kezdő időpontja. Ha korábbi, mint az adatok tényleges legkorábbi időbélyege, a rendszer a tényleges legkorábbi időbélyeget használja kiindulási pontként.
  • endTime - A betanításhoz vagy következtetéshez használt adatok befejezési ideje, amelynek későbbinek vagy egyenlőnek startTimekell lennie. Ha endTime később van, mint az adatok aktuális legújabb időbélyege, a rendszer a tényleges legutóbbi időbélyeget használja végpontként. Ha endTime egyenlő startTime, az egyetlen adatpont következtetését jelenti, amelyet gyakran használnak streamelési forgatókönyvekben.

Választható paraméterek a betanítási API-hoz

A betanítási API egyéb paraméterei nem kötelezőek:

  • slidingWindow – Hány adatpontot használ a rendszer az anomáliák meghatározásához. 28 és 2880 közötti egész szám. Az alapértelmezett érték 300. Ha slidingWindow modellbetanításra van szükség k , akkor legalább k a forrásfájlból elérhetőnek kell lennie a következtetés során, hogy érvényes eredményeket kapjon.

    Az MVAD az adatpontok egy szegmensével dönti el, hogy a következő adatpont anomália-e. A szegmens hossza .slidingWindow Az érték kiválasztásakor slidingWindow tartsa szem előtt két dolgot:

    1. Az adatok tulajdonságai: az időszakos és a mintavételezési sebesség. Ha az adatok periodikusak, beállíthatja az 1–3 ciklus hosszát.slidingWindow Ha az adatok nagy gyakorisággal (kis részletességgel), például perc- vagy másodszinten jelennek meg, viszonylag magasabb értéket slidingWindowállíthat be.
    2. A betanítási/következtetési idő és a lehetséges teljesítményhatás közötti kompromisszum. A nagyobbak slidingWindow hosszabb betanítási/következtetési időt okozhatnak. Nincs garancia arra, hogy a nagyobb slidingWindows-ek pontossági nyereséghez vezetnek. A kicsik slidingWindow miatt a modell nehezen konvergálhat az optimális megoldáshoz. Például nehéz észlelni az anomáliákat, ha slidingWindow csak két ponttal rendelkezik.
  • alignMode - Több változó (idősor) igazítása időbélyegekhez. Ennek a paraméternek két lehetősége van, Inner és Outeraz alapértelmezett érték.Outer

    Ez a paraméter kritikus fontosságú a változók időbélyeg-sorozatai közötti eltérés esetén. A modellnek a további feldolgozás előtt ugyanahhoz az időbélyeg-sorozathoz kell igazítania a változókat.

    Inner azt jelenti, hogy a modell csak olyan időbélyegeken jelenti az észlelési eredményeket, amelyeken minden változónak van értéke, azaz az összes változó metszéspontja. Outer azt jelenti, hogy a modell észlelési eredményeket fog jelenteni olyan időbélyegeken, amelyeken bármely változónak értéke van, azaz az összes változó egyesítését.

    Íme egy példa a különböző alignModel értékek magyarázatára.

    1. változó

    timestamp Érték
    2020-11-01 1.
    2020-11-02 2
    2020-11-04 4
    2020-11-05 5

    2. változó

    timestamp Érték
    2020-11-01 1.
    2020-11-02 2
    2020-11-03 3
    2020-11-04 4

    Inner két változó összekapcsolása

    timestamp 1. változó 2. változó
    2020-11-01 1. 1.
    2020-11-02 2 2
    2020-11-04 4 4

    Outer két változó összekapcsolása

    timestamp 1. változó 2. változó
    2020-11-01 1. 1.
    2020-11-02 2 2
    2020-11-03 nan 3
    2020-11-04 4 4
    2020-11-05 5 nan
  • fillNAMethod - Az egyesített tábla kitöltése nan . Előfordulhat, hogy az egyesített táblában hiányoznak értékek, és ezeket megfelelően kell kezelni. Számos módszert biztosítunk a kitöltésükhöz. A beállítások a következőkLinear: , PreviousSubsequent, Zero, és Fixed az alapértelmezett érték.Linear

    Beállítás Method
    Linear Értékek kitöltése nan lineáris interpolációval
    Previous Az utolsó érvényes érték propagálása a hézagok kitöltéséhez. Példa: [1, 2, nan, 3, nan, 4] ->[1, 2, 2, 3, 3, 4]
    Subsequent A rések kitöltéséhez használja a következő érvényes értéket. Példa: [1, 2, nan, 3, nan, 4] ->[1, 2, 3, 3, 4, 4]
    Zero Értékek kitöltése nan 0-val.
    Fixed Adja meg nan az értékeket egy megadott érvényes értékkel, amelyet meg kell adni a következőben paddingValue:
  • paddingValue - A kitöltési érték akkor használatos, nan amikor fillNAMethod van, Fixed és ebben az esetben meg kell adni. Más esetekben ez nem kötelező.

  • displayName - Ez egy opcionális paraméter, amely a modellek azonosítására szolgál. Használhatja például a modell és a bemeneti adatok paramétereinek, adatforrásainak és egyéb metaadatainak megjelölésére. Az alapértelmezett érték egy üres sztring.

Bemeneti adatséma

Az MVAD metrikák egy csoportjából észleli az anomáliákat, és minden metrikát változónak vagy idősornak hívunk.

  • Az elfogadott séma ellenőrzéséhez töltse le a mintaadatfájlt a Microsofttól: https://aka.ms/AnomalyDetector/MVADSampleData

  • Minden változónak két és csak két mezővel kell rendelkeznie, timestamp és valuevesszővel tagolt értékeket tartalmazó fájlban kell tárolnia.

  • A CSV-fájl oszlopneveinek pontosnak timestamp és kis- és valuenagybetűknek kell lenniük.

  • Az timestamp értékeknek meg kell felelniük az ISO 8601 szabványnak; lehetnek value egész számok vagy decimálisok tetszőleges számú tizedesjegygel. Jó példa egy CSV-fájl tartalmára:

    timestamp Érték
    2019-04-01T00:00:00Z 5
    2019-04-01T00:01:00Z 3,6
    2019-04-01T00:02:00Z 4
    ... ...

    Megjegyzés:

    Ha az időbélyegek órákkal, percekkel és/vagy másodpercekkel rendelkeznek, győződjön meg arról, hogy megfelelően fel vannak kerekítve az API-k meghívása előtt.

    Ha például az adatfrekvencia 30 másodpercenként egy adatpont, de olyan időbélyegeket lát, mint a "12:00:01" és a "12:00:28", erős jelzés, hogy az időbélyegeket elő kell feldolgoznia olyan új értékekre, mint a "12:00:00" és a "12:00:30".

    További részletekért tekintse meg az ajánlott eljárások dokumentumának "Időbélyeg kerekítése" című szakaszát .

  • A csv-fájl neve változónévként lesz használva, és egyedinek kell lennie. Például: "temperature.csv" és "humidity.csv".

  • A betanítás változóinak és a következtetés változóinak konzisztensnek kell lenniük. Ha például a , , , series_4és series_5 a betanítást használjaseries_1, pontosan ugyanazokat a változókat kell megadnia series_3a következtetéshez. series_2

  • A CSV-fájlokat tömöríteni kell egy zip-fájlba, és fel kell tölteni egy Azure Blob-tárolóba. A zip-fájlnak bármilyen neve lehet.

Mappastruktúra

Az adatok előkészítésében gyakori hiba a zip-fájlban lévő további mappák. Tegyük fel például, hogy a zip-fájl neve .series.zip Ezután a fájlok új mappába ./seriesvaló kibontása után a CSV-fájlok elérési útja helyes./series/series_1.csv, ./series/foo/bar/series_1.csvés helytelen elérési út lehet.

A megfelelő példa a könyvtárfára a zip-fájl kibontása után a Windowsban

.
└── series
    ├── series_1.csv
    ├── series_2.csv
    ├── series_3.csv
    ├── series_4.csv
    └── series_5.csv

Helytelen példa a könyvtárfára a zip-fájl Kibontása után a Windowsban

.
└── series
    └── series
        ├── series_1.csv
        ├── series_2.csv
        ├── series_3.csv
        ├── series_4.csv
        └── series_5.csv

Adatfeldolgozás

Mostantól hiba nélkül futtathatja a kódot MVAD API-kkal. Mit tehetünk a modell pontosságának javítása érdekében?

Adatminőség

  • Mivel a modell az előzményadatokból tanulja meg a normál mintákat, a betanítási adatoknak a rendszer általános normál állapotát kell képviselnie. Ha a betanítási adatok tele vannak rendellenességekkel, a modell nehezen tanulja meg az ilyen típusú mintákat. A rendellenes ráta empirikus küszöbértéke 1% és alacsonyabb a jó pontosság érdekében.
  • A betanítási adatok hiányzó értékarányának általában 20% alatt kell lennie. A túl sok hiányzó adat automatikusan kitöltött értékekkel (általában lineáris vagy állandó értékekkel) végződhet, amelyeket normál mintákként tanulnak meg. Ez azt eredményezheti, hogy a rendszer valós (nem hiányzó) adatpontokat észlel anomáliákként.

Adatmennyiség

  • Az MVAD mögöttes modellje több millió paraméterrel rendelkezik. A paraméterek optimális készletének megismeréséhez minimális számú adatpontra van szükség. Az empirikus szabály az, hogy változónként legalább 5000 adatpontot (időbélyeget) kell megadnia a modell megfelelő pontosságának betanítása érdekében. Általában minél több a betanítási adat, annál jobb a pontosság. Azokban az esetekben azonban, amikor nem tud ennyi adatot felhalmozni, továbbra is javasoljuk, hogy kísérletezzen kevesebb adattal, és ellenőrizze, hogy a sérült pontosság továbbra is elfogadható-e.

  • Minden alkalommal, amikor meghívja a következtetési API-t, győződjön meg arról, hogy a forrásadatfájl elegendő adatpontot tartalmaz. Ez általában slidingWindow + azon adatpontok száma, amelyek valóban következtetési eredményeket igényelnek. Streamelési esetben például, amikor minden alkalommal, amikor egy új időbélyegre szeretne következtetni, az adatfájl csak a kezdő slidingWindow és a ONE adatpontot tartalmazhatja, akkor továbbléphet, és létrehozhat egy másik zip-fájlt ugyanazzal az adatpontszámmal (slidingWindow+ 1), de a ONE lépést a "jobb" oldalra helyezheti, és elküldheti egy másik következtetési feladathoz.

    A vezető tolóablakon túli vagy "korábbi" elemek egyáltalán nem befolyásolják a következtetés eredményét, és csak a teljesítmény visszalépését okozhatják. Az alábbiakban szereplő adatok hibát okozhatnak NotEnoughInput .

Időbélyeg kerekítése

A változók (idősorok) egy csoportjában minden változó összegyűjthető egy független forrásból. A különböző változók időbélyegei inkonzisztensek lehetnek egymással és az ismert frekvenciákkal. Íme egy egyszerű példa.

1. változó

timestamp Érték
12:00:01 1,0
12:00:35 1,5
12:01:02 0,9
12:01:31 2,2
12:02:08 1.3

2. változó

timestamp Érték
12:00:03 2,2
12:00:37 2.6
12:01:09 1.4
12:01:34 1,7
12:02:04 2,0

Két változót gyűjtöttünk össze két érzékelőből, amelyek 30 másodpercenként küldenek egy adatpontot. Az érzékelők azonban nem szigorú egyenletes gyakorisággal küldenek adatpontokat, hanem néha korábban és néha később. Mivel az MVAD figyelembe veszi a különböző változók közötti korrelációkat, az időbélyegeket megfelelően kell igazítani ahhoz, hogy a metrikák megfelelően tükrözzék a rendszer állapotát. A fenti példában az 1. és a 2. változó időbélyegeit megfelelően "le kell kerekíteni" a gyakoriságukra az igazítás előtt.

Lássuk, mi történik, ha nincsenek előre feldolgozva. Ha (ami két halmaz egyesítése) értékre Outer van állítvaalignMode, az egyesített tábla a következő:

timestamp 1. változó 2. változó
12:00:01 1,0 nan
12:00:03 nan 2,2
12:00:35 1,5 nan
12:00:37 nan 2.6
12:01:02 0,9 nan
12:01:09 nan 1.4
12:01:31 2,2 nan
12:01:34 nan 1,7
12:02:04 nan 2,0
12:02:08 1.3 nan

nan hiányzó értékeket jelez. Nyilvánvaló, hogy az egyesített tábla nem az, amire számított. Az 1. változó és a 2. változó közötti kapcsolat, és az MVAD-modell nem tud adatokat kinyerni a köztük lévő korrelációkról. Ha ezt Innerállítjuk bealignMode, az egyesített tábla üres, mivel az 1. és a 2. változóban nincs közös időbélyeg.

Ezért az 1. és a 2. változó időbélyegét előre fel kell dolgozni (a legközelebbi 30 másodperces időbélyegre kell kerekíteni), és az új idősorok a következők:

1. változó

timestamp Érték
12:00:00 1,0
12:00:30 1,5
12:01:00 0,9
12:01:30 2,2
12:02:00 1.3

2. változó

timestamp Érték
12:00:00 2,2
12:00:30 2.6
12:01:00 1.4
12:01:30 1,7
12:02:00 2,0

Most az egyesített táblázat ésszerűbb.

timestamp 1. változó 2. változó
12:00:00 1,0 2,2
12:00:30 1,5 2.6
12:01:00 0,9 1.4
12:01:30 2,2 1,7
12:02:00 1.3 2,0

A különböző változók értékei szoros időbélyegek esetén jól vannak igazítva, és az MVAD-modell képes korrelációs információkat kinyerni.

Korlátozások

A betanítási és következtetési API-kban is vannak korlátozások, a hibák elkerülése érdekében tisztában kell lennie ezekkel a korlátozásokkal.

Általános korlátozások

  • Tolóablak: 28-2880 időbélyeg, alapértelmezett értéke 300. Időszakos adatok esetén állítsa be a 2–4 ciklus hosszát tolóablakként.
  • Változószámok: Betanításhoz és kötegelt következtetéshez legfeljebb 301 változó.

Betanítási korlátozások

  • Időbélyegek: Legfeljebb 10000000. A túl kevés időbélyeg csökkentheti a modell minőségét. Javasoljuk, hogy több mint 5000 időbélyeget.
  • Részletesség: A minimális részletesség a per_second.

Kötegelt következtetés korlátozásai

  • Időbélyegek: Legfeljebb 20000, legalább 1 tolóablak hossza.

Streamelési következtetés korlátozásai

  • Időbélyegek: Legfeljebb 2880, legalább 1 tolóablakhossz.
  • Időbélyegek észlelése: 1 és 10 között.

Modellminőség

Hogyan kezelhetők a hamis pozitív és hamis negatív valós helyzetekben?

Olyan súlyosságot adtunk meg, amely az anomáliák jelentőségét jelzi. A hamis pozitív értékek kiszűrhetők a súlyossági küszöbérték beállításával. Előfordulhat, hogy túl sok hamis pozitív jelenik meg, ha a következtetési adatok mintázatváltást mutatnak. Ilyen esetekben előfordulhat, hogy egy modellt újra kell képezni az új adatokon. Ha a betanítási adatok túl sok rendellenességet tartalmaznak, az észlelési eredmények hamis negatívumokat is okozhatnak. Ennek az az oka, hogy a modell a betanítási adatokból tanul mintákat, és az anomáliák torzíthatják a modellt. Így a megfelelő adattisztítás segíthet csökkenteni a hamis negatívumokat.

Hogyan becsülhető meg, hogy melyik modellt érdemes legjobban használni a betanítási veszteség és az érvényesítési veszteség alapján?

Általánosságban elmondható, hogy nehéz eldönteni, hogy melyik modell a legjobb címkézett adatkészlet nélkül. A betanítási és érvényesítési veszteségeket azonban felhasználhatjuk egy durva becsléshez, és elvethetjük ezeket a rossz modelleket. Először is meg kell vizsgálnunk, hogy a betanítási veszteségek összeadódnak-e. Az eltérő veszteségek gyakran a modell gyenge minőségét jelzik. Másodszor, a veszteségértékek segíthetnek megállapítani, hogy előfordul-e alulillesztés vagy túlillesztés. Előfordulhat, hogy az alulillesztés vagy a túlillesztés nem megfelelő teljesítményt nyújt. Harmadszor, bár a veszteségfüggvény definíciója nem tükrözi közvetlenül az észlelési teljesítményt, a veszteségértékek segédeszközként használhatók a modell minőségének becsléséhez. Az alacsony veszteségi érték a jó modell szükséges feltétele, ezért elvethetjük a magas veszteségértékkel rendelkező modelleket.

Gyakori buktatók

A hibakódtáblán kívül az önéhez hasonló ügyfelektől tanultunk néhány gyakori buktatót az MVAD API-k használata során. Ez a táblázat segít elkerülni ezeket a problémákat.

Buktató Következménye Magyarázat és megoldás
A betanítási adatok és/vagy következtetési adatok időbélyegei nem kerekítve lettek felfelé, hogy igazodjanak az egyes változók megfelelő adatfrekvencia-gyakoriságához. A következtetési eredmények időbélyegei nem a vártak: túl kevés időbélyeg vagy túl sok időbélyeg. Tekintse meg az időbélyeg kerekítését.
Túl sok rendellenes adatpont a betanítási adatokban A modell pontossága negatívan hat, mert a rendellenes adatpontokat normál mintaként kezeli a betanítás során. Empirikusan, tartsa a rendellenes ráta 1% alatt vagy alatt segít.
Túl kevés betanítási adat A modell pontossága sérül. Az MVAD-modellek betanítása empirikusan változónként legalább 15 000 adatpontot (időbélyeget) igényel a helyes pontosság érdekében.
Az összes adatpont anomáliákkal való isAnomaly=true felvétele Túl sok hamis pozitív A isAnomalyseverity nem súlyos anomáliák kiszűrésére és ( scoreopcionálisan) csoportosítással ellenőrizze az anomáliák időtartamát a véletlenszerű zajok kiszűrése érdekében. A kettő és scorea kettő közötti severity különbséget az alábbi GYAKORI KÉRDÉSEK szakaszban találja.
Az almappák betanítás vagy következtetés céljából az adatfájlba vannak tömörítve. Az almappákban lévő CSV-adatfájlok figyelmen kívül lesznek hagyva a betanítás és/vagy következtetés során. A zip-fájlban nem engedélyezett almappák használata. Részletekért tekintse meg a mappastruktúrát .
Túl sok adat a következtetési adatfájlban: például az összes előzményadat tömörítése a következtetési adat zip-fájljában Előfordulhat, hogy nem jelenik meg hiba, de a zip-fájl Azure Blobba való feltöltésekor és a következtetés futtatásakor romlik a teljesítmény. Részletekért tekintse meg az Adatmennyiséget .
Olyan anomáliadetektor erőforrások létrehozása az Azure-régiókban, amelyek még nem támogatják az MVAD-t, és MVAD API-k meghívása Az MVAD API-k meghívása közben "nem található erőforrás" hibaüzenet jelenik meg. Az előzetes verzióban az MVAD csak korlátozott régiókban érhető el. Az MVAD-régiók bevezetésének naprakészen tartásához jelölje be a anomáliadetektor újdonságait. A GitHub-problémát is elküldheti, vagy felveheti velünk AnomalyDetector@microsoft.com a kapcsolatot, hogy konkrét régiókat kérjen.

GYIK

Hogyan működik az MVAD tolóablak?

Használjunk két példát az MVAD tolóablakának működésére. Tegyük fel, hogy beállította slidingWindow az = 1440 értéket, és a bemeneti adatok egyperces részletességgel vannak megadva.

  • Streamelési forgatókönyv: Előre szeretné jelezni, hogy a ONE adatpont a "2021-01-02T00:00:00Z" időpontban rendellenes-e. Az Ön startTime és endTime ugyanaz az érték lesz ("2021-01-02T00:00:00Z"). A következtetési adatforrásnak azonban legalább 1440 + 1 időbélyeget kell tartalmaznia. Mivel az MVAD a céladatpont (2021-01-02T00:00:00Z) előtt veszi át a vezető adatokat annak eldöntéséhez, hogy a cél anomália-e. A szükséges vezető adatok hossza ebben az slidingWindow esetben 1440. 1440 = 60 * 24, így a bemeneti adatoknak legkésőbb "2021-01-01T00:00:00Z" időponttól kell kezdődniük.

  • Batch-forgatókönyv: Több céladatpontot kell előrejeleznie. Az ön endTime nagyobb lesz, mint a .startTime Az ilyen forgatókönyvek következtetése "mozgó ablakban" történik. Az MVAD például a (befogadó) felé irányuló 2021-01-01T23:59:00Z adatokat 2021-01-01T00:00:00Z használja annak meghatározására, hogy az adatok 2021-01-02T00:00:00Z rendellenesek-e. Ezután továbbhalad, és adatokat 2021-01-01T00:01:00Z használ a 2021-01-02T00:00:00Z (befogadó) felé annak meghatározásához, hogy az adatok 2021-01-02T00:01:00Z rendellenesek-e. Ugyanúgy halad tovább (1440 adatpontot vesz figyelembe), amíg az utolsó által megadott endTime időbélyeget (vagy a tényleges legújabb időbélyeget) meg nem adja. Ezért a következtetési adatforrásnak tartalmaznia kell a kiinduló startTimeslidingWindow - adatokat, és ideális esetben összesen + ( - startTimeendTime) méretet slidingWindow kell tartalmaznia.

Mi a különbség az és scorea közöttseverity?

Általában azt javasoljuk, hogy szűrőként használva severity kiszűrje azokat az "anomáliákat", amelyek nem annyira fontosak a vállalkozása számára. A forgatókönyvtől és az adatmintától függően a kevésbé fontos anomáliák gyakran viszonylag alacsonyabb severity értékekkel vagy önálló (nem folytonos) magas severity értékekkel rendelkeznek, például véletlenszerű kiugró értékekkel.

Azokban az esetekben, amikor kifinomultabb szabályokra van szüksége, mint a küszöbértékek severity és a folyamatos magas severity értékek időtartama, érdemes score lehet hatékonyabb szűrőket létrehoznia. Az MVAD anomáliák meghatározásához való használatának score megértése segíthet:

Figyelembe vesszük, hogy egy adatpont globális és helyi szempontból is rendellenes-e. Ha score egy időbélyeg magasabb egy bizonyos küszöbértéknél, akkor az időbélyeg anomáliaként van megjelölve. Ha score alacsonyabb, mint a küszöbérték, de egy szegmensben viszonylag magasabb, akkor anomáliaként is meg van jelölve.

Következő lépések