Поделиться через


Настройка обучения, проверки, перекрестной проверки и тестирования данных в автоматизированном машинном обучении

ОБЛАСТЬ ПРИМЕНЕНИЯ: Пакет SDK для Python версии 1

В этой статье описаны варианты настройки обучающих данных и разделения данных проверки вместе с параметрами перекрестной проверки для экспериментов автоматизированного машинного обучения (автоматизированного машинного обучения). В Машинное обучение Azure при использовании автоматизированного машинного обучения для создания нескольких моделей машинного обучения каждый дочерний запуск должен проверить связанную модель, вычисляя метрики качества для этой модели, например точность или область под кривой (AUC). Эти метрики рассчитываются путем сравнения прогнозов, производимых с каждой моделью, с реальными метками прошлых наблюдений в данных проверки. Автоматические эксперименты ML выполняют проверку модели автоматически.

В следующих разделах описано, как настроить параметры проверки с помощью пакета SDK для Python Машинное обучение Azure. Дополнительные сведения о том, как вычисляются метрики на основе типа проверки, см. в разделе "Настройка метрики" для перекрестной проверки . Если вы интересны в низком коде или без кода, см. статью "Создание экспериментов автоматизированного машинного обучения" в Студия машинного обучения Azure.

Необходимые компоненты

Внимание

Для выполнения команд Python из этой статьи требуется последняя версия пакета 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'
                            )

Если явно не указать validation_data или n_cross_validations параметр, автоматизированное машинное обучение применяет методы по умолчанию в зависимости от количества строк, предоставленных в одном наборе training_dataданных.

Объем данных обучения Метод проверки
Более 20 000 строк Применяется разбиение данных по обучению и проверке. Значение по умолчанию — использовать 10 % начального набора данных для обучения в качестве набора проверки. В свою очередь, этот набор проверки используется для вычисления метрик.
Менее 20 000 строк Применяется подход перекрестной проверки. Стандартное количество сверток зависит от числа строк.
— Если набор данных меньше 1000 строк, используется 10 сверток.
— Если строки находятся в диапазоне от 1000 до 20 000, используются три свертывания.

Предоставление набора данных проверки

У вас есть два варианта предоставления данных проверки. Вы можете начать с одного файла данных и разделить его на обучающие данные и наборы данных проверки или предоставить отдельный файл данных для набора проверки. В любом случае параметр validation_data в объектеAutoMLConfig назначает, какие данные следует использовать в качестве набора проверки. Этот параметр принимает только наборы данных в форме набор данных машинного обучения Azure или инфраструктура данных Pandas.

Ниже приведены некоторые другие рекомендации по работе с параметрами проверки:

  • Можно задать только один параметр проверки, validation_data параметр или n_cross_validations параметр, но не оба.
  • При использовании validation_data параметра необходимо также указать training_data параметры и label_column_name параметры.

В следующем примере явно определяется, какая часть используемого dataset для обучения (training_data) и для проверки (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'
                            )

Укажите размер набора данных проверки

При указании размера набора проверки вы предоставляете только один набор данных для эксперимента. Параметр validation_data не указан, и предоставленный набор данных назначается параметру training_data .

В объекте AutoMLConfig можно задать параметр validation_size для удержания части обучающих данных для проверки. Для этой стратегии автоматизированное задание машинного обучения разбивает набор проверки от исходного 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-сверток, необходимо включить n_cross_validations параметр и определить количество сверток. Этот параметр задает количество выполняемых перекрестных проверок на основе того же числа сверток.

Примечание.

В сценариях классификации, использующих глубокие нейронные сети (DNN), 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 в параметре, который создает новые расщепления обучения и проверки при каждом разе.

Примечание.

В сценариях прогнозирования перекрестная проверка Монте-Карло не поддерживается.

В следующем примере определяются семь сверток для перекрестной проверки и 20% обучающих данных для проверки. Процесс выполняет семь различных учебных занятий, где каждый обучающий курс использует 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 в данные обучения и указываете, какие столбцы заполняются именами столбцов в параметре cv_split_column_names . Каждый столбец представляет один разбиение между проверкой и имеет целочисленное значение 1 или 0. Значение 1 указывает, что строка должна использоваться для обучения. Значение 0 указывает, что строка должна использоваться для проверки.

Примечание.

В сценариях cv_split_column_names прогнозирования параметр не поддерживается.

В следующем примере содержатся маркетинговые данные банка с двумя разделенными столбцами cv1 CV и 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 после завершения эксперимента. Если вы предоставляете тестовые данные, данные считаются отдельными от обучения и проверки, чтобы предотвратить любое влияние предвзятости на результаты тестового выполнения рекомендуемой модели. Дополнительные сведения см. в разделе "Обучение", "Проверка" и "Тестовые данные".

Проверочные наборы данных должны быть представлены в виде табличного набора данных Машинного обучения Azure. Проверочный набор данных можно указать с помощью параметров test_data и test_size в AutoMLConfig объекте. Эти параметры являются взаимоисключающими и не могут быть указаны одновременно или с параметрамиcv_split_column_names.cv_splits_indices

AutoMLConfig В объекте test_data используйте параметр для указания существующего набора данных:

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. Дополнительные сведения см. в разделе "Получение результатов тестового задания".