Специалисты по данным могут использовать богатый набор встроенных алгоритмов, разработку функций и оценку моделей для быстрого создания моделей или прототипов машинного обучения. Эксперты по машинному обучению могут визуально создавать свои сложные обучающие конвейеры машинного обучения с помощью собственного кода. Инженеры машинного обучения могут построить конвейер операций, используя аналогичный подход перетаскивания. Azure Machine Learning Designer визуализирует сложные конвейеры обучения машинному обучению и упрощает процесс построения и тестирования моделей и рабочих задач за счет встроенных компонентов, визуализации данных, оценки моделей и интеграции MLOps (DevOps для машинного обучения). Он позволяет пользователю автоматически создавать файлы оценки, регистрировать модели и создавать образы с помощью службы Azure Kubernetes (AKS) для масштабирования. Облачный актив также предоставляет пользователю набор встроенных алгоритмов, разработку функций и оценку моделей для дальнейшего упрощения и значительного ускорения процесса создания решений для машинного обучения, что делает его рекомендуемым инструментом для проекта, учитывая, что он поперечный временной горизонт.

На экране приветствия рабочей области запустите Конструктор.

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

Преобразование данных

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

Если щелкнуть вкладку Профиль, мы увидим некоторую визуализацию, показывающую аналитический обзор нашего несбалансированного набора данных, а также некоторую информацию, которую мы узнали в блокнотах с помощью функции описать().

Чтобы исключить зашумленные значения (например, нечисловые столбцы, которые не были показаны в результате функции описания), мы можем использовать компонент Выбрать столбцы из набора данных. На левой панели выберите вкладку «Компоненты» и найдите компонент. После того, как вы перетащили компонент в область разработки, подключите набор данных к компоненту. Дважды щелкните компонент, чтобы открыть окно параметров, и щелкните Редактировать столбцы.

Откроется новое окно, введите следующий список и нажмите Enter, затем сохраните.

has_superstructure_other,geo_level_1_id,geo_level_2_id,geo_level_3_id,has_secondary_use_agriculture,has_secondary_use_hotel,has_secondary_use_rental,has_secondary_use_institution,has_secondary_use_school,has_secondary_use_industry,has_secondary_use_health_post,has_secondary_use _gov_office,has_secondary_use_use_police,has_secondary_use_other,land_surface_condition,foundation_type,roof_type,ground_floor_type,other_floor_type,position,plan_configuration,legal_ownership_status,damage_grade

Хотя мы знаем, что у нас нет пустых полей, я хотел бы показать еще один важный компонент — Очистить отсутствующие данные, который может исключать или преобразовывать все строки с отсутствующими значениями. Почему нам нужно сначала выбрать соответствующие столбцы, а затем исключить нулевые значения, а не наоборот? Представьте, что в столбцах отсутствуют значения, которые мы бы все равно исключили. Если мы сначала удалим всю строку из-за этого отсутствующего значения, мы можем исключить, возможно, полезные функции. Итак, поэтому мы сначала должны включить только полезные функции, а затем удалить возможные нулевые значения. Вместо удаления строк я просто выберу пользовательское значение и заменю пустые значения на 0 — это работает только для числовых столбцов. С левой стороны щелкните Редактировать столбцы и выберите Типы числовых столбцов для работы. В режиме «Очистка» выберите «Пользовательское значение замены» и в качестве «Значение замены» напишите 0.

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

Используемый нами компонент называется Normalize Data, метод преобразования я выбрал ZScore, а столбцы для преобразования — все числовые столбцы, кроме Damage_grade. ZScore использует среднее значение и стандартное отклонение для расчета каждого значения. Он берет значение и уменьшает его на среднее значение, а затем делит на его стандартное отклонение.

Давайте сделаем наш конвейер работоспособным! Нажмите Настройки и Создать вычислительный экземпляр Azure ML.

Дайте вашей машине имя, и для этого эксперимента вы можете использовать настройки по умолчанию (ЦП, Standard D4s, v3), а затем нажмите Создать.

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

Теперь задание отправлено, и вы можете просмотреть его, щелкнув «Задания» в меню левой панели или рядом с областью разработки на вкладке «Отправленные задания».

Избыточная выборка

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

Обратите внимание, что для уровня 2 есть много функций, и очень мало для уровней 1 и 3 Damage_grade. Компонент работает только с двумя категориями одновременно, но у меня есть для вас отличный обходной путь.

Сначала мы дважды разделим данные с помощью относительных выражений. Используйте компоненты Разделить данные с обеих сторон и выберите Относительное выражение в качестве режима разделения. Слева нам нужны только уровни 1 и 2, справа только уровни 2 и 3, потому что мы собираемся сравнить функции уровня 1 и 3 с функциями уровня 2.

Код для левой стороны: \”damage_grade” ‹ 3
правой стороны: \”damage_grade” › 1

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

Процент на слева: 400
справа: 40

Помните, у нас теперь есть два набора данных, один из них включает damage_grade 1 и 2, другой включает 2 и 3, мы должны собрать их вместе. Для этого мы воспользуемся компонентом Add Rows и с правой стороны подтянем damage_grade 1 и 2, а с другой стороны нам нужны только 3 , иначе метки снова будут смещены: 1, 2, 2, 3. Итак, с правой стороны нам также нужно снова разделить набор данных. Итак, разделить данные справа с относительным выражением: \”damage_grade” › 2. Теперь модель должна выглядеть примерно так:

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

Обучение

Теперь, наконец, с помощью компонента Разделить данные мы подготовим данные для обучения и проверки модели. Я установил долю разделения на 0,7, и в этом случае 70% будут данными обучения, а 30% будут использоваться для проверки модели.

Теперь мы готовы обучить нашу модель. Для этого нам нужно выбрать наиболее подходящий алгоритм.
Существует несколько конкретных типов обучения с учителем, которые представлены в Конструкторе, например: классификация, регрессия или обнаружение аномалий. Если вы не совсем уверены, какой алгоритм лучше работает для вашего конкретного набора данных, вы можете исследовать это, используя два или более алгоритмов одновременно. Я выбрал модель классификации, которая используется, когда необходимо определить категорию — как в нашем случае с Damage_grade. Поскольку у нас более двух категорий, нам нужно найти наиболее подходящий алгоритм мультиклассовой классификации. Найдите предложения в шпаргалке, предоставленной Microsoft. После тщательного изучения в моем случае наиболее подходящим алгоритмом оказалось Multiclass Boosted Decision Tree. Во время обучения мы можем использовать Гиперпараметры модели, поэтому наиболее подходящие параметры будут определены и использованы для итерации, чтобы достичь лучших результатов прогнозирования.

Оценка модели означает, что она делает прогноз. Используйте для этого компонент Score model и соедините выходные данные обученной лучшей модели компонента Tune Model Hyperparameters и в качестве набора данных передайте второй вывод компонента Split Data.

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

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

  • Точность относится к средней производительности модели, включающей среднеквадратичную ошибку (RMSE), которая представляет собой стандартное отклонение ошибок в прогнозе, и среднюю абсолютную ошибку (MAE), ошибки между расчетами парных наблюдений.
  • Точность – это мера качества, определяющая долю элементов ярлыка среди доступных. Короче говоря, точность — это один из наиболее часто используемых показателей оценки, показывающий процент точных рекомендаций.
  • Отзыв – это показатель полноты, который дает долю релевантных результатов из всех релевантных, то есть результаты правильно рассчитаны для данного процента данных.

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

Прогнозирование ущерба от землетрясений с помощью AutoML