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:
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. Kövesse az oktatóanyagot vagy útmutatót az alapvető automatizált gépi tanulási kísérletek 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ó 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 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_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, 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_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 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.
Figyelmeztetés
Ez a funkció nem érhető el az alábbi 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 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 AutoMLConfig
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ó arról , hogyan szerezheti be az előrejelzéseket a tesztfuttatásból.
Következő lépések
A kiegyensúlyozatlan adatok és a túlillesztés megakadályozása.
Idősoros előrejelzési modell automatikus betanítása.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: