Konfigurera tränings-, validerings-, korsvaliderings- och testdata i automatiserad maskininlärning
GÄLLER FÖR: Python SDK azureml v1
I den här artikeln får du lära dig de olika alternativen för att konfigurera delning av träningsdata och valideringsdata tillsammans med korsvalideringsinställningar för automatiserad maskininlärning, automatiserad ML, experiment.
När du använder automatiserad ML för att skapa flera ML-modeller i Azure Mašinsko učenje måste varje underordnad körning verifiera den relaterade modellen genom att beräkna kvalitetsmåtten för modellen, till exempel noggrannhet eller AUC-viktad. Dessa mått beräknas genom att jämföra förutsägelserna som gjorts med varje modell med verkliga etiketter från tidigare observationer i valideringsdata. Läs mer om hur mått beräknas baserat på valideringstyp.
Automatiserade ML-experiment utför modellverifiering automatiskt. I följande avsnitt beskrivs hur du ytterligare kan anpassa valideringsinställningar med Azure Mašinsko učenje Python SDK.
En upplevelse med låg kod eller ingen kod finns i Skapa dina automatiserade maskininlärningsexperiment i Azure Mašinsko učenje studio.
Förutsättningar
För den här artikeln behöver du
En Azure Machine Learning-arbetsyta. Information om hur du skapar arbetsytan finns i Skapa arbetsyteresurser.
Kunskaper om hur du konfigurerar ett automatiserat maskininlärningsexperiment med Azure Mašinsko učenje SDK. Följ självstudien eller instruktioner för att se de grundläggande designmönstren för automatiserade maskininlärningsexperiment.
Förståelse för delningar av tränings-/valideringsdata och korsvalidering som maskininlärningskoncept. En förklaring på hög nivå finns i
Viktigt!
Python-kommandona i den här artikeln kräver den senaste azureml-train-automl
paketversionen.
- Installera det senaste
azureml-train-automl
paketet i din lokala miljö. - Mer information om det senaste
azureml-train-automl
paketet finns i viktig information.
Standarddatadelningar och korsvalidering i maskininlärning
Använd AutoMLConfig-objektet för att definiera dina experiment- och träningsinställningar. Observera att endast de obligatoriska parametrarna definieras i följande kodfragment, dvs. parametrarna för n_cross_validations
eller validation_data
inte ingår.
Kommentar
Standarddatadelningar och korsvalidering stöds inte i prognosscenarier.
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'
)
Om du inte uttryckligen anger antingen en validation_data
parameter eller n_cross_validations
parameter tillämpar automatiserad ML standardtekniker beroende på antalet rader som anges i den enskilda datamängden training_data
.
Träningsdatastorlek | Valideringsteknik |
---|---|
Större än 20 000 rader | Delning av tränings-/valideringsdata tillämpas. Standardvärdet är att ta 10 % av den inledande träningsdatauppsättningen som verifieringsuppsättning. Verifieringsuppsättningen används i sin tur för måttberäkning. |
Mindre än 20 000 rader | Metoden för korsvalidering tillämpas. Standardantalet vikningar beror på antalet rader. Om datamängden är mindre än 1 000 rader används 10 vikter. Om raderna är mellan 1 000 och 20 000 används tre veck. |
Ange valideringsdata
I det här fallet kan du antingen börja med en enda datafil och dela upp den i träningsdata och valideringsdatauppsättningar, eller så kan du ange en separat datafil för verifieringsuppsättningen. Hur som helst tilldelar parametern validation_data
i objektet AutoMLConfig
vilka data som ska användas som verifieringsuppsättning. Den här parametern accepterar endast datauppsättningar i form av en Azure Mašinsko učenje-datauppsättning eller Pandas-dataram.
Kommentar
Parametern validation_data
kräver att parametrarna training_data
och label_column_name
också anges. Du kan bara ange en valideringsparameter, dvs. du kan bara ange antingen validation_data
eller n_cross_validations
, inte båda.
I följande kodexempel definieras uttryckligen vilken del av de angivna data dataset
som ska användas för träning och validering.
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'
)
Ange storlek för valideringsuppsättning
I det här fallet tillhandahålls endast en enda datauppsättning för experimentet. Parametern validation_data
har alltså inte angetts och den angivna datamängden tilldelas parametern training_data
.
I objektet AutoMLConfig
kan du ange att parametern validation_size
ska innehålla en del av träningsdata för validering. Det innebär att valideringsuppsättningen delas upp av automatiserad ML från den första training_data
angivna. Det här värdet ska vara mellan 0,0 och 1,0 icke-inkluderande (till exempel innebär 0,2 att 20 % av data lagras för valideringsdata).
Kommentar
Parametern validation_size
stöds inte i prognosscenarier.
Se följande kodexempel:
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'
)
Korsvalidering av K-vik
Om du vill utföra korsvalidering av k-fold inkluderar du parametern n_cross_validations
och anger den till ett värde. Den här parametern anger hur många korsvalideringar som ska utföras, baserat på samma antal veck.
Kommentar
Parametern n_cross_validations
stöds inte i klassificeringsscenarier som använder djupa neurala nätverk.
För prognostiseringsscenarier, se hur korsvalidering tillämpas i Konfigurera AutoML för att träna en prognosmodell för tidsserier.
I följande kod definieras fem gånger för korsvalidering. Därför fem olika utbildningar, varje träning med 4/5 av data och varje validering med hjälp av 1/5 av data med olika undantagsdelegering varje gång.
Därför beräknas mått med medelvärdet av de fem valideringsmåtten.
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-korsvalidering
Om du vill utföra Monte Carlo-korsvalidering tar du med både parametrarna validation_size
och n_cross_validations
i objektet AutoMLConfig
.
För Monte Carlo-korsvalidering avsätter automatiserad ML den del av träningsdata som anges av parametern validation_size
för validering och tilldelar sedan resten av data för träning. Den här processen upprepas sedan baserat på det värde som anges i parametern n_cross_validations
, vilket genererar nya tränings- och valideringsdelningar, slumpmässigt, varje gång.
Kommentar
Monte Carlo-korsvalidering stöds inte i prognosscenarier.
Följande kod definierar, 7 gånger för korsvalidering och 20 % av träningsdata ska användas för validering. Därför använder 7 olika utbildningar 80 % av data och varje validering använder 20 % av data med olika undantagsdelegeringar varje gång.
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'
)
Ange anpassade datadelegeringar för korsvalidering
Du kan också ange egna datadelegeringar för korsvalidering (CV). Detta anses vara ett mer avancerat scenario eftersom du anger vilka kolumner som ska delas upp och användas för validering. Inkludera anpassade CV-delade kolumner i dina träningsdata och ange vilka kolumner genom att fylla i kolumnnamnen i parametern cv_split_column_names
. Varje kolumn representerar en korsvalideringsdelning och fylls med heltalsvärdena 1 eller 0 – där 1 anger att raden ska användas för träning och 0 anger att raden ska användas för validering.
Kommentar
Parametern cv_split_column_names
stöds inte i prognosscenarier.
Följande kodfragment innehåller bankmarknadsföringsdata med två CV-delade kolumner "cv1" och "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']
)
Kommentar
Om du vill använda cv_split_column_names
med training_data
och label_column_name
uppgraderar du Din Azure Mašinsko učenje Python SDK version 1.6.0 eller senare. För tidigare SDK-versioner kan du använda cv_splits_indices
, men observera att det endast används med X
och y
datauppsättningsindata.
Måttberäkning för korsvalidering i maskininlärning
När antingen k-fold eller Monte Carlo-korsvalidering används beräknas måtten på varje valideringsdelegering och aggregeras sedan. Aggregeringsåtgärden är ett genomsnitt för skalära mått och en summa för diagram. Mått som beräknas under korsvalidering baseras på alla vikningar och därför alla exempel från träningsuppsättningen. Läs mer om mått i automatiserad maskininlärning.
När antingen en anpassad valideringsuppsättning eller en automatiskt vald valideringsuppsättning används beräknas modellutvärderingsmått från endast den valideringsuppsättningen, inte träningsdata.
Ange testdata (förhandsversion)
Viktigt!
Den här funktionen är för närvarande i allmänt tillgänglig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade.
Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.
Du kan också tillhandahålla testdata för att utvärdera den rekommenderade modellen som automatiserad ML genererar åt dig när experimentet har slutförts. När du anger testdata anses de vara separata från träning och validering, för att inte påverka resultatet av testkörningen av den rekommenderade modellen. Läs mer om tränings-, validerings- och testdata i automatiserad ML.
Varning
Den här funktionen är inte tillgänglig för följande automatiserade ML-scenarier
Testdatauppsättningar måste vara i form av en Azure Mašinsko učenje TabularDataset. Du kan ange en testdatauppsättning med parametrarna test_data
och test_size
i objektet AutoMLConfig
. Dessa parametrar är ömsesidigt uteslutande och kan inte anges samtidigt eller med cv_split_column_names
eller cv_splits_indices
.
Med parametern test_data
anger du en befintlig datauppsättning som ska skickas till objektet AutoMLConfig
.
automl_config = AutoMLConfig(task='forecasting',
...
# Provide an existing test dataset
test_data=test_dataset,
...
forecasting_parameters=forecasting_parameters)
Om du vill använda en tränings-/testdelning i stället för att tillhandahålla testdata direkt använder du parametern test_size
när du AutoMLConfig
skapar . Den här parametern måste vara ett flyttalsvärde mellan 0,0 och 1,0 exklusivt och anger procentandelen av träningsdatauppsättningen som ska användas för testdatauppsättningen.
automl_config = AutoMLConfig(task = 'regression',
...
# Specify train/test split
training_data=training_data,
test_size=0.2)
Kommentar
För regressionsaktiviteter används slumpmässig sampling.
För klassificeringsuppgifter används stratifierad sampling, men slumpmässig sampling används som fallback när stratifierad sampling inte är möjlig.
Prognostisering stöder för närvarande inte att ange en testdatauppsättning med hjälp av en tränings-/testdelning med parametern test_size
.
Om du skickar parametrarna test_data
eller test_size
till AutoMLConfig
utlöses automatiskt en fjärrtestkörning när experimentet har slutförts. Den här testkörningen använder de angivna testdata för att utvärdera den bästa modellen som automatiserad ML rekommenderar. Läs mer om hur du hämtar förutsägelserna från testkörningen.
Nästa steg
Så här tränar du en prognosmodell för tidsserier automatiskt.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för