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őnekstartTime
kell lennie. HaendTime
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. HaendTime
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. HaslidingWindow
modellbetanításra van szükségk
, akkor legalábbk
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ásakorslidingWindow
tartsa szem előtt két dolgot:- 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éketslidingWindow
állíthat be. - 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 nagyobbslidingWindow
s-ek pontossági nyereséghez vezetnek. A kicsikslidingWindow
miatt a modell nehezen konvergálhat az optimális megoldáshoz. Például nehéz észlelni az anomáliákat, haslidingWindow
csak két ponttal rendelkezik.
- 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.
alignMode
- Több változó (idősor) igazítása időbélyegekhez. Ennek a paraméternek két lehetősége van,Inner
ésOuter
az 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ó
időbélyeg Érték 2020-11-01 0 2020-11-02 2 2020-11-04 4 2020-11-05 5 2. változó
időbélyeg Érték 2020-11-01 0 2020-11-02 2 2020-11-03 3 2020-11-04 4 Inner
két változó összekapcsolásaidőbélyeg 1. változó 2. változó 2020-11-01 0 0 2020-11-02 2 2 2020-11-04 4 4 Outer
két változó összekapcsolásaidőbélyeg 1. változó 2. változó 2020-11-01 0 0 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ésenan
. 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
: ,Previous
Subsequent
,Zero
, ésFixed
az alapértelmezett érték.Linear
Lehetőség Metódus Linear
Értékek kitöltése nan
lineáris interpolációvalPrevious
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őbenpaddingValue
:paddingValue
- A kitöltési érték akkor használatos,nan
amikorfillNAMethod
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
ésvalue
vesszővel tagolt értékeket tartalmazó fájlban kell tárolnia.A CSV-fájl oszlopneveinek pontosnak
timestamp
és kis- ésvalue
nagybetűknek kell lenniük.Az
timestamp
értékeknek meg kell felelniük az ISO 8601 szabványnak; lehetnekvalue
egész számok vagy decimálisok tetszőleges számú tizedesjegygel. Jó példa egy CSV-fájl tartalmára:időbélyeg Érték 2019-04-01T00:00:00Z 5 2019-04-01T00:01:00Z 3,6 2019-04-01T00:02:00Z 4 ... ... Feljegyzé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
ésseries_5
a betanítást használjaseries_1
, pontosan ugyanazokat a változókat kell megadniaseries_3
a 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 ./series
való 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ó
időbélyeg | É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ó
időbélyeg | É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ő:
időbélyeg | 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ó
időbélyeg | É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ó
időbélyeg | É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.
időbélyeg | 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.
Csapda | Következmény | 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 isAnomaly severity nem súlyos anomáliák kiszűrésére és ( score opcioná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 score a 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
ésendTime
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 azslidingWindow
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
adatokat2021-01-01T00:00:00Z
használja annak meghatározására, hogy az adatok2021-01-02T00:00:00Z
rendellenesek-e. Ezután továbbhalad, és adatokat2021-01-01T00:01:00Z
használ a2021-01-02T00:00:00Z
(befogadó) felé annak meghatározásához, hogy az adatok2021-01-02T00:01:00Z
rendellenesek-e. Ugyanúgy halad tovább (1440 adatpontot vesz figyelembe), amíg az utolsó által megadottendTime
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óstartTime
slidingWindow
- adatokat, és ideális esetben összesen + ( -startTime
endTime
) méretetslidingWindow
kell tartalmaznia.
Mi a különbség az és score
a 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.