Sdílet prostřednictvím


Konfigurace trénování, ověřování, křížového ověřování a testování dat v automatizovaném strojovém učení

PLATÍ PRO: Python SDK azureml v1

V tomto článku se dozvíte o různých možnostech konfigurace trénovacích dat a rozdělení ověřovacích dat spolu s nastavením křížového ověřování pro automatizované strojové učení, automatizované strojové učení a experimenty.

Když ve službě Azure Machine Learning použijete automatizované strojové učení k sestavení více modelů ML, každé podřízené spuštění musí ověřit související model výpočtem metrik kvality pro daný model, jako je přesnost nebo vážená hodnota AUC. Tyto metriky se počítají porovnáním předpovědí provedených s každým modelem a skutečnými popisky z minulých pozorování v ověřovacích datech. Přečtěte si další informace o tom, jak se metriky počítají na základě typu ověření.

Experimenty automatizovaného strojového učení provádějí ověření modelu automaticky. Následující části popisují, jak můžete pomocí sady Azure Machine Learning Python SDK dále přizpůsobit nastavení ověřování.

Pokud chcete prostředí s nízkým kódem nebo bez kódu, přečtěte si téma Vytvoření experimentů automatizovaného strojového učení v studio Azure Machine Learning.

Požadavky

Pro tento článek potřebujete:

Důležité

Příkazy Pythonu v tomto článku vyžadují nejnovější azureml-train-automl verzi balíčku.

Výchozí rozdělení dat a křížové ověření ve strojovém učení

Pomocí objektu AutoMLConfig definujte nastavení experimentu a trénování. V následujícím fragmentu kódu si všimněte, že jsou definovány pouze požadované parametry, tj. parametry pro n_cross_validations nebo validation_data nejsou zahrnuty.

Poznámka:

Výchozí rozdělení dat a křížové ověření se ve scénářích prognóz nepodporuje.

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'
                            )

Pokud explicitně nezadáte ani parametr validation_data n_cross_validations , automatizované strojové učení použije výchozí techniky v závislosti na počtu řádků zadaných v jedné datové sadě training_data.

Velikost trénovacích dat Technika ověřování
Větší než 20 000 řádků Použije se rozdělení dat trénování/ověření. Výchozí hodnota je 10 % počáteční trénovací sady dat jako ověřovací sady. Tato ověřovací sada se pak používá pro výpočet metrik.
Menší než 20 000 řádků Použije se přístup křížového ověřování. Výchozí počet záhybů závisí na počtu řádků.
Pokud je datová sada menší než 1 000 řádků, použije se 10 složených záhybů.
Pokud jsou řádky v rozmezí 1 000 až 20 000, použijí se tři záhyby.

Zadání ověřovacích dat

V takovém případě můžete buď začít s jedním datovým souborem a rozdělit ho na trénovací data a ověřovací sady dat, nebo můžete zadat samostatný datový soubor pro ověřovací sadu. Parametr v AutoMLConfig objektu validation_data v obou směrech přiřadí data, která se mají použít jako ověřovací sada. Tento parametr přijímá pouze datové sady ve formě datové sady Azure Machine Learning nebo datového rámce pandas.

Poznámka:

Parametr validation_data vyžaduje training_data také nastavení parametrů label_column_name a parametrů. Můžete nastavit pouze jeden ověřovací parametr, to znamená, že můžete zadat pouze jednu validation_data nebo n_cross_validations, nikoli obě.

Následující příklad kódu explicitně definuje, která část zadaných dat dataset se má použít pro trénování a ověřování.

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'
                            )

Zadejte velikost ověřovací sady.

V tomto případě je pro experiment k dispozici pouze jedna datová sada. To znamená, že parametr validation_data není zadán a zadaná datová sada je přiřazena k parametrutraining_data.

AutoMLConfig V objektu validation_size můžete nastavit parametr tak, aby se část trénovacích dat zachytála pro ověření. To znamená, že ověřovací sada bude rozdělena automatizovaným strojovém učením od počátečního training_data poskytnutého nástroje. Tato hodnota by měla být v rozmezí od 0,0 do 1,0 (například 0,2 znamená, že pro ověřovací data se uchovává 20 % dat).

Poznámka:

Parametr validation_size není podporován ve scénářích prognózování.

Podívejte se na následující příklad kódu:

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řížové ověřování K-fold

Pokud chcete provést křížové ověření k-fold, zahrňte n_cross_validations parametr a nastavte ho na hodnotu. Tento parametr nastaví, kolik křížových ověření se má provést, na základě stejného počtu složených záhybů.

Poznámka:

Parametr n_cross_validations není podporován ve scénářích klasifikace, které používají hluboké neurální sítě. Scénáře prognózování najdete v tématu Nastavení automatického strojového učení pro trénování modelu prognózování časových řad.

V následujícím kódu je definováno pět záhybů pro křížové ověření. Proto pět různých trénování, každé trénování s použitím 4/5 dat a každé ověření pomocí 1/5 dat s jiným blokováním pokaždé.

V důsledku toho se metriky počítají s průměrem pěti ověřovacích metrik.

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'
                            )

Křížové ověřování Monte Carlo

Chcete-li provést křížové ověření Monte Carlo, zahrňte do objektu validation_size AutoMLConfig parametry i n_cross_validations parametry.

V případě křížového ověřování Monte Carlo automatizované strojové učení vyhradí část trénovacích dat určených parametrem validation_size pro ověření a pak přiřadí zbytek dat pro trénování. Tento proces se pak opakuje na základě hodnoty zadané v parametru n_cross_validations , která pokaždé generuje nové rozdělení trénování a ověřování.

Poznámka:

Křížové ověřování Monte Carlo se ve scénářích prognóz nepodporuje.

Následující kód definuje, 7 složených pro křížové ověření a 20 % trénovacích dat by se mělo použít k ověření. Proto 7 různých trénování používá každé trénování 80 % dat a každé ověření používá 20 % dat s jiným blokováním pokaždé.

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'
                            )

Zadání vlastních složených dat křížového ověření

Můžete také zadat vlastní křížové ověření (CV) s přeložením dat. Jedná se o pokročilejší scénář, protože zadáváte sloupce, které se mají rozdělit a použít k ověření. Do trénovacích dat zahrňte vlastní sloupce rozdělení CV a určete sloupce vyplněním názvů sloupců v parametru cv_split_column_names . Každý sloupec představuje jedno rozdělení křížového ověření a obsahuje celočíselné hodnoty 1 nebo 0, kde 1 označuje, že se má řádek použít pro trénování a 0 označuje, že se má řádek použít k ověření.

Poznámka:

Parametr cv_split_column_names není podporován ve scénářích prognózování.

Následující fragment kódu obsahuje data z bankovního marketingu se dvěma sloupci cv1 a cv2.

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']
                            )

Poznámka:

Pokud chcete použít cv_split_column_names sadu label_column_nametraining_data Azure Machine Learning Python SDK verze 1.6.0 nebo novější, upgradujte ji. U předchozích verzí sady SDK se prosím podívejte na použití cv_splits_indices, ale mějte na paměti, že se používá pouze se vstupem X datové sady a y s datovou sadou.

Výpočet metriky pro křížové ověřování ve strojovém učení

Při použití křížového ověření k-fold nebo Monte Carlo se metriky počítají na každém záhybu ověření a následně agregují. Agregační operace je průměrem skalárních metrik a součtem pro grafy. Metriky vypočítané během křížového ověřování jsou založeny na všech záhybech, a proto všechny vzorky z trénovací sady. Přečtěte si další informace o metrikách v automatizovaném strojovém učení.

Pokud se použije vlastní ověřovací sada nebo automaticky vybraná ověřovací sada, metriky vyhodnocení modelu se počítají pouze z této ověřovací sady, nikoli z trénovacích dat.

Zadání testovacích dat (Preview)

Důležité

Tato funkce je v současné době ve verzi Public Preview. Tato verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučujeme ji pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti.

Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.

Můžete také poskytnout testovací data k vyhodnocení doporučeného modelu, který pro vás automatizované strojové učení vygeneruje po dokončení experimentu. Když zadáte testovací data, považuje se za samostatnou od trénování a ověřování, aby nedošlo k předsudkům výsledků testovacího běhu doporučeného modelu. Přečtěte si další informace o trénování, ověřování a testování dat v automatizovaném strojovém učení.

Testovací datové sady musí být ve formě tabulkové datové sady Azure Machine Learning. Testovací datovou sadu můžete zadat s test_data parametry a test_size parametry v AutoMLConfig objektu. Tyto parametry se vzájemně vylučují a nelze je zadat současně nebo s cv_split_column_names nebo cv_splits_indices.

Pomocí parametru test_data zadejte existující datovou sadu, která se má předat do objektu AutoMLConfig .

automl_config = AutoMLConfig(task='forecasting',
                             ...
                             # Provide an existing test dataset
                             test_data=test_dataset,
                             ...
                             forecasting_parameters=forecasting_parameters)

Chcete-li použít rozdělení trénování/testování místo přímého poskytnutí testovacích dat, použijte test_size parametr při vytváření AutoMLConfig. Tento parametr musí být hodnota s plovoucí desetinou čárkou mezi 0,0 a 1,0 výhradní a určuje procento trénovací datové sady, která by se měla použít pro testovací datovou sadu.

automl_config = AutoMLConfig(task = 'regression',
                             ...
                             # Specify train/test split
                             training_data=training_data,
                             test_size=0.2)

Poznámka:

U regresních úloh se používá náhodné vzorkování.
U klasifikačních úkolů se používá stratifikované vzorkování, ale náhodné vzorkování se používá jako návrat, pokud stratifikované vzorkování není možné.
Prognózování v současné době nepodporuje zadávání testovací datové sady pomocí rozdělení trénování/testu s parametrem test_size .

test_data Předání parametrů test_size do AutoMLConfigsouboru , automaticky aktivuje vzdálené testovací spuštění po dokončení experimentu. Toto testovací spuštění používá poskytnutá testovací data k vyhodnocení nejlepšího modelu, který doporučuje automatizované strojové učení. Přečtěte si další informace o tom, jak získat předpovědi z testovacího běhu.

Další kroky