Megosztás a következőn keresztül:


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

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, ha 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 az adott modellhez tartozó minőségi metrikák, például a pontosság vagy az 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. További információ a metrikák ellenőrzési 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 ismertetik, hogyan szabhatja testre az érvényesítési beállításokat az Azure Machine Learning Python SDK-val.

Az 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 az Azure Machine Learning Studióban.

Előfeltételek

Ebben a cikkben a következőt kell megadnia:

Fontos

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

Alapértelmezett adatfelosztások és keresztérvényesítés a gépi tanulásban

Az AutoMLConfig objektummal definiálhatja 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, vagyis a paraméterek n_cross_validations validation_data nem szerepelnek benne.

Feljegyzés

Az alapértelmezett adatfelosztások és keresztérvényesítés nem támogatott 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 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_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 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, akkor a rendszer 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 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.

Feljegyzés

A validation_data paraméterhez a paramétereket és label_column_name a training_data paramétereket is be kell állítani. Csak egy érvényesítési paramétert állíthat be, vagyis csak mindkettőt vagy mindkettőt megadhatja validation_data n_cross_validations.

Az alábbi példakód explicit módon határozza meg, hogy a megadott adatok dataset mely részét kell használni 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 a kísérlethez csak egyetlen adatkészletet ad meg. 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 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. Ez azt jelenti, hogy az érvényesítési készletet az automatikus gépi tanulási rendszer felosztja a kezdeti training_data megadotttól. Ennek az értéknek 0,0 és 1,0 közöttinek kell lennie nem inkluzívnak (például a 0,2 azt jelenti, hogy az adatok 20%-a az érvényesítési adatokhoz van tárolva).

Feljegyzés

A validation_size paraméter nem támogatott az előrejelzési forgatókönyvekben.

Lásd a következő kód példáját:

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 be egy értékre. 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 n_cross_validations paraméter nem támogatott mély neurális hálózatokat használó besorolási forgatókönyvekben. 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 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 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

A Monte Carlo keresztérvényesítésének végrehajtásához vegye fel az objektumba AutoMLConfig a paramétereket és n_cross_validations a validation_size paramétereket is.

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á. 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.

Feljegyzés

A Monte Carlo keresztérvényesíté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, az egyes betanítások az adatok 80%-át használják, és minden ellenőrzés az adatok 20%-át használja, és 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 fejlettebb forgatókönyvnek számít, mivel meg kell adnia, hogy mely oszlopokat kell felosztani és használni az ellenőrzéshez. Egyéni cv felosztott oszlopokat is felvehet a betanítási adatokba, és a paraméter oszlopneveinek 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ámmal van kitöltve – ahol az 1 azt jelzi, hogy a sort betanításhoz kell használni, a 0 pedig azt jelzi, hogy a sort kell használni az ellenőrzéshez.

Feljegyzés

A cv_split_column_names paraméter nem támogatott az előrejelzési forgatókönyvekben.

Az alábbi kódrészlet banki marketingadatokat tartalmaz, két cv1 és "cv2" hasított cv oszlopmal.

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_namefrissí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 keresztérvényesítéshez a gépi tanulásban

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ó az automatizált gépi tanulás metrikáiról.

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.

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á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 a betanítástól és az ellenőrzéstől függetlennek minősül, hogy ne torzítsa 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 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 következővel cv_split_column_names cv_splits_indices: .

A paraméterrel test_data adjon meg egy meglévő adatkészletet az objektumba AutoMLConfig való továbbításhoz.

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, és megadja 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)

Feljegyzés

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 visszaesőként szolgál, ha a rétegzett mintavételezés nem kivitelezhető.
Az előrejelzés jelenleg nem támogatja a tesztadatkészlet megadását a paraméterrel való betanítási/tesztelési test_size felosztással.

A paraméterek vagy test_size paraméterek test_data átadása a AutoMLConfigkí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ó arról , hogyan szerezheti be az előrejelzéseket a tesztfuttatásból.

Következő lépések