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:

Fontos

A cikkben szereplő Python-parancsokhoz a legújabb azureml-train-automl csomagverzióra van szükség.

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_datanem 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_datamegadott 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_dataAutoMLConfig 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_validationsa 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_namea 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.

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_indicesa 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 AutoMLConfiglé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, AutoMLConfigautomatikusan 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.

Következő lépések