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

Tento článek popisuje možnosti konfigurace rozdělení trénovacích dat a ověřovacích dat spolu s nastavením křížového ověřování pro experimenty automatizovaného strojového učení (automatizované strojové učení). Když ve službě Azure Machine Learning použijete automatizované strojové učení k vytvoření více modelů strojového učení, každé podřízené spuštění musí ověřit související model tím, že vypočítá metriky kvality pro daný model, jako je přesnost nebo oblast pod váženou křivkou (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. Experimenty automatizovaného strojového učení provádějí ověření modelu automaticky.

Následující části popisují, jak přizpůsobit nastavení ověřování pomocí sady Azure Machine Learning Python SDK. Další informace o tom, jak se metriky počítají na základě typu ověření, najdete v části Nastavení výpočtu metriky pro křížové ověření . Pokud vás zajímá 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

Důležité

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

Nastavenívýchozích

Pokud chcete nastavit výchozí rozdělení dat a křížové ověřování ve strojovém učení, definujte nastavení experimentu a trénování pomocí objektu Třídy AutoMLConfig . V následujícím příkladu jsou definovány pouze požadované parametry. validation_data Parametry n_cross_validations nejsou zahrnuty.

Poznámka:

Ve scénářích prognóz se nepodporují výchozí rozdělení dat a křížové ověření.

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 validation_data parametr nebo n_cross_validations parametr, 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.

Zadejte ověřovací datovou sadu.

Máte dvě možnosti pro poskytování ověřovacích dat. Můžete 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.

Tady jsou některé další aspekty práce s ověřovacími parametry:

  • Můžete nastavit pouze jeden ověřovací parametr, buď validation_data parametr, nebo n_cross_validations parametr, ale ne obojí.
  • Při použití parametru validation_data musíte zadat training_data také parametry a label_column_name parametry.

Následující příklad explicitně definuje, kterou část použití dataset pro trénování (training_data) a pro ověření (validation_data):

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í datové sady.

Když zadáte velikost ověřovací sady, zadáte pro experiment jenom jednu datovou sadu. Parametr validation_data není zadaný a zadaná datová sada se k parametru training_data přiřadí.

AutoMLConfig V objektu validation_size můžete nastavit parametr tak, aby se část trénovacích dat zachytála pro ověření. Pro tuto strategii automatická úloha ML rozdělí ověřovací sadu od počátečního training_data zadaného objektu. Hodnota by měla být v rozsahu 0,0 až 1,0 neclusivní (například 0,2 znamená, že pro ověřovací data se uchovává 20 % dat).

Poznámka:

Ve scénářích validation_size prognóz není parametr podporován.

Následující příklad poskytuje jeden dataset pro experiment. Přistupuje training_data k úplné datové sadě a 20 % datové sady je přiděleno k ověření (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'
                            )

Provedení křížového ověřování k-fold

Chcete-li provést křížové ověření k-fold, zahrnete n_cross_validations parametr a definujete počet záhybů. 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:

Ve scénářích klasifikace, které používají hluboké neurální sítě (DNN), n_cross_validations se parametr nepodporuje.

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.

Následující příklad definuje pět záhybů pro křížové ověření. Proces spouští pět různých trénování, kde každé trénování používá 4/5 dat. Každé ověření používá 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'
                            )

Provedení křížového ověření Monte Carlo

Chcete-li provést křížové ověření Monte Carlo, zahrnete 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:

Ve scénářích prognózování se křížové ověřování Monte Carlo nepodporuje.

Následující příklad definuje sedm záhybů pro křížové ověření a 20 % trénovacích dat pro ověření. Proces spouští sedm různých trénování, kde každé trénování používá 80 % dat. 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. Tento přístup se považuje za pokročilejší scénář, protože určíte, které sloupce se mají rozdělit a použít k ověření. Do trénovacích dat zahrnete vlastní sloupce rozdělení CV a určíte 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 má celočíselnou hodnotu 1 nebo 0. Hodnota 1 označuje, že se má řádek použít pro trénování. Hodnota 0 označuje, že se má řádek použít k ověření.

Poznámka:

Ve scénářích cv_split_column_names prognóz není parametr podporován.

Následující příklad obsahuje data bankovního marketingu se dvěma sloupci cv1 rozdělení CV 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.

Nastavení výpočtu metriky pro křížové ověřování

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. Další informace najdete v tématu Vyhodnocení výsledků experimentu automatizovaného strojového 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í datové sady (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žují se tato data za samostatná od trénování a ověřování, aby se zabránilo jakémukoli vlivu předsudků na výsledky testovacího běhu doporučeného modelu. Další informace najdete v tématu trénování, ověřování a testování dat.

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ě ani s parametrycv_split_column_names.cv_splits_indices

AutoMLConfig V objektu pomocí parametru test_data zadejte existující datovou sadu:

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í. Určuje procento trénovací datové sady, které se má použít pro testovací datovou sadu.

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

Tady je několik dalších aspektů práce s testovací datovou sadou:

  • 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 záložní, pokud stratifikované vzorkování není možné.

Poznámka:

Ve scénářích prognóz nemůžete v současné době určit testovací datovou sadu pomocí rozdělení trénování/testu s parametrem test_size .

test_data Předání parametrů test_size do objektu AutoMLConfig automaticky aktivuje spuštění vzdáleného testu 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í. Další informace naleznete v tématu Získání výsledků testovací úlohy.