Настройка обучения, проверки, перекрестной проверки и проверочных данных в автоматизированном машинном обучении
ОБЛАСТЬ ПРИМЕНЕНИЯ: Пакет SDK для Python версии 1
В этой статье вы узнаете о различных вариантах настройки обучающих данных и данных проверки, а также параметров перекрестной проверки для автоматизированного машинного обучения, автоматизированного ML и экспериментов.
В Машинное обучение Azure при использовании автоматизированного машинного обучения для построения нескольких моделей машинного обучения каждому дочернему выполнению необходимо проверить связанную модель, вычисляя метрики качества для этой модели, такие как точность или AUC с весовым коэффициентом. Эти метрики рассчитываются путем сравнения прогнозов, производимых с каждой моделью, с реальными метками прошлых наблюдений в данных проверки. Узнайте больше о том, как рассчитываются метрики на основе типа проверки.
Автоматические эксперименты ML выполняют проверку модели автоматически. В следующих разделах описано, как можно дополнительно настроить параметры проверки с помощью пакета SDK для машинного обучения Azure Python.
Сведения о низком коде или работе без кода см. в статьеСоздание автоматических экспериментов машинного обучения в машинное обучение Azure Studio.
Необходимые компоненты
Для работы с этой статьей вам потребуется следующее:
Рабочая область Машинного обучения Azure. Сведения о создании рабочей области см. в разделе Создание ресурсов рабочей области.
Знакомство с настройкой автоматизированного эксперимента машинного обучения с помощью пакета SDK для Машинное обучение Azure. Следуйте инструкциям учебника или практического руководства, чтобы ознакомиться с основными конструктивными шаблонами экспериментов автоматизированного машинного обучения.
Анализ данных об обучении и проверке разбивается и перекрестная проверка в качестве концепций машинного обучения. Подробное описание,
Внимание
Для выполнения команд Python из этой статьи требуется последняя версия пакета azureml-train-automl
.
- Установите последнюю версию пакета
azureml-train-automl
в локальной среде. - Сведения о последней версии пакета
azureml-train-automl
см. в заметках о выпуске.
Разбиение и перекрестная проверка данных по умолчанию в автоматизированном машинном обучении
Используйте объект AutoMLConfig для определения параметров эксперимента и обучения. В следующем фрагменте кода обратите внимание, что определены только обязательные параметры, которые являются параметрами для n_cross_validations
или validation_data
не включены.
Примечание.
Сценарии прогнозирования не поддерживают разделение данных по умолчанию и перекрестную проверку.
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'
)
Если параметр validation_data
или n_cross_validations
не задан явно, автоматический алгоритм ML применяет методы по умолчанию в зависимости от числа строк, предоставленных в одном наборе данных training_data
.
Объем данных обучения | Метод проверки |
---|---|
Более 20 000 строк | Применяется разбиение данных по обучению и проверке. Значение по умолчанию — использовать 10 % начального набора данных для обучения в качестве набора проверки. В свою очередь, этот набор проверки используется для вычисления метрик. |
Менее 20 000 строк | Применяется подход перекрестной проверки. Стандартное количество сверток зависит от числа строк. Если набор данных содержит менее 1000 строк, то используется 10 сверток. Если имеется от 1000 до 20 000 строк, то используются три свертки. |
Предоставление данных проверки
В этом случае можно начать с одного файла данных и разделить его на обучающие данные и наборы данных проверки. Кроме того, можно указать отдельный файл данных для набора проверки. В любом случае параметр validation_data
в объектеAutoMLConfig
назначает, какие данные следует использовать в качестве набора проверки. Этот параметр принимает только наборы данных в форме набор данных машинного обучения Azure или инфраструктура данных Pandas.
Примечание.
Для параметра validation_data
также нужно задать параметры training_data
и label_column_name
. Вы можете задать только один параметр проверки, то есть указать или validation_data
, или n_cross_validations
.
В следующем примере кода явно определяется, какая часть предоставленных данных в 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
не поддерживается в сценариях предсказания.
См. следующий пример кода.
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-сгиба, включите параметрn_cross_validations
и присвойте ему значение. Этот параметр задает количество выполняемых перекрестных проверок на основе того же числа сверток.
Примечание.
Параметр n_cross_validations
не поддерживается в сценариях классификации, использующих глубокие нейронные сети.
Сведения о сценариях прогнозирования см. в статье о применении перекрестной проверки в разделе Настройка AutoML для обучения модели прогнозирования временных рядов.
В следующем коде определяется пять сверток для перекрестной проверки. Таким образом, пять различных курсов обучения, каждое обучение с использованием 4/5 данных и каждая проверка с использованием 1/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'
)
Перекрестная проверка Монте-Карло
Чтобы выполнить перекрестную проверку Монте-Карло, включите оба параметра validation_size
иn_cross_validations
в объект AutoMLConfig
.
Для перекрестной проверки Монте-Карло автоматически ML записывает часть обучающих данных, указанных в validation_size
параметре, для проверки, а затем назначит остальные данные для обучения. Затем этот процесс повторяется в зависимости от значения, указанного в параметреn_cross_validations
; в результате каждый раз в случайном порядке создаются новые разбиения на обучение и проверку.
Примечание.
Перекрестная проверка Монте-Карло не поддерживается в сценариях прогнозирования.
Следующий код определяет, что 7 сверток для перекрестной проверки и 20 % обучающих данных должны использоваться для проверки. Таким образом, 7 различных курсов обучения; каждое обучение использует 80 % данных, и каждая проверка использует 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_split_column_names
. Каждый столбец представляет одну разбивку перекрестной проверки и заполняется целыми значениями 1 или 0, где 1 означает, что строка должна использоваться для обучения, а значение 0 указывает, что строка должна использоваться для проверки.
Примечание.
Параметр cv_split_column_names
не поддерживается в сценариях предсказания.
В следующем фрагменте кода содержатся данные по банковскому маркетингу с двумя столбцами "cv1" и "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']
)
Примечание.
Чтобы использовать cv_split_column_names
с training_data
и label_column_name
, обновите пакет SDK для машинное обучение Azure Python версии 1.6.0 или более поздней. Сведения о предыдущих версиях пакета SDK см. в разделе Использование cv_splits_indices
, но обратите внимание, что он используется только с входными данными набора данных X
и y
.
Вычисление метрик для перекрестной проверки в машинном обучении
При использовании перекрестной проверки k-сгиба или Монте-Карло, метрики вычисляются по каждой из сверток, а затем суммируются. Статистическая операция представляет собой среднее значение для скалярных метрик и сумму для диаграмм. Метрики, вычисленные во время перекрестной проверки, основываются на всех сверток, и поэтому все образцы из обучающего набора. Узнайте больше о метриках в автоматизированном машинном обучении.
Если используется настраиваемый или автоматически выбранный набор проверки, метрики оценки модели вычисляются только по этому набору проверки, а не по обучающим данным.
Предоставление проверочных данных (предварительная версия)
Внимание
Эта функция сейчас доступна в виде общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания. Ее не следует использовать для производственных рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены.
Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.
Вы также можете предоставить проверочные данные для оценки рекомендуемой модели, генерируемой автоматическим ML после завершения эксперимента. При предоставлении тестовых данных они рассматриваются отдельно от обучения и проверки, чтобы не исказить результаты тестового запуска рекомендуемой модели. См. дополнительные сведения об обучении, проверке и проверочных данных в автоматизированном ML.
Предупреждение
Эта функция недоступна для следующих сценариев автоматизированного машинного обучения:
- Задачи компьютерного зрения
- Многие модели и обучение прогнозированию иерархических временных рядов (предварительная версия)
- Задачи прогнозирования, в которых активировано использование глубоких нейронных сетей обучения (DNN)
- Запуск автоматизированного ML из локальных вычислений или кластеров Azure Databricks
Проверочные наборы данных должны быть представлены в виде табличного набора данных Машинного обучения Azure. Проверочный набор данных можно указать с помощью параметров test_data
и test_size
в AutoMLConfig
объекте. Эти параметры являются взаимоисключающими и не могут быть указаны одновременно или с помощью cv_split_column_names
или cv_splits_indices
.
С помощью параметра test_data
укажите существующий набор данных для передачи в AutoMLConfig
объект.
automl_config = AutoMLConfig(task='forecasting',
...
# Provide an existing test dataset
test_data=test_dataset,
...
forecasting_parameters=forecasting_parameters)
Чтобы использовать разделение данных для обучения/тестирования вместо непосредственного предоставления проверочных данных, необходимо использовать test_size
параметр при создании AutoMLConfig
. Этот параметр должен иметь значение с плавающей запятой в диапазоне от 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
или test_size
в AutoMLConfig
удаленный тестовый запуск автоматически активируется после завершения эксперимента. Проверочные данные, предоставленные для тестового запуска, используются для оценки наилучшей модели, рекомендованной автоматическим ML. Узнайте больше о получении прогнозов из тестового запуска.
Следующие шаги
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по