자동화된 기계 학습에서 학습, 유효성 검사, 교차 유효성 검사 및 테스트 데이터 구성
적용 대상: Python SDK azureml v1
이 문서에서는 자동화된 ML(기계 학습) 실험에 대한 교차 유효성 검사 설정과 함께 학습 데이터 및 유효성 검사 데이터 분할을 구성하는 옵션을 설명합니다. Azure Machine Learning에서 자동화된 ML을 사용하여 여러 기계 학습 모델을 빌드하는 경우 각 자식 실행은 AUC(곡선) 가중치 아래의 정확도 또는 영역과 같은 해당 모델의 품질 메트릭을 계산하여 관련 모델의 유효성을 검사해야 합니다. 이러한 메트릭은 각 모델의 예측 결과를 유효성 검사 데이터의 과거 관찰에서 얻은 실제 레이블과 비교하여 계산합니다. 자동화된 ML 실험은 모델 유효성 검사를 자동으로 수행합니다.
다음 섹션에서는 Azure Machine Learning Python SDK를 사용하여 유효성 검사 설정을 사용자 지정하는 방법을 설명합니다. 유효성 검사 유형에 따라 메트릭을 계산하는 방법에 대한 자세한 내용은 교차 유효성 검사에 대한 메트릭 계산 설정 섹션을 참조하세요. 낮은 코드 또는 코드 없는 환경에 관심이 있는 경우 Azure Machine Learning 스튜디오 자동화된 ML 실험 만들기를 참조하세요.
필수 조건
Azure Machine Learning 작업 영역 작업 영역을 만들려면 작업 영역 리소스 만들기를 참조하세요.
Azure Machine Learning SDK를 사용하여 자동화된 ML 실험을 설정하는 방법에 대해 잘 알고 있습니다. 기본 자동화된 기계 학습 실험 디자인 패턴을 보려면 개체 검색 모델 학습 자습서 또는 Python을 사용하여 AutoML 학습 설정 가이드를 완료합니다.
기계 학습 개념인 학습/유효성 검사 데이터 분할 및 교차 유효성 검사를 이해하고 있어야 합니다. 대략적인 설명은 다음 문서를 참조하세요.
Important
이 문서의 Python 명령을 실행하려면 최신 azureml-train-automl
패키지 버전이 필요합니다.
- 로컬 환경에 최신
azureml-train-automl
패키지를 설치합니다. - 최신
azureml-train-automl
패키지에 대한 자세한 내용은 릴리스 정보를 참조하세요.
기계 학습에서 기본 데이터 분할 및 교차 유효성 검사 설정
기계 학습에서 기본 데이터 분할 및 교차 유효성 검사를 설정하려면 AutoMLConfig 클래스 개체를 사용하여 실험 및 학습 설정을 정의합니다. 다음 예제에서는 필수 매개 변수만 정의됩니다. 및 validation_data
매개 변수는 n_cross_validations
포함되지 않습니다.
참고 항목
예측 시나리오에서는 기본 데이터 분할 및 교차 유효성 검사가 지원되지 않습니다.
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'
)
명시적으로 또는 n_cross_validations
매개 변수를 validation_data
지정하지 않으면 자동화된 ML은 단일 데이터 세트training_data
에 제공된 행 수에 따라 기본 기술을 적용합니다.
학습 데이터 크기 | 유효성 검사 기법 |
---|---|
20,000개 행 이상인 경우 | 학습/유효성 검사 데이터 분할이 적용됩니다. 기본값은 초기 학습 데이터 세트의 10%를 유효성 검사 세트로 사용하는 것입니다. 그러면 해당 유효성 검사 집합이 메트릭 계산에 사용됩니다. |
20,000개 행 이하인 경우 | 교차 유효성 검사 방법이 적용됩니다. 기본 접기 횟수는 행의 수에 따라 달라집니다. - 데이터 세트가 1,000개 미만인 경우 10개의 접이식이 사용됩니다. - 행이 1,000에서 20,000 사이인 경우 세 개의 접이식이 사용됩니다. |
유효성 검사 데이터 세트 제공
유효성 검사 데이터를 제공하는 두 가지 옵션이 있습니다. 단일 데이터 파일로 시작하여 학습 데이터 및 유효성 검사 데이터 집합으로 분할하거나 유효성 검사 집합에 별도의 데이터 파일을 제공할 수 있습니다. 어느 방법을 사용하든 AutoMLConfig
개체의 validation_data
매개 변수가 유효성 검사 집합으로 사용할 데이터를 할당합니다. 이 매개 변수는 Azure Machine Learning 데이터 세트 또는 pandas 데이터 프레임 형식의 데이터 세트만 허용합니다.
유효성 검사 매개 변수를 사용하기 위한 몇 가지 다른 고려 사항은 다음과 같습니다.
- 하나의 유효성 검사 매개 변수(
validation_data
매개 변수 또는n_cross_validations
매개 변수)만 설정할 수 있지만 둘 다 설정할 수는 없습니다. - 매개 변수를
validation_data
사용하는 경우 매개 변수와label_column_name
매개 변수도 지정training_data
해야 합니다.
다음 예제에서는 학습()과 유효성validation_data
검사(training_data
)에 사용할 부분을 dataset
명시적으로 정의합니다.
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'
)
유효성 검사 데이터 세트 크기 제공
유효성 검사 집합 크기를 제공하는 경우 실험에 대한 단일 데이터 세트만 제공합니다. 매개 변수가 validation_data
지정되지 않았으며 제공된 데이터 세트가 매개 변수에 training_data
할당됩니다.
AutoMLConfig
개체에서 유효성 검사를 위해 학습 데이터의 일부를 포함하도록 validation_size
매개 변수를 설정할 수 있습니다. 이 전략의 경우 자동화된 ML 작업은 사용자가 제공한 초기 training_data
에서 유효성 검사 집합을 분할합니다. 값은 0.0에서 1.0 사이여야 합니다(예: 0.2는 유효성 검사 데이터를 위해 데이터의 20%가 유지됨을 의미합니다).
참고 항목
예측 시나리오에서는 매개 변수가 validation_size
지원되지 않습니다.
다음 예제에서는 실험에 대해 단일 dataset
을 제공합니다. training_data
전체 데이터 세트에 액세스하고 유효성 검사를 위해 데이터 세트의 20%가 할당됩니다(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'
)
K-폴드 교차 유효성 검사 수행
k-fold 교차 유효성 검사를 수행하려면 매개 변수를 n_cross_validations
포함하고 접기 수를 정의합니다. 이 매개 변수는 동일한 접기 수에 따라 수행할 교차 유효성 검사의 수를 설정합니다.
참고 항목
DNN(심층 신경망)을 사용하는 분류 시나리오에서는 매개 변수가 n_cross_validations
지원되지 않습니다.
예측 시나리오에 대해서는 교차 유효성 검사가 시계열 예측 모델을 학습시키도록 AutoML 설정에 적용되는 방식을 참조하세요.
다음 예제에서는 교차 유효성 검사를 위해 5개의 접기를 정의합니다. 이 프로세스는 5개의 서로 다른 학습을 실행하며, 각 학습은 4/5의 데이터를 사용합니다. 각 유효성 검사에서는 매번 다른 홀드아웃 접기를 사용하여 1/5의 데이터를 사용합니다. 따라서 메트릭은 5가지 유효성 검사 메트릭의 평균을 사용하여 계산됩니다.
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'
)
몬테카를로 교차 유효성 검사 수행
몬테카를로 교차 유효성 검사를 수행하려면 개체에 매개 변수와 n_cross_validations
매개 변수 AutoMLConfig
를 validation_size
모두 포함합니다.
몬테카를로 교차 유효성 검사에서는 자동화된 ML이 validation_size
매개 변수에 지정된 유효성 검사용 학습 데이터의 일부를 확보한 다음, 나머지 데이터를 학습용으로 할당합니다. 그런 다음 이 프로세스는 매개 변수에 지정된 값에 n_cross_validations
따라 반복되며, 이 값은 매번 임의로 새 학습 및 유효성 검사 분할을 생성합니다.
참고 항목
예측 시나리오에서는 몬테카를로 교차 유효성 검사가 지원되지 않습니다.
다음 예제에서는 교차 유효성 검사를 위해 7개의 접기를 정의하고 유효성 검사를 위해 학습 데이터의 20%를 정의합니다. 이 프로세스는 각 학습에서 데이터의 80%를 사용하는 7가지 학습을 실행합니다. 각 유효성 검사에서는 매번 다른 홀드아웃 접기를 사용하여 데이터의 20%를 사용합니다.
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'
)
사용자 지정 교차 유효성 검사 데이터 접기 지정
또한 사용자 고유의 CV(교차 유효성 검사) 데이터 접기를 제공할 수 있습니다. 이 방법은 분할하고 유효성 검사에 사용할 열을 지정하기 때문에 고급 시나리오로 간주됩니다. 학습 데이터에 사용자 지정 CV 분할 열을 포함하고 매개 변수의 열 이름을 cv_split_column_names
채워서 열을 지정합니다. 각 열은 하나의 교차 유효성 검사 분할을 나타내며 정수 값은 1 또는 0입니다. 값이 1이면 학습에 행을 사용해야 합니다. 값이 0이면 유효성 검사에 행을 사용해야 합니다.
참고 항목
예측 시나리오에서는 매개 변수가 cv_split_column_names
지원되지 않습니다.
다음 예제에는 두 개의 CV 분할 열이 있는 은행 마케팅 데이터가 포함되어 있습니다cv2
.cv1
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']
)
참고 항목
cv_split_column_names
를 training_data
및 label_column_name
과 함께 사용하려면 Azure Machine Learning Python SDK를 1.6.0 이상 버전으로 업그레이드하세요. 이전 SDK 버전의 경우 cv_splits_indices
사용법을 참조하세요. 단, X
및 y
데이터 세트 입력에만 사용된다는 사실을 유의하세요.
교차 유효성 검사에 대한 메트릭 계산 설정
K겹 또는 몬테카를로 교차 유효성 검사를 사용하는 경우 각 유효성 검사 접기에 대해 메트릭이 계산된 후 집계됩니다. 집계 연산은 스칼라 메트릭의 평균과 차트의 합계입니다. 교차 유효성 검사 중에 계산된 메트릭은 모든 접기를 기반으로 하므로 학습 집합의 모든 샘플을 기반으로 합니다. 자세한 내용은 자동화된 ML 실험 결과 계산을 참조하세요.
사용자 지정 유효성 검사 집합 또는 자동으로 선택된 유효성 검사 집합을 사용하는 경우, 모델 평가 메트릭이 학습 데이터가 아니라 해당 유효성 검사 집합에서만 계산됩니다.
테스트 데이터 세트 제공(미리 보기)
Important
이 기능은 현재 공개 미리 보기로 제공됩니다. 이 미리 보기 버전은 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다.
자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.
테스트 데이터를 제공하여 실험을 완료할 때 자동화된 ML이 생성하는 권장 모델을 평가할 수도 있습니다. 테스트 데이터를 제공하는 경우 데이터는 권장 모델의 테스트 실행 결과에 대한 바이어스 영향을 방지하기 위해 학습 및 유효성 검사와 분리된 것으로 간주됩니다. 자세한 내용은 학습, 유효성 검사 및 테스트 데이터를 참조하세요.
Warning
테스트 데이터 세트 기능은 다음과 같은 자동화된 ML 시나리오에 사용할 수 없습니다.
테스트 데이터 세트는 Azure Machine Learning TabularDataset 형식이어야 합니다. AutoMLConfig
개체에서 test_data
및 test_size
매개 변수를 통해 테스트 데이터 세트를 지정할 수 있습니다. 이러한 매개 변수는 상호 배타적이며 동시에 또는 매개 cv_splits_indices
변수를 사용하여 cv_split_column_names
지정할 수 없습니다.
AutoMLConfig
개체에서 매개 변수를 test_data
사용하여 기존 데이터 세트를 지정합니다.
automl_config = AutoMLConfig(task='forecasting',
...
# Provide an existing test dataset
test_data=test_dataset,
...
forecasting_parameters=forecasting_parameters)
테스트 데이터를 직접 제공하는 대신 학습/테스트 분할을 사용하려면 AutoMLConfig
를 만들 때 test_size
매개 변수를 사용합니다. 이 매개 변수는 0.0에서 1.0 사이의 부동 소수점 값이어야 합니다. 테스트 데이터 세트에 사용할 학습 데이터 세트의 백분율을 지정합니다.
automl_config = AutoMLConfig(task = 'regression',
...
# Specify train/test split
training_data=training_data,
test_size=0.2)
다음은 테스트 데이터 세트 작업에 대한 몇 가지 다른 고려 사항입니다.
- 회귀 작업의 경우 무작위 샘플링이 사용됩니다.
- 분류 작업의 경우 계층화된 샘플링이 사용되지만, 계층화된 샘플링이 불가능할 때 임의 샘플링이 대체로 사용됩니다.
참고 항목
예측 시나리오에서는 현재 매개 변수와 함께 test_size
학습/테스트 분할을 사용하여 테스트 데이터 세트를 지정할 수 없습니다.
개체에 test_data
AutoMLConfig
매개 변수를 test_size
전달하면 실험이 완료되면 원격 테스트 실행이 자동으로 트리거됩니다. 이 테스트 실행은 제공된 테스트 데이터를 사용하여 자동화된 ML이 권장하는 최상의 모델을 평가합니다. 자세한 내용은 테스트 작업 결과 가져오기를 참조하세요.