Создание комплексного решения машинного обучения менее чем за час
Мотивация
В предыдущей статье Прогнозирование медицинских расходов с помощью AzureML и линейной регрессии SkLearn я создал регрессионную модель. Конечно, было большое количество строк кода. AzureML предлагает интерфейс перетаскивания под названием AzureML Designer. Опыт и ощущения аналогичны RapidMiner.
Сценарий
Используя общий Titanic Dataset, создайте классификационную модель, чтобы предсказать, выжил ли пассажир во время аварии на Титанике в 1912 году. Возможно, анализ можно использовать для проверки безопасности.
Я буду использовать возраст, пол и стоимость билета, чтобы предсказать, выжил пассажир или нет.
Конвейер конструктора Azure
Соответствующие активы найдены здесь.
Создать актив данных
После подключения к рабочей области AzureML давайте создадим актив данных из необработанного CSV-файла, загруженного из Kaggle.
default_ds = ws.get_default_datastore() if 'titanic dataset' not in ws.datasets: Dataset.File.upload_directory(src_dir='data', target=DataPath(default_ds, 'titanic-data/') ) #Create a tabular dataset from the path on the datastore (this may take a short while) tab_data_set = Dataset.Tabular.from_delimited_files(path=(default_ds, 'titanic-data/titanic.csv')) # Register the tabular dataset try: tab_data_set = tab_data_set.register(workspace=ws, name='titanic dataset', description='titanic data', tags = {'format':'CSV'}, create_new_version=True) print('Dataset registered.') except Exception as ex: print(ex) else: print('Dataset already registered.')
Актив данных можно найти в колонке «Данные» AzureML.
Настройка вычислений для конвейера
Вычисления необходимы конвейеру для обработки необходимых шагов для обработки данных и обучения.
from azureml.core.compute import ComputeTarget, AmlCompute from azureml.core.compute_target import ComputeTargetException cluster_name = "sweetdreams" try: # Check for existing compute target pipeline_cluster = ComputeTarget(workspace=ws, name=cluster_name) print('Found existing cluster, use it.') except ComputeTargetException: # If it doesn't already exist, create it try: compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_DS11_V2', max_nodes=2) pipeline_cluster = ComputeTarget.create(ws, cluster_name, compute_config) pipeline_cluster.wait_for_completion(show_output=True) except Exception as ex: print(ex)
Теперь мы готовы построить наш конвейер.
Доступ к конструктору
Выберите блейд «Дизайнер» в пользовательском интерфейсе AzureML и выберите «Создать новый конвейер с использованием классических компонентов предварительной сборки».
Подготовив вычислительный кластер, мы должны подключить его к конвейеру с помощью настроек.
Создайте и запустите конвейер обучения
Ниже приведен очень простой конвейер для сквозной модели классификации.
Подробное описание шагов:
Примечание. Параметры компонента можно найти в моих изображениях на Github
- Titanic dataset
– извлекает хранилище данных, содержащее наши необработанные данные. Хранилище данных - Выбрать столбцы в наборе данных
. Из базового набора данных выберите интересующие столбцы, такие как функции (наши предикторы) и столбец с метками (то, что мы пытаемся предсказать). - Очистить отсутствующие данные
– выполнить импутацию отсутствующих данных или выбрать полное удаление строки из конвейера. - Нормализация данных
– Выполните нормализацию, такую как стандартизация MinMax, для непрерывных переменных (например, возраст и стоимость проезда)
– этот шаг не является обязательным для алгоритмов дерева решений, но включен, например< br /> — обычно используется для алгоритмов на основе расстояния или моделей глубокого обучения для обеспечения точности и производительности. - Разделить данные
— разделить данные на обучающий и тестовый наборы.
— можно определить случайное начальное число и долю тестового набора. Пример. (.2 или 20% данных удерживаются для тестирования
— отсюда узлы начинают расходиться, где обучающий набор будет подключен к «Модели обучения», а тестовые данные будут отправлены в «Модель оценки». - Усиленное дерево решений с двумя классами
— выбранный алгоритм для выполнения машинного обучения.
- Здесь можно ввести гиперпараметры.
- В этом примере нет настройки гиперпараметров. - Обучение модели
— на основе выбранного алгоритма и обучающих данных выполните обучение модели, когда оно достигает своего целевого порога или количество итераций было выполнено
— модель с ее обученными весами будет храниться как артефакт в AzureML. - Оценочная модель
. Из обученной модели запустите прогнозы, используя обучающий и тестовый наборы. - Оценить модель
– сравните результаты на основе выбранного показателя оценки, такого как AUC, точность, полнота или точность.
Отправить конвейер
Мониторинг конвейера
В колонке «Задания» AzureML вы можете отслеживать ход конвейера и получать более подробную информацию.
Создайте и запустите конвейер вывода
После того, как мы будем удовлетворены конвейером обучения, выберите «Создать конвейер вывода», и AzureML автоматически настроит компоненты.
Чтобы конвейер работал, вам потребуется удалить компоненты, такие как "Оценить модель", "Выбрать столбцы в наборе данных" и компоненты первого преобразования, поскольку они не имеют отношения к выводам и вызовут ошибку. . Вам также понадобится несколько компонентов, чтобы сделать вывод.
Выполнение скрипта Python содержит следующий код для обработки возвращаемого прогноза.
# The script MUST contain a function named azureml_main # which is the entry point for this module. # imports up here can be used to import pandas as pd # The entry point function MUST have two input arguments. # If the input port is not connected, the corresponding # dataframe argument will be None. # Param<dataframe1>: a pandas.DataFrame # Param<dataframe2>: a pandas.DataFrame def azureml_main(dataframe1 = None, dataframe2 = None): scored_results = dataframe1[['Scored Labels', 'Scored Probabilities']] scored_results.rename(columns={'Scored Labels':'Survived Prediction', 'Scored Probabilities':'Survived Probability'}, inplace=True) return scored_results
После того, как конвейер организован, мы готовы представить работу.
После завершения конвейера представление будет выглядеть примерно так.
Создайте конечную точку
Когда нас устроит конвейер вывода, мы выбираем «Развернуть», и AzureML начнет подготавливать конечную точку.
Делайте выводы
После того, как конечная точка будет успешно создана, вы можете запускать выводы! Дата ввода из «Теста» была предоставлена нами компонентом «Ввести данные вручную» конвейера вывода.
Вы можете использовать вкладку «Использовать», чтобы получить URL-адрес обслуживания и ключи API. Поскольку это тестовая конечная точка, она доступна в общедоступном Интернете, но для производственной нагрузки вам следует рассмотреть возможность использования брандмауэра приложений и достаточного количества вычислительных ресурсов для обработки ожидаемых запросов.
Резюме/выводы/заключение
- Быстрая проверка концепции
. Хотя AzureML предлагает AutoML для получения необработанных данных и автоматического запуска подготовки данных и алгоритмов, вы, возможно, уже знаете свой подход или компания уже определилась с моделью и алгоритмом.< br /> — вы можете использовать AzureML Designer, чтобы быстро проверить концепцию, прежде чем тратить часы на разработку в блокноте. - Использование журналов
— этапы конвейера предлагают выходные данные и журналы, в которых можно просматривать журналы и предварительный просмотр данных. Я нашел это невероятно полезным, чтобы увидеть, работает ли конвейер, как ожидалось, или есть ли журналы ошибок, что позволяет найти основную причину. Это подробное представление помогает в устранении неполадок, а не в сканировании всей записной книжки или скрипта Python! - Необходимо, чтобы Microsoft внедрила возможность экспорта для конструктора AzureML
. В настоящее время конвейеры можно сохранять в рабочих областях, а URL-адреса можно использовать совместно. Но нет возможности экспортировать конфигурацию конвейера или даже PDF. Если Microsoft сможет упаковать конвейеры в облегченную форму, такую как JSON или XML, тогда конвейеры могут быть более удобными для работы между организациями и рабочими пространствами Azure. - Выводы рынка
–на основе бесед с специалистами по обработке и анализу данных в полевых условиях, рабочие нагрузки машинного обучения становятся все более операциональными, а приложения на рынке более доступны для нетехнических специалистов. Существует больше предложений для машинного обучения на основе графического интерфейса, или приложение пишет код для вас на основе заданных параметров. Я не ожидаю, что специалисты по данным останутся без работы, потому что они должны выполнять рабочую нагрузку, интерпретировать модель и рекомендовать решения заинтересованным сторонам.
Ссылки/Ресурсы/Благодарности
- https://azure.microsoft.com/en-us/products/machine-learning/designer/#features
- Whizlabs развертывает и тестирует модельную лабораторию