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:
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 Postupujte podle kurzu nebo návodu, abyste viděli základní vzory návrhu experimentů automatizovaného strojového učení.
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í na vysoké úrovni:
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.
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_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.
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í.
Upozorňující
Tato funkce není k dispozici 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ě 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 AutoMLConfig
souboru , 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
Postup automatického trénování modelu prognózy časových řad
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro