Adateltolódás észlelése (előzetes verzió) adathalmazokon

A KÖVETKEZŐKRE VONATKOZIK:Python SDK azureml v1

Megtudhatja, hogyan figyelheti az adateltolódást, és hogyan állíthat be riasztásokat magas sodródás esetén.

Az Azure Machine Learning-adathalmaz-monitorokkal (előzetes verzió) a következőket teheti:

  • Elemezze az adatok sodródását , hogy megértse, hogyan változnak az idő múlásával.
  • Modelladatok monitorozása az adathalmazok betanítása és kiszolgálása között. Először gyűjtse össze a modelladatokat az üzembe helyezett modellekből.
  • Új adatok monitorozása az alapkonfiguráció és a céladatkészlet közötti különbségek érdekében.
  • Profilfunkciók az adatokban a statisztikai tulajdonságok időbeli változásának nyomon követéséhez.
  • Állítson be riasztásokat az adateltolódásról a lehetséges problémákra vonatkozó korai figyelmeztetésekhez.
  • Hozzon létre egy új adathalmaz-verziót , amikor megállapítja, hogy az adatok túl sokat sodródtak.

A monitor létrehozásához egy Azure Machine Learning-adatkészletet használunk. Az adatkészletnek tartalmaznia kell egy időbélyegoszlopot.

Az adateltolódási metrikákat a Python SDK-val vagy Azure Machine Learning stúdió tekintheti meg. Más metrikák és elemzések az Azure Machine Learning-munkaterülethez társított Azure-alkalmazás Insights-erőforráson keresztül érhetők el.

Fontos

Az adathalmazok adateltolódás-észlelése jelenleg nyilvános előzetes verzióban érhető el. Az előzetes verzió szolgáltatásszint-szerződés nélkül érhető el, éles számítási feladatokhoz nem ajánlott. Előfordulhat, hogy néhány funkció nem támogatott, vagy korlátozott képességekkel rendelkezik. További információ: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.

Előfeltételek

Az adathalmaz-figyelők létrehozásához és használatához a következőkre van szükség:

Mi az az adateltolódás?

A modell pontossága idővel csökken, nagyrészt az adateltolódás miatt. A gépi tanulási modellek esetében az adateltérés a modell bemeneti adatainak változása, amely a modell teljesítménycsökkenéséhez vezet. Az adateltolódás monitorozása segít észlelni ezeket a modellteljesítmény-problémákat.

Az adateltolódás okai a következők:

  • A felsőbb rétegbeli folyamat változásai, például egy lecserélt érzékelő, amely hüvelykről centiméterre módosítja a mértékegységeket.
  • Adatminőségi problémák, például egy meghibásodott érzékelő mindig 0-t olvas.
  • Az adatok természetes sodródása, például az évszakok középhőmérsékletének változása.
  • Változás a funkciók közötti viszonyban vagy a kovariansváltás.

Az Azure Machine Learning leegyszerűsíti az eltérésészlelést azáltal, hogy egyetlen metrikát dolgoz ki, amely absztrakciót ad az összehasonlítandó adathalmazok összetettségéről. Ezek az adathalmazok több száz funkciót és több tízezer sort tartalmazhatnak. Az eltolódás észlelése után lehatolhatja, hogy mely funkciók okozzák a sodródást. Ezután megvizsgálja a funkciószintű metrikákat a hibakereséshez és az eltérés kiváltó okának elkülönítéséhez.

Ez a felülről lefelé alkalmazott megközelítés megkönnyíti az adatok monitorozását a hagyományos szabályokon alapuló technikák helyett. A szabályokon alapuló technikák, például az engedélyezett adattartományok vagy az engedélyezett egyedi értékek időigényesek és hibalehetőségek lehetnek.

Az Azure Machine Learningben adathalmaz-monitorokkal észlelheti és riasztást jeleníthet meg az adateltolódások esetén.

Adathalmaz-figyelők

Adathalmaz-monitorral a következőt teheti:

  • Észleli és riasztást küld az adathalmaz új adatainak adateltolódásáról.
  • Az előzményadatok elemzése a sodródáshoz.
  • Új adatok profilkészítése az idő múlásával.

Az adateltolódási algoritmus általános mértéke az adatok változásának, és annak jelzése, hogy mely funkciók felelősek a további vizsgálatért. Az adathalmaz-figyelők számos más metrikát hoznak létre az timeseries adathalmaz új adatainak profilozásával.

Egyéni riasztások állíthatók be a figyelő által létrehozott összes metrikán a Azure-alkalmazás Insights használatával. Az adathalmaz-figyelők segítségével gyorsan elkaphatók az adatproblémák, és csökkentheti a hibakeresési időt a lehetséges okok azonosításával.

Elméletileg három elsődleges forgatókönyv áll rendelkezésre az adathalmaz-monitorok Azure Machine Learningben való beállításához.

Forgatókönyv Leírás
Modell adatmegjelenítési adatainak monitorozása a betanítási adatoktól való eltérés érdekében Az ebből a forgatókönyvből származó eredmények úgy értelmezhetők, mint a modell pontosságának proxyjának figyelése, mivel a modell pontossága csökken, amikor a kiszolgálóadatok eltolódnak a betanítási adatoktól.
Az idősor adathalmazának figyelése az előző időszaktól való eltéréshez. Ez a forgatókönyv általánosabb, és a modellépítés felső vagy alsó rétegében lévő adathalmazok monitorozására használható. A céladatkészletnek időbélyegoszlopot kell tartalmaznia. Az alapadatkészlet bármilyen táblázatos adatkészlet lehet, amely a céladatkészlettel közös funkciókkal rendelkezik.
Végezzen elemzést a múltbeli adatokon. Ez a forgatókönyv az előzményadatok megértésére és az adathalmaz-figyelők beállításaiban hozott döntések tájékoztatására használható.

Az adathalmazok monitorozása az alábbi Azure-szolgáltatásoktól függ.

Azure-szolgáltatás Description
Adathalmaz A Drift Machine Learning-adatkészleteket használ a betanítási adatok lekéréséhez és a modell betanítási adatainak összehasonlításához. Az adatprofil létrehozása a jelentett metrikák egy részének létrehozására szolgál, például min, max, különálló értékek, eltérő értékek száma.
Azure Machine Learning-folyamat és -számítás A sodródás-számítási feladat egy Azure Machine Learning-folyamatban található. A feladat igény szerint vagy ütemezés szerint aktiválódik, hogy egy sodródásfigyelő létrehozási időpontjában konfigurált számításon fusson.
Alkalmazáselemzések A Drift metrikákat bocsát ki a gépi tanulási munkaterülethez tartozó Application Insightsba.
Azure Blob Storage A Drift json formátumban bocsát ki metrikákat az Azure Blob Storage-ba.

Alapkonfiguráció és céladatkészletek

Monitorozza az Azure Machine Learning-adathalmazokat az adateltolódás érdekében. Adathalmaz-figyelő létrehozásakor a következőre kell hivatkozni:

  • Alapkonfigurációs adatkészlet – általában egy modell betanítási adatkészlete.
  • A céladatkészletet – általában modellbemeneti adatokat – idővel összehasonlítjuk az alapadatkészlettel. Ez az összehasonlítás azt jelenti, hogy a céladatkészletnek meg kell adnia egy időbélyegoszlopot.

A figyelő összehasonlítja az alapkonfigurációt és a céladatkészleteket.

Céladatkészlet létrehozása

A céladatkészletnek meg kell adnia a timeseries tulajdonságot. Ehhez meg kell adnia az időbélyeg oszlopot az adatok egyik oszlopából, vagy egy virtuális oszlopból, amely a fájlok elérési útjának mintájából származik. Hozza létre az adathalmazt időbélyeggel a Python SDK-val vagy Azure Machine Learning stúdió. Meg kell adni egy "időbélyeget" képviselő oszlopot az adathalmaz tulajdonságának hozzáadásához timeseries . Ha az adatok időadatokkal (például "{ééé/MM/dd}") particionálva lettek a mappastruktúrában, hozzon létre egy virtuális oszlopot az elérésiút-minta beállításával, és állítsa be "partícióidőbélyegként" az idősor API-funkcióinak engedélyezéséhez.

A KÖVETKEZŐKRE VONATKOZIK:Python SDK azureml v1

Az Dataset osztálymetódus with_timestamp_columns() határozza meg az adathalmaz időbélyeg-oszlopát.

from azureml.core import Workspace, Dataset, Datastore

# get workspace object
ws = Workspace.from_config()

# get datastore object
dstore = Datastore.get(ws, 'your datastore name')

# specify datastore paths
dstore_paths = [(dstore, 'weather/*/*/*/*/data.parquet')]

# specify partition format
partition_format = 'weather/{state}/{date:yyyy/MM/dd}/data.parquet'

# create the Tabular dataset with 'state' and 'date' as virtual columns
dset = Dataset.Tabular.from_parquet_files(path=dstore_paths, partition_format=partition_format)

# assign the timestamp attribute to a real or virtual column in the dataset
dset = dset.with_timestamp_columns('date')

# register the dataset as the target dataset
dset = dset.register(ws, 'target')

Tipp

Az adathalmazok jellemzőjének használatára timeseries vonatkozó teljes példát a példajegyzetfüzetben vagy az adathalmazok SDK-dokumentációjában találja.

Adathalmaz-figyelő létrehozása

Hozzon létre egy adathalmaz-figyelőt az új adathalmaz adateltolódásának észleléséhez és riasztásához. Használja a Python SDK-t vagy a Azure Machine Learning stúdió.

Ahogy azt később ismertetjük, az adathalmaz-figyelő meghatározott gyakorisággal (napi, heti, havi) fut. Elemzi a céladatkészletben az utolsó futtatás óta elérhető új adatokat. Bizonyos esetekben előfordulhat, hogy a legutóbbi adatok ilyen elemzése nem elegendő:

  • A felsőbb rétegbeli forrásból származó új adatok egy hibás adatfolyam miatt késtek, és ezek az új adatok nem érhetők el az adathalmaz-figyelő futtatásakor.
  • Az idősor-adathalmazok csak előzményadatokkal rendelkeztek, és az adathalmazban az időbeli eltérési mintákat szeretné elemezni. Például: hasonlítsa össze a webhely felé irányuló forgalmat a téli és a nyári szezonban, hogy azonosítsa a szezonális mintákat.
  • Most ismerkedik az Adathalmaz-figyelők szolgáltatásokkal. Szeretné kiértékelni, hogyan működik a funkció a meglévő adatokkal, mielőtt beállítja azokat a jövőbeli napok figyelésére. Ilyen esetekben igény szerinti futtatás küldhető, amely egy adott céladatkészlet dátumtartományát tartalmazza az alapadatkészlettel való összehasonlításhoz.

A backfill függvény egy backfill feladatot futtat egy megadott kezdő és záró dátumtartományhoz. A visszatöltési feladat kitölti az adathalmaz várt hiányzó adatpontjait az adatok pontosságának és teljességének biztosítása érdekében.

A KÖVETKEZŐKRE VONATKOZIK:Python SDK azureml v1

A részletekért tekintse meg a Python SDK adatelsodrási referenciadokumentációját .

Az alábbi példa bemutatja, hogyan hozhat létre adathalmaz-monitort a Python SDK használatával

from azureml.core import Workspace, Dataset
from azureml.datadrift import DataDriftDetector
from datetime import datetime

# get the workspace object
ws = Workspace.from_config()

# get the target dataset
target = Dataset.get_by_name(ws, 'target')

# set the baseline dataset
baseline = target.time_before(datetime(2019, 2, 1))

# set up feature list
features = ['latitude', 'longitude', 'elevation', 'windAngle', 'windSpeed', 'temperature', 'snowDepth', 'stationName', 'countryOrRegion']

# set up data drift detector
monitor = DataDriftDetector.create_from_datasets(ws, 'drift-monitor', baseline, target,
                                                      compute_target='cpu-cluster',
                                                      frequency='Week',
                                                      feature_list=None,
                                                      drift_threshold=.6,
                                                      latency=24)

# get data drift detector by name
monitor = DataDriftDetector.get_by_name(ws, 'drift-monitor')

# update data drift detector
monitor = monitor.update(feature_list=features)

# run a backfill for January through May
backfill1 = monitor.backfill(datetime(2019, 1, 1), datetime(2019, 5, 1))

# run a backfill for May through today
backfill1 = monitor.backfill(datetime(2019, 5, 1), datetime.today())

# disable the pipeline schedule for the data drift detector
monitor = monitor.disable_schedule()

# enable the pipeline schedule for the data drift detector
monitor = monitor.enable_schedule()

Tipp

Az adathalmaz és az adatelsodródás-érzékelő beállításának timeseries teljes példáját lásd a példajegyzetfüzetben.

Adateltolódási eredmények ismertetése

Ez a szakasz egy adathalmaz monitorozásának eredményeit mutatja be, amely az Azure Studio Adatkészletek / adathalmaz-monitorozási oldalán található. Ezen a lapon frissítheti a beállításokat, és elemezheti a meglévő adatokat egy adott időszakra vonatkozóan.

Kezdje a legfelső szintű elemzésekkel az adateltolódás nagyságrendjével és a további vizsgálandó funkciók kiemelésével.

Sodródás áttekintése

Metrika Leírás
Adateltolódás mértéke Az alapkonfiguráció és a céladatkészlet közötti időbeli eltérés százalékos aránya. Ez a százalékos tartomány 0 és 100 között van, a 0 azonos adathalmazokat, a 100 pedig azt jelzi, hogy az Azure Machine Learning adateltolódási modellje teljesen megkülönbözteti a két adathalmazt. A pontos százalékban mért zajt az okozza, hogy gépi tanulási technikákat használnak az ilyen nagyságrendek létrehozásához.
A legküldőbb funkciók Az adathalmaz azon funkcióit jeleníti meg, amelyek a legnagyobb eltérést mutatták, és ezért járulnak hozzá a legnagyobb mértékű eltérést mutató metrikához. A kovarianciaváltás miatt a szolgáltatások mögöttes eloszlásának nem feltétlenül kell változnia ahhoz, hogy viszonylag nagy fontossággal bírjon.
Küszöbérték A megadott küszöbértéken túli adateltolódás riasztásokat aktivál. Konfigurálja a küszöbértéket a figyelési beállításokban.

Sodródás nagyságrendi trendje

Megtudhatja, hogy az adathalmaz miben tér el a céladatkészlettől a megadott időszakban. Minél közelebb van a 100%-hoz, annál inkább különbözik a két adathalmaz.

Sodródás nagyságrendi trendje

Sodródás nagyságrendje jellemzők szerint

Ez a szakasz funkciószintű elemzéseket tartalmaz a kiválasztott szolgáltatás eloszlásának változásairól és az egyéb statisztikákról.

A céladatkészlet idővel profilkészítésre is kerül. Az egyes jellemzők alapkonfigurációs eloszlása közötti statisztikai távolság a céladatkészlet időbeli eloszlásával lesz összehasonlítva. Elméletileg ez hasonlít az adateltolódás mértékére. Ez a statisztikai távolság azonban nem az összes jellemző, hanem egy adott jellemzőre jellemző. A min, a max és a középérték is elérhető.

A Azure Machine Learning stúdió válasszon egy sávot a grafikonon az adott dátum jellemzőszintű részleteinek megtekintéséhez. Alapértelmezés szerint az alapkonfiguráció adathalmazának eloszlása és a legutóbbi feladat ugyanazon funkció eloszlása jelenik meg.

Sodródás nagyságrendje jellemzők szerint

Ezek a metrikák a Python SDK-ban is lekérhetők egy get_metrics() objektum metódusával DataDriftDetector .

Funkció részletei

Végül görgessen le az egyes funkciók részleteinek megtekintéséhez. A diagram fölötti legördülő menükkel jelölje ki a funkciót, és válassza ki a megtekinteni kívánt metrikát is.

Numerikus jellemzők grafikonja és összehasonlítása

A diagram metrikái a funkció típusától függenek.

  • Numerikus jellemzők

    Metrika Leírás
    Wasserstein távolság Az alapkonfiguráció céleloszlássá alakításához szükséges minimális munkamennyiség.
    Középérték A szolgáltatás átlagos értéke.
    Minimális érték A szolgáltatás minimális értéke.
    Maximális érték A funkció maximális értéke.
  • Kategorikus funkciók

    Metrika Leírás
    Euklideszi távolság   Kategorikus oszlopokhoz számítva. Az euklideszi távolságot két vektoron számítjuk ki, amelyek ugyanazon kategorikus oszlop empirikus eloszlásából jönnek létre két adatkészletből. A 0 nem jelez különbséget az empirikus eloszlásokban.  Minél jobban eltér a 0-tól, annál inkább sodródott el ez az oszlop. A trendek a metrika idősorozat-ábrázolásából figyelhetők meg, és hasznosak lehetnek egy sodródó funkció feltárásában.  
    Egyedi értékek A funkció egyedi értékeinek száma (számosság).

Ezen a diagramon egyetlen dátumot jelöljön ki a cél és a megjelenített funkció funkcióeloszlásának összehasonlításához. Numerikus jellemzők esetén ez két valószínűségeloszlást mutat. Ha a funkció numerikus, megjelenik egy sávdiagram.

Válassza ki a célhoz viszonyítandó dátumot

Metrikák, riasztások és események

A metrikák lekérdezhetők a gépi tanulási munkaterülethez társított Azure-alkalmazás Insights-erőforrásban. Hozzáféréssel rendelkezik az Application Insights összes szolgáltatásához, beleértve az egyéni riasztási szabályok és műveletcsoportok beállítását egy Email/SMS/Push/Voice vagy Azure-függvény elindításához. A részletekért tekintse meg az Application Insights teljes dokumentációját.

Első lépésként lépjen a Azure Portal, és válassza ki a munkaterület Áttekintés lapját. A társított Application Insights-erőforrás a jobb szélen található:

Az Azure Portal áttekintése

A bal oldali panel Figyelés területén válassza a Naplók (Elemzések) lehetőséget:

Az Application Insights áttekintése

Az adathalmaz-monitorozási metrikák tárolása a következőként customMetricstörténik: . Miután beállított egy adathalmaz-figyelőt, írhat és futtathat lekérdezést, hogy megtekinthesse őket:

Log Analytics-lekérdezés

Miután azonosította a metrikákat a riasztási szabályok beállításához, hozzon létre egy új riasztási szabályt:

Új riasztási szabály

Használhat egy meglévő műveletcsoportot, vagy létrehozhat egy újat a megadott feltételek teljesülése esetén végrehajtandó művelet meghatározásához:

Új műveletcsoport

Hibaelhárítás

Az adateltolódás-figyelők korlátozásai és ismert problémái:

  • Az előzményadatok elemzésekor az időtartomány a figyelő frekvenciabeállításának 31 intervallumára korlátozódik.

  • 200 funkció korlátozása, kivéve, ha nincs megadva szolgáltatáslista (az összes használt funkció).

  • A számítási méretnek elég nagynak kell lennie az adatok kezeléséhez.

  • Győződjön meg arról, hogy az adathalmaz egy adott figyelőfeladat kezdő és záró dátumán belül rendelkezik adatokkal.

  • Az adathalmaz-figyelők csak olyan adathalmazokon működnek, amelyek legalább 50 sort tartalmaznak.

  • Az adathalmaz oszlopai vagy funkciói kategorikus vagy numerikus besorolásúak az alábbi táblázatban szereplő feltételek alapján. Ha a szolgáltatás nem felel meg ezeknek a feltételeknek – például egy 100 egyedi értékkel rendelkező >sztring típusú oszlop –, a szolgáltatás el lesz távolítva az adateltolódási algoritmusból, de továbbra is profilkészítés alatt áll.

    Szolgáltatás típusa Adattípus Feltétel Korlátozások
    Kategorikus sztring Az egyedi értékek száma a szolgáltatásban kevesebb, mint 100, és kevesebb, mint a sorok számának 5%-a. A null a saját kategóriája.
    Numerikus int, float A funkció értékei numerikus adattípusúak, és nem felelnek meg a kategorikus jellemzők feltételének. A funkció megszakadt, ha >az értékek 15%-a null értékű.
  • Ha létrehozott egy adatelsodródás-figyelőt, de nem látja az adatokat a Azure Machine Learning stúdió Adathalmaz-figyelők lapján, próbálkozzon az alábbiakkal.

    1. Ellenőrizze, hogy a megfelelő dátumtartományt választotta-e az oldal tetején.
    2. Az Adathalmaz-figyelők lapon válassza a kísérlet hivatkozását a feladat állapotának ellenőrzéséhez. Ez a hivatkozás a táblázat jobb szélén található.
    3. Ha a feladat sikeresen befejeződött, ellenőrizze az illesztőnaplókban, hogy hány metrika lett létrehozva, vagy hogy vannak-e figyelmeztető üzenetek. A kísérlet kiválasztása után keresse meg az illesztőprogram-naplókat a Kimenet + naplók lapon.
  • Ha az SDK-függvény backfill() nem hozza létre a várt kimenetet, annak hitelesítési hibája lehet az oka. Amikor létrehoz egy számítást, hogy átengedje ezt a függvényt, ne használja a függvényt Run.get_context().experiment.workspace.compute_targets. Ehelyett használja a ServicePrincipalAuthentication függvényt, például az alábbiakat a függvénybe backfill() átadott számítás létrehozásához:

    auth = ServicePrincipalAuthentication(
            tenant_id=tenant_id,
            service_principal_id=app_id,
            service_principal_password=client_secret
            )
    ws = Workspace.get("xxx", auth=auth, subscription_id="xxx", resource_group="xxx")
    compute = ws.compute_targets.get("xxx")
    
  • A Modelladatgyűjtőből akár 10 percet is igénybe vehet, amíg az adatok megérkeznek a Blob Storage-fiókba. Ez azonban általában kevesebb időt vesz igénybe. Egy szkriptben vagy jegyzetfüzetben várjon 10 percet, hogy az alábbi cellák sikeresen fussanak.

    import time
    time.sleep(600)
    

Következő lépések