Betanítási, érvényesítési, keresztérvényesítési és tesztelési adatok konfigurálása automatizált gépi tanulásban
A KÖVETKEZŐKRE VONATKOZIK: Python SDK azureml v1
Ez a cikk bemutatja a betanítási adatok és az érvényesítési adatok felosztásának konfigurálásának lehetőségeit, valamint az automatizált gépi tanulási (automatizált gépi tanulási) kísérletek keresztérvényesítési beállításait. Az Azure Machine Learningben, ha automatizált gépi tanulási modellt használ több gépi tanulási modell létrehozásához, minden gyermekfuttatásnak ellenőriznie kell a kapcsolódó modellt a modell minőségi metrikáinak kiszámításával, például a pontosság vagy a görbe alatti terület (AUC) súlyozott kiszámításával. Ezeket a metrikákat úgy számítjuk ki, hogy összehasonlítjuk az egyes modellekkel készített előrejelzéseket az érvényesítési adatok korábbi megfigyeléseinek valós címkéivel. Az automatizált gépi tanulási kísérletek automatikusan elvégzik a modellérvényesítést.
A következő szakaszok bemutatják, hogyan szabhatja testre az érvényesítési beállításokat az Azure Machine Learning Python SDK-val. A metrikák érvényességi típus alapján történő kiszámításának módjáról további információt a Metrikák számításának beállítása keresztérvényesítéshez című szakaszban talál. Ha érdekes az alacsony kódszámú vagy kód nélküli felhasználói élmény, olvassa el az Automatizált gépi tanulási kísérletek létrehozása az Azure Machine Learning Studióban című témakört.
Előfeltételek
Egy Azure Machine Learning-munkaterület. A munkaterület létrehozásához lásd : Munkaterület-erőforrások létrehozása.
Az Azure Machine Learning SDK automatizált gépi tanulási kísérletének beállításának ismerete. Az alapvető automatizált gépi tanulási kísérletek tervezési mintáinak megtekintéséhez végezze el az Objektumészlelési modell betanítása oktatóanyagot vagy az AutoML-betanítás beállítása Python-útmutatóval .
A betanítási/érvényesítési adatok felosztásának és a keresztérvényesítésnek a gépi tanulási fogalmakként való ismerete. A magas szintű magyarázatért tekintse meg a következő cikkeket:
Fontos
A cikkben szereplő Python-parancsokhoz a legújabb azureml-train-automl
csomagverzió szükséges.
- Telepítse a legújabb
azureml-train-automl
csomagot a helyi környezetbe. - A legújabb
azureml-train-automl
csomag részleteiért tekintse meg a kibocsátási megjegyzéseket.
Alapértelmezett adatfelosztások és keresztérvényesítés beállítása a gépi tanulásban
Az alapértelmezett adatfelosztások és keresztérvényesítés gépi tanulásban való beállításához használja az AutoMLConfig Osztály objektumot a kísérlet- és betanítási beállítások meghatározásához. Az alábbi példában csak a szükséges paraméterek vannak definiálva. A n_cross_validations
paraméterek és validation_data
a paraméterek nem szerepelnek benne.
Feljegyzés
Az előrejelzési forgatókönyvekben az alapértelmezett adatfelosztások és keresztérvényesítések nem támogatottak.
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = dataset,
label_column_name = 'Class'
)
Ha nem ad meg explicit módon egy vagy n_cross_validations
több paramétertvalidation_data
, az automatizált gépi tanulás az egyetlen adathalmazban training_data
megadott sorok számától függően alkalmazza az alapértelmezett technikákat.
Betanítási adatok mérete | Érvényesítési technika |
---|---|
20 000 sornál nagyobb | Betanítási/érvényesítési adatok felosztása lesz alkalmazva. Az alapértelmezett beállítás az, hogy a kezdeti betanítási adatkészlet 10%-át használja érvényesítési csoportként. Ez az érvényesítési csoport a metrikák kiszámításához használatos. |
20 000 sornál kisebb | A rendszer keresztérvényesítési megközelítést alkalmaz. A hajtások alapértelmezett száma a sorok számától függ. - Ha az adathalmaz kevesebb, mint 1000 sor, 10 redőt használ. - Ha a sorok 1000 és 20 000 között vannak, három hajtást használnak. |
Érvényesítési adatkészlet megadása
Két lehetősége van az érvényesítési adatok megadására. Egyetlen adatfájllal kezdheti, és feloszthatja betanítási adatokra és érvényesítési adatkészletekre, vagy megadhat egy külön adatfájlt az érvényesítési csoporthoz. Akárhogy is, az objektum paramétere validation_data
AutoMLConfig
hozzárendeli az érvényesítési csoportként használni kívánt adatokat. Ez a paraméter csak Azure Machine Learning-adatkészlet vagy pandas-adatkeret formájában fogad el adatkészleteket.
Íme néhány további szempont az érvényesítési paraméterekkel való munkához:
- Csak egy érvényesítési paramétert állíthat be, a
validation_data
paramétert vagy a paramétertn_cross_validations
, de mindkettőt nem. - A paraméter használatakor meg
validation_data
kell adnia a paramétereket éslabel_column_name
atraining_data
paramétereket is.
Az alábbi példa explicit módon határozza meg, hogy a képzés (training_data
) és az dataset
ellenőrzés (validation_data
) melyik részét használja:
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
training_data, validation_data = dataset.random_split(percentage=0.8, seed=1)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = training_data,
validation_data = validation_data,
label_column_name = 'Class'
)
Érvényesítési adathalmaz méretének megadása
Az érvényesítési csoport méretének megadásakor csak egyetlen adatkészletet kell megadnia a kísérlethez. A validation_data
paraméter nincs megadva, és a megadott adatkészlet hozzá van rendelve a training_data
paraméterhez.
AutoMLConfig
Az objektumban beállíthatja validation_size
a paramétert úgy, hogy a betanítási adatok egy részét érvényesítés céljából visszatartsa. Ebben a stratégiában az automatizált gépi tanulási feladat elosztja az érvényesítési készletet a megadott kezdeti training_data
értéktől. Az értéknek 0,0 és 1,0 közöttinek kell lennie nem kizárólagosnak (például a 0,2 azt jelenti, hogy az adatok 20%-a ki van adva az érvényesítési adatokhoz).
Feljegyzés
Az előrejelzési forgatókönyvekben a validation_size
paraméter nem támogatott.
Az alábbi példa egyetlen dataset
példányt biztosít a kísérlethez. A training_data
teljes adatkészlethez hozzáfér, és az adathalmaz 20%-a érvényesítésre van lefoglalva (validation_size = 0.2
):
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = dataset,
validation_size = 0.2,
label_column_name = 'Class'
)
K-fold keresztérvényesítés végrehajtása
A k-fold keresztérvényesítés végrehajtásához adja meg a n_cross_validations
paramétert, és határozza meg a hajtások számát. Ez a paraméter azt állítja be, hogy hány keresztérvényesítést kell végrehajtani az azonos számú hajtás alapján.
Feljegyzés
A mély neurális hálózatokat (DNN) használó besorolási forgatókönyvekben a n_cross_validations
paraméter nem támogatott.
Az előrejelzési forgatókönyvek esetében tekintse meg, hogyan alkalmazza a keresztérvényesítést az AutoML beállítása az idősorozat-előrejelzési modell betanításához.
Az alábbi példa öt hajtást határoz meg a keresztérvényesítéshez. A folyamat öt különböző betanítást futtat, ahol minden betanítás az adatok 4/5-ét használja. Minden ellenőrzés az adatok 1/5-ét használja, minden alkalommal más-más kitartással. Ennek eredményeképpen a metrikák kiszámítása az öt érvényesítési mérőszám átlagával történik.
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = dataset,
n_cross_validations = 5
label_column_name = 'Class'
)
Monte Carlo keresztérvényesítésének végrehajtása
A Monte Carlo keresztellenőrzésének végrehajtásához az objektumban AutoMLConfig
a paramétereket és n_cross_validations
a validation_size
paramétereket is meg kell adnia.
Monte Carlo keresztérvényesítés esetén az automatizált gépi tanulás félreteheti a paraméter által megadott betanítási adatok részét az validation_size
ellenőrzéshez, majd a többi adatot a betanításhoz rendeli hozzá. Ezt a folyamatot a paraméterben n_cross_validations
megadott érték alapján megismételjük, amely minden alkalommal véletlenszerűen új betanítási és érvényesítési felosztásokat hoz létre.
Feljegyzés
Az előrejelzési forgatókönyvekben a Monte Carlo keresztérvényesítése nem támogatott.
Az alábbi példa hétszeres keresztérvényesítést és a betanítási adatok 20%-át határozza meg ellenőrzésre. A folyamat hét különböző betanítást futtat, ahol az egyes betanítások az adatok 80%-át használják. Minden ellenőrzés az adatok 20%-át használja, minden alkalommal más-más kitartással.
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = dataset,
n_cross_validations = 7
validation_size = 0.2,
label_column_name = 'Class'
)
Egyéni keresztérvényesítési adatátadások megadása
Saját keresztérvényesítési (CV) adatátadásokat is megadhat. Ez a megközelítés speciálisabb forgatókönyvnek számít, mivel meg kell adnia, hogy mely oszlopokat kell felosztani és használni az ellenőrzéshez. A betanítási adatokba egyéni cv felosztott oszlopokat is belefoglalhat, és a paraméterben lévő oszlopnevek feltöltésével megadhatja, cv_split_column_names
hogy mely oszlopok. Minden oszlop egy keresztérvényesítési felosztást jelöl, és egész értéke 1 vagy 0. Az 1 érték azt jelzi, hogy a sort betanításhoz kell használni. A 0 érték azt jelzi, hogy a sort kell használni az ellenőrzéshez.
Feljegyzés
Az előrejelzési forgatókönyvekben a cv_split_column_names
paraméter nem támogatott.
Az alábbi példa banki marketingadatokat tartalmaz két cv felosztási oszlopmal cv1
és cv2
a következőkkel:
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/bankmarketing_with_cv.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = dataset,
label_column_name = 'y',
cv_split_column_names = ['cv1', 'cv2']
)
Feljegyzés
A használathoz cv_split_column_names
training_data
label_column_name
frissítse az Azure Machine Learning Python SDK 1.6.0-s vagy újabb verzióját. A korábbi SDK-verziók esetén tekintse meg a használatot cv_splits_indices
, de vegye figyelembe, hogy csak adathalmaz-bemenettel X
y
használható.
Metrikaszámítás beállítása keresztérvényesítéshez
Ha k-fold vagy Monte Carlo keresztérvényesítést használ, a metrikákat az egyes érvényesítési hajtásokon számítja ki, majd összesíti. Az összesítési művelet a skaláris metrikák átlaga és a diagramok összege. A keresztérvényesítés során kiszámított metrikák az összes hajtáson alapulnak, ezért a betanítási csoport összes mintáján alapulnak. További információ: Automatizált gépi tanulási kísérletek eredményeinek kiértékelése.
Egyéni vagy automatikusan kiválasztott érvényesítési csoport használata esetén a modellértékelési metrikák csak az adott érvényesítési készletből lesznek kiszámítva, nem a betanítási adatokból.
Tesztadatkészlet megadása (előzetes verzió)
Fontos
Ez a funkció jelenleg nyilvános előzetes verzióban érhető el. Ez az előzetes verzió szolgáltatásszintű szerződés nélkül érhető el, és éles számítási feladatokhoz nem javasoljuk. 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.
Tesztadatokat is megadhat az automatizált gépi tanulás által a kísérlet befejezésekor létrehozott ajánlott modell kiértékeléséhez. Ha tesztadatokat ad meg, az adatok a betanítástól és az ellenőrzéstől különnek minősülnek, így megakadályozzák az ajánlott modell tesztfuttatásának eredményeire gyakorolt torzításokat. További információ: Betanítási, érvényesítési és tesztelési adatok.
Figyelmeztetés
A tesztadatkészlet szolgáltatás nem érhető el a következő automatizált gépi tanulási forgatókönyvekhez:
A tesztadatkészleteknek Azure Machine Learning TabularDataset formában kell lenniük. Megadhat egy tesztadatkészletet az objektumban lévő AutoMLConfig
paraméterekkel és test_size
paraméterekkeltest_data
. Ezek a paraméterek kölcsönösen kizárják egymást, és nem adhatók meg egyszerre vagy a cv_split_column_names
cv_splits_indices
paraméterekkel együtt.
AutoMLConfig
Az objektumban a test_data
paraméter használatával adjon meg egy meglévő adatkészletet:
automl_config = AutoMLConfig(task='forecasting',
...
# Provide an existing test dataset
test_data=test_dataset,
...
forecasting_parameters=forecasting_parameters)
Ha a tesztadatok közvetlen megadása helyett betanítási/tesztelési felosztást szeretne használni, használja a test_size
paramétert a AutoMLConfig
. Ennek a paraméternek 0,0 és 1,0 közötti lebegőpontos értéknek kell lennie. Meghatározza a tesztadatkészlethez használandó betanítási adatkészlet százalékos arányát.
automl_config = AutoMLConfig(task = 'regression',
...
# Specify train/test split
training_data=training_data,
test_size=0.2)
Az alábbiakban néhány további szempontot is figyelembe kell venni a tesztadatkészletek használata során:
- A regressziós feladatokhoz véletlenszerű mintavételezést használunk.
- A besorolási feladatokhoz rétegzett mintavételezést használunk, de a véletlenszerű mintavételezés tartalékként szolgál, ha a rétegzett mintavételezés nem valósítható meg.
Feljegyzés
Az előrejelzési forgatókönyvekben jelenleg nem adhat meg tesztadatkészletet egy betanítási/tesztelési felosztással a test_size
paraméterrel.
Ha átadja a test_data
test_size
paramétereket az AutoMLConfig
objektumnak, a kísérlet befejezésekor automatikusan elindít egy távoli tesztfuttatást. Ez a tesztfuttatás a megadott tesztadatok alapján értékeli ki az automatizált gépi tanulás által ajánlott legjobb modellt. További információ: Tesztfeladat eredményeinek lekérése.