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

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

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 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_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, 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étert n_cross_validations , de mindkettőt nem.
  • A paraméter használatakor meg validation_data kell adnia a paramétereket és label_column_name a training_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 cv2a 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_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 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.

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.