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
Pracovní prostor služby Azure Machine Learning. Pokud chcete vytvořit pracovní prostor, přečtěte si téma Vytvoření prostředků pracovního prostoru.
Znalost nastavení experimentu automatizovaného strojového učení pomocí sady Azure Machine Learning SDK Pokud chcete zobrazit základní vzory návrhu experimentů automatizovaného strojového učení, dokončete kurz trénování modelu rozpoznávání objektů nebo průvodce nastavením autoML pomocí Pythonu.
Znalost rozdělení dat trénování/ověřování a křížového ověřování jako konceptů strojového učení Vysvětlení vysoké úrovně najdete v následujících článcích:
Důležité
Příkazy Pythonu v tomto článku vyžadují nejnovější azureml-train-automl
verzi balíčku.
- Nainstalujte nejnovější
azureml-train-automl
balíček do místního prostředí. - Podrobnosti o nejnovějším
azureml-train-automl
balíčku najdete v poznámkách k verzi.
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, nebon_cross_validations
parametr, ale ne obojí. - Při použití parametru
validation_data
musíte zadattraining_data
také parametry alabel_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_name
training_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.
Upozorňující
Funkce testovací datové sady není dostupná pro následující scénáře automatizovaného strojového 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ě 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.