В этой статье вы узнаете, как автоматически создать регрессионную модель для прогнозирования цен на проезд в такси, используя возможности автоматизированного машинного обучения в службе машинного обучения Azure.

Кроме того, вы узнаете, как запустить процесс автоматизированного машинного обучения, который позволяет выбирать алгоритм и настраивать гиперпараметры. Автоматизированное машинное обучение перебирает множество комбинаций алгоритмов и гиперпараметров, пока не найдет лучшую модель на основе вашего критерия.

В частности, вы изучите следующие задачи:

  1. Автоматическое обучение регрессионной модели.
  2. Запустите модель локально с настраиваемыми параметрами.
  3. Изучите результаты своей модели.

1. Автоматическое обучение регрессионной модели

В этой статье я предполагаю, что вы уже загрузили данные из Открытых наборов данных Azure и выполнили этапы подготовки данных в этом руководстве для Данные такси Нью-Йорка, чтобы их можно было использовать для построения нашей модели машинного обучения.

Настроить рабочее пространство

Давайте начнем с создания объекта нашей рабочей области из существующей рабочей области.

Рабочая область - это класс, который принимает вашу подписку Azure и информацию о ресурсах. Он также создает облачный ресурс для мониторинга и отслеживания прогонов вашей модели. В частности, Workspace.from_config() читает файл config.json и загружает данные аутентификации в объект с именем ws.

ws используется во всем остальном коде в этом руководстве:

Разделите данные на обучающие и тестовые наборы

Вы можете начать с разделения данных на обучающий и тестовый наборы, используя функцию train_test_split в библиотеке sklearn. Эта функция разделяет данные на x, функции, набор данных для обучения модели и y, значения для прогнозирования, набор данных для тестирования.

Параметр test_size определяет процент данных, выделяемых для тестирования. Параметр random_state устанавливает начальное значение для генератора случайных чисел, так что ваши разбиения на поезд-тест всегда детерминированы:

Цель этого шага - получить точки данных для тестирования готовой модели, которые не использовались для обучения модели, чтобы измерить истинную точность. Другими словами, хорошо обученная модель должна уметь делать точные прогнозы на основе данных, которых она еще не видела.

Теперь у вас есть необходимые пакеты и данные, готовые для автоматического обучения вашей модели.

2. Запустите модель локально с пользовательскими параметрами.

Для автоматического обучения модели выполните следующие действия:

  • Определите настройки для запуска эксперимента. Прикрепите данные тренировки к конфигурации и измените настройки, управляющие процессом обучения.
  • Отправьте эксперимент для настройки модели. После отправки эксперимента процесс повторяется с использованием различных алгоритмов машинного обучения и настроек гиперпараметров, соблюдая определенные вами ограничения. Он выбирает наиболее подходящую модель, оптимизируя показатель точности.

Определите настройки для автогенерации и настройки

На изображении ниже вы можете увидеть полный список настроек:

Отправка эксперимента с этими настройками по умолчанию займет примерно 10–15 минут, но если вы хотите сократить время выполнения, уменьшите количество итераций или iteration_timeout_minutes.

Используйте определенные вами настройки обучения в качестве параметра объекта AutoMLConfig. Кроме того, укажите данные для обучения и тип модели, в данном случае это regression:

Обучите модель автоматической регрессии

Запустите эксперимент для локального запуска:

  1. Передайте в эксперимент заданный объект automated_ml_config.
  2. Установите для вывода значение True, чтобы просмотреть прогресс во время эксперимента:

Показанные выходные данные обновляются в реальном времени по мере выполнения эксперимента. Для каждой итерации вы видите тип модели, продолжительность выполнения и точность обучения. Поле BEST отслеживает лучший результат беговой тренировки в зависимости от типа вашей метрики.

3. Изучите результаты своей модели.

На этом этапе вы можете изучить результаты автоматического обучения с помощью виджета Jupyter или изучить историю экспериментов. Если вы используете блокнот Jupyter, используйте этот виджет блокнота Jupyter, чтобы увидеть график и таблицу всех результатов:

Найдите лучшую модель

Вы можете выбрать лучший конвейер из наших итераций. Метод get_output на automl_classifier возвращает наилучший прогон и подобранную модель для последнего вызова подгонки. Используя перегрузки на get_output, вы можете получить наилучшую прогонную и подобранную модель для любой зарегистрированной метрики или конкретной итерации:

Проверьте лучшую точность модели

На этом этапе вы можете использовать лучшую модель для прогнозирования тестового набора данных для прогнозирования тарифов на такси. Функция predict использует лучшую модель и прогнозирует значения y, стоимости поездки, из набора данных x_test. Выведите первые 10 значений прогнозируемой стоимости из y_predict:

Чтобы вычислить root mean squared error результатов, вам необходимо использовать y_test фрейм данных и преобразовать его в список для сравнения с предсказанными значениями.

Функция mean_squared_error принимает два массива значений и вычисляет средний квадрат ошибки между ними. Извлечение квадратного корня из результата дает ошибку в тех же единицах, что и переменная y, cost. Он примерно показывает, насколько прогнозируемые тарифы на проезд в такси отличаются от фактических тарифов:

Среднеквадратичный результат: 3,2204936862688798

Из итоговых показателей точности прогнозов видно, что модель довольно хорошо справляется с прогнозированием тарифов на такси на основе функций набора данных.

Традиционный процесс разработки модели машинного обучения требует значительных ресурсов и требует значительных знаний предметной области и затрат времени для запуска и сравнения результатов десятков моделей. Использование автоматизированного машинного обучения - отличный способ быстро протестировать множество различных моделей для вашего сценария.

Ресурсы