Betanítási, ellenőrzé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
Ebben a cikkben megismerheti a betanítási adatok és az érvényesítési adatok felosztásának konfigurálásának különböző lehetőségeit, valamint az automatizált gépi tanulás, automatizált gépi tanulás és kísérletek keresztérvényesítési beállításait.
Az Azure Machine Learningben, amikor automatizált gépi tanulást használ több ML-modell létrehozásához, minden gyermekfuttatásnak ellenőriznie kell a kapcsolódó modellt a modell minőségi metrikáinak ( például pontosság vagy 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ódi címkéivel. További információ a metrikák érvényességi típus alapján történő kiszámításáról.
Az automatizált gépi tanulási kísérletek automatikusan elvégzik a modellérvényesítést. Az alábbi szakaszok azt mutatják be, hogyan szabhatja tovább az érvényesítési beállításokat az Azure Machine Learning Python SDK-val.
Alacsony kódszámú vagy kód nélküli felhasználói élményért lásd: Automatizált gépi tanulási kísérletek létrehozása Azure Machine Learning stúdió.
Előfeltételek
Ehhez a cikkhez a következőt kell megadnia:
Egy Azure Machine Learning-munkaterület. A munkaterület létrehozásához lásd: Munkaterület-erőforrások létrehozása.
Automatizált gépi tanulási kísérlet beállításának ismerete az Azure Machine Learning SDK-val. Kövesse az oktatóanyagot vagy útmutatót az automatizált gépi tanulási kísérletek alapvető tervezési mintáinak megtekintéséhez.
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. Magas szintű magyarázatért:
Fontos
A cikkben szereplő Python-parancsokhoz a legújabb azureml-train-automl
csomagverzióra van szükség.
- 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 adatmegosztások és keresztérvényesítés a gépi tanulásban
Az AutoMLConfig objektummal határozhatja meg a kísérlet- és betanítási beállításokat. Az alábbi kódrészletben figyelje meg, hogy csak a szükséges paraméterek vannak definiálva, amelyek a paraméterek n_cross_validations
, vagy validation_data
nem szerepelnek benne.
Megjegyzés
Az alapértelmezett adatmegosztások és keresztérvényesítések nem támogatottak az előrejelzési forgatókönyvekben.
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 n_cross_validations
meg explicit módon vagy 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 történik. Az alapértelmezett beállítás az, hogy a kezdeti betanítási adatkészlet 10%-át használja érvényesítési készletként. Ezt az érvényesítési készletet használják a metrikák kiszámításához. |
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 hajtást használ. Ha a sorok 1000 és 20 000 között vannak, akkor a rendszer három hajtást használ. |
Érvényesítési adatok megadása
Ebben az esetben 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 készlethez. Az objektum paramétere validation_data
AutoMLConfig
mindkét esetben hozzárendeli az érvényesítési készletké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.
Megjegyzés
A validation_data
paraméterhez a és label_column_name
a training_data
paramétert is be kell állítani. Csak egy érvényesítési paramétert állíthat be, azaz csak a vagy n_cross_validations
a paramétert adhatja megvalidation_data
, mindkettőt nem.
Az alábbi példakód explicit módon meghatározza, hogy a megadott adatok dataset
mely részét használja a betanításhoz és az ellenőrzéshez.
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 csoport méretének megadása
Ebben az esetben csak egyetlen adatkészletet ad meg a kísérlethez. Ez azt jelzi, hogy 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 úgy a validation_size
paramétert, hogy a betanítási adatok egy részét érvényesítés céljából visszatartsa. Ez azt jelenti, hogy az érvényesítési készletet automatizált gépi tanulással kell felosztani a kezdeti training_data
megadott értékről. Ennek az értéknek 0,0 és 1,0 közöttinek kell lennie, nem beleértve azokat (például a 0,2 azt jelenti, hogy az adatok 20%-át az érvényesítési adatok őrzik meg).
Megjegyzés
A validation_size
paraméter előrejelzési forgatókönyvekben nem támogatott.
Tekintse meg a következő példakódot:
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
A k-fold keresztérvényesítés végrehajtásához adja meg a n_cross_validations
paramétert, és állítsa értékre. Ez a paraméter beállítja, hogy hány keresztérvényesítést kell végrehajtani az azonos számú hajtás alapján.
Megjegyzés
A n_cross_validations
paraméter nem támogatott mély neurális hálózatokat használó besorolási forgatókönyvekben.
Előrejelzési forgatókönyvek esetén tekintse meg, hogyan történik a keresztérvényesítés alkalmazása az AutoML beállítása idősorozat-előrejelzési modell betanításához című témakörben.
A következő kódban a keresztérvényesítéshez öt hajtás van definiálva. Ezért öt különböző betanítás, minden betanítás az adatok 4/5-ét használja, és minden ellenőrzés az adatok 1/5-ét használja, és 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 metrika á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 keresztellenőrzése
A Monte Carlo keresztellenőrzéséhez adja meg a és n_cross_validations
a validation_size
paramétert is az AutoMLConfig
objektumban.
Monte Carlo keresztérvényesítés esetén az automatizált gépi tanulás félreteheti a paraméter által meghatározott betanítási adatoknak az validation_size
ellenőrzéshez megadott részét, majd a többi adatot a betanításhoz rendeli hozzá. Ez a folyamat a paraméterben n_cross_validations
megadott érték alapján ismétlődik, amely minden alkalommal véletlenszerűen új betanítási és érvényesítési felosztásokat hoz létre.
Megjegyzés
A Monte Carlo keresztellenőrzése nem támogatott az előrejelzési forgatókönyvekben.
A következő kód határozza meg, hogy a keresztérvényesítéshez 7 redőt és a betanítási adatok 20%-át kell használni az ellenőrzéshez. Ezért 7 különböző betanítás esetén az egyes betanítások az adatok 80%-át használják, és 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 egy 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 belefoglalhatja az egyéni önéletrajz felosztott oszlopait, é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 1 vagy 0 egész számértékekkel van kitöltve – ahol az 1 azt jelzi, hogy a sort be kell tanítani, a 0 pedig azt jelzi, hogy a sort kell használni az ellenőrzéshez.
Megjegyzés
A cv_split_column_names
paraméter előrejelzési forgatókönyvekben nem támogatott.
Az alábbi kódrészlet két cv1 és "cv2" oszlopot tartalmazó banki marketingadatokat tartalmaz.
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']
)
Megjegyzés
A és label_column_name
a training_data
használatával való használathoz cv_split_column_names
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álatátcv_splits_indices
, de vegye figyelembe, hogy csak a és y
az adathalmaz bemenetével X
használható.
Metrikaszámítás a gépi tanulás keresztérvényesítéséhez
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, a diagramok összege. A keresztellenőrzés során kiszámított metrikák az összes hajtáson alapulnak, így a betanítási készletből származó összes mintán. További információ az automatizált gépi tanulás metrikáiról.
Ha egyéni vagy automatikusan kiválasztott érvényesítési készletet használ, a modellértékelési metrikák csak az adott ellenőrzési készletből lesznek kiszámítva, nem a betanítási adatokból.
Tesztadatok 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ói szerződés nélkül érhető el, éles számítási feladatokhoz nem ajánljuk. 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, hogy kiértékelje az automatizált gépi tanulás által a kísérlet befejezésekor létrehozott ajánlott modellt. Ha tesztadatokat ad meg, az a betanítástól és az ellenőrzéstől függetlennek minősül, így nem torzítja az ajánlott modell tesztfuttatásának eredményeit. További információ az automatizált gépi tanulás betanítási, ellenőrzési és tesztelési adatairól.
Figyelmeztetés
Ez a funkció nem érhető el a következő automatizált gépi tanulási forgatókönyvekhez
- Számítógépes látástechnológiai feladatok
- Számos modell és hiearchikus idősorozat-előrejelzési betanítás (előzetes verzió)
- Olyan feladatok előrejelzése, amelyekben engedélyezve vannak a mélytanulási neurális hálózatok (DNN)
- Az automatizált gépi tanulás helyi számításokból vagy Azure Databricks-fürtökből fut
A tesztadatkészleteknek Azure Machine Learning TabularDataset formában kell lenniük. Megadhat egy tesztadatkészletet a és test_size
paraméterekkel test_data
az AutoMLConfig
objektumban. Ezek a paraméterek kölcsönösen kizárják egymást, és nem adhatók meg egyszerre vagy a vagy cv_splits_indices
a paraméterrelcv_split_column_names
.
test_data
A paraméterrel adjon meg egy meglévő adatkészletet, amely át lesz adva az AutoMLConfig
objektumba.
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
létrehozásakor. Ennek a paraméternek 0,0 és 1,0 közötti lebegőpontos értéknek kell lennie, és meghatározza a tesztelési adatké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)
Megjegyzés
A regressziós feladatokhoz véletlenszerű mintavételezést használunk.
Besorolási feladatok esetén a rendszer rétegzett mintavételezést használ, de véletlenszerű mintavételezést használ visszaesésként, ha a rétegzett mintavételezés nem valósítható meg.
Az előrejelzés jelenleg nem támogatja egy tesztadatkészlet megadását a paraméterrel rendelkező betanítási/tesztelési test_size
felosztással.
Ha átadja a test_data
vagy test_size
paramétert a -nek, AutoMLConfig
automatikusan elindít egy távoli tesztfuttatást a kísérlet befejezése után. Ez a tesztfuttatás a megadott tesztadatok alapján értékeli ki az automatizált gépi tanulás által javasolt legjobb modellt. További információ arról, hogyan kaphat előrejelzéseket a tesztfuttatásból.