Инструкции по Машинному обучению Azure

От отсутствия кода к коду в Машинном обучении Azure

Пошаговое руководство по Azure ML с ортопедическими многоклассовыми данными

Почему эта статья

Некоторые люди слышат о машинном обучении, а затем сразу же вводят «pip install tensorflow» и отправляются изучать глубокое обучение. Я был не самым одаренным или интуитивным для такого подхода, поэтому я начал с low-code, а затем перешел к использованию блокнотов. Я думаю, что этот подход открывает возможности машинного обучения для большего количества людей. Машинное обучение Azure имеет инструменты для изучения машинного обучения в облаке без опыта программирования или большого опыта программирования. Это хороший процесс, чтобы шагнуть ко все более и более сложному машинному обучению. В руководстве я применяю этот подход с маленькими шагами, когда я прохожу без кода (автоматическое машинное обучение), затем с низким кодом (дизайнер) и, наконец, с фактическим кодом (ноутбуки).

Обзор машинного обучения Azure

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

Я пройдусь по одному и тому же набору данных с тремя подходами.

  1. Автоматизированное машинное обучение — машинное обучение без кода
  2. Дизайнер — Low-Code ML
  3. Записные книжки — Jupyter Notebooks на Azure Compute Instances (Actual-Code ML)

Выбор данных: UCI Набор данных по позвоночнику

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

Настройка машинного обучения Azure

Я не буду рассказывать об начальной настройке Машинного обучения Azure, но это довольно просто. Когда вы создаете учетную запись машинного обучения Azure на портале Azure, вы автоматически связываете ее с другими связанными ресурсами (хранилище, Key Vault, Application Insights, Container Registry). Вы можете либо ссылаться на существующие ресурсы, либо создавать новые.

Теперь, когда все готово (довольно просто), откройте только что созданную учетную запись Машинного обучения Azure, перейдите к обзору и нажмите «Запустить студию».

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

Получение данных

Есть несколько простых способов загрузки данных в Машинное обучение Azure:

  1. Загружайте локальные файлы прямо в «Наборы данных»
  2. Получение файлов из хранилища данных (подробнее об этом не сообщается)
  3. Ссылка на веб-файлы
  4. Используйте предоставленные Microsoft открытые наборы данных

Для локальных файлов или веб-файлов я включил сюда ссылки на очищенные версии файлов .csv, чтобы их можно было напрямую загрузить:
https://github.com/van-william/azure-ml-demo/ дерево/главное/исходные данные

Я также показываю, как извлекать файлы .csv из необработанных файлов (файлов .arff), предоставленных из исходного набора на GitHub

Хранилища данных и наборы данных:

Длякраткого обзора хранилищ данных и наборов данных Машинное обучение Azure, по сути, позволяет просматривать абстракции существующих данных, хранящихся в других учетных записях хранения, базах данных и т. д.; это упрощает доступность организации, когда у вас есть много файлов из разных мест в Azure. Хранилище данных — это абстракция расположения папки в хранилище Azure или базе данных. Это позволяет легко упорядочивать файлы и данные в одном представлении (хранилищах данных) в Машинном обучении Azure.

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

Необязательно: получение данных в хранилище данных

Этот шаг необязателен, но он пригодится в дальнейшем при управлении файлами из разных учетных записей хранения и баз данных. С хранилищами данных у вас есть следующие варианты абстрагирования данных, уже находящихся в Azure, в более доступную точку машинного обучения (примечание: это не меняет фактическое место хранения данных): Учетные записи хранения Azure (Blob, Общий доступ к файлам), Azure Озера данных (Gen1, Gen2), базы данных SQL (Azure SQL, Postgres, MySQL)

В качестве примера я буду использовать хранилище BLOB-объектов Azure. Как правило, я предпочитаю использовать AzureAD, а не ключи учетной записи, поэтому убедитесь, что у вас есть роль «Storage Blob Data Contributor» в вашей учетной записи или контейнере хранилища BLOB-объектов, и вы можете проходить аутентификацию с помощью AzureAD вместо ключей учетной записи.

Теперь, когда вы нажимаете на хранилище данных, вы можете легко просмотреть файлы, хранящиеся в этом конкретном контейнере. Пример ниже.

Получение данных в набор данных

Теперь либо нажмите «Создать набор данных» в хранилище данных, либо перейдите к набору данных, чтобы создать новый набор данных. Наборы данных позволяют легко использовать Automated ML и Designer. У вас есть четыре варианта

  1. Локальные файлы
  2. Из хранилища данных — выберите хранилище данных, которое мы только что создали, и файл .csv.
  3. Из веб-файлов — (Ссылка на файлы .csv на Github -> BinaryClass, MultiClass
  4. Из открытых наборов данных — Microsoft Open Datasets

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

Настройка вычислений

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

Я выбрал более дешевый кластер для демонстрационных целей:

Автоматизированное ML (ML без кода)

Прежде чем мы углубимся в создание моделей, давайте изучим данные. Перейдите к набору данных, затем нажмите «Создать профиль», а затем выберите созданный вами вычислительный экземпляр или кластер. После завершения профилирования нажмите «Исследовать» и переключитесь на «Профиль».

Кажется, у нас есть 6 числовых признаков и 3 класса меток (спондилолистез, грыжа и норма); мы будем использовать 6 числовых характеристик (ортопедические измерения), чтобы предсказать, есть ли у пациента спондилолистез (позвонки соскользнули со своего места… ой!), грыжа межпозвонкового диска (диски между позвонками выпячены… тоже ой!), или нормальное поведение диска . В разделе фактического кода с использованием Notebooks мы углубимся в источник, данные, но сейчас давайте перейдем к прогнозированию.

Теперь перейдите к Automated ML и выберите созданный набор данных. Вы выберете или создадите новый эксперимент (Способ управления запусками машинного обучения), целевой столбец («класс») и вычисление. Скриншот ниже:

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

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



Затем нажмите «Готово», и модель запустится.

Изучение производительности модели

Перейдите к Automated ML и выберите запуск эксперимента и задание. Отсюда вы можете просмотреть дополнительные сведения о производительности моделей, включая метрики, объяснимость модели, ограничения данных (например, несбалансированные наборы данных) и другие журналы запуска эксперимента.

Теперь нажмите на модели, и самая производительная модель будет иметь ссылку на «Объяснение модели»; это предоставляет подробные сведения о том, как модель работала; какие функции важны, и другие критерии. Это очень важно для понимания не только того, если модель неверна, но и того, в каком смысле эта модель неверна.

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

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

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

Последствия модели — контекст ортопедических данных

Похоже, у моей модели была самая большая проблема с классификацией ~ 31% классов грыж (грыж межпозвоночных дисков) как нормальных. Да, в целом это неплохой ложноотрицательный результат. На агрегированном уровне точность модели составляет 86 %, но важно понимать, где она неточна.

Ознакомьтесь с этой статьей для получения более подробной информации о матрице путаницы.



Теперь давайте перейдем к дизайнеру и воспроизведем наши результаты.

Выводы

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

Конструктор (Low-Code ML)

Конструктор предоставляет дополнительные параметры и функциональные возможности с интерфейсом перетаскивания (Low-Code). Автоматизированное машинное обучение не требует большого опыта программирования или опыта работы с данными (помимо основной статистики и метрик науки о данных, чтобы понять результаты). Designer требует некоторой логики и опыта работы с данными, но небольшого опыта программирования. По мере того, как мы продолжаем работать над усложнением, мы будем использовать все больше и больше пользовательских функций, чтобы различать три модели машинного обучения. У Microsoft и здесь отличное пошаговое руководство

Нажмите Designer и создайте новый конвейер. Есть несколько готовых пайплайнов для различной аналитики, но создать пайплайны с нуля не так уж сложно. Вот пример интерфейса конвейера. Существует интерфейс перетаскивания (с возможностью включения блоков пользовательского кода Python или R), который в целом перемещается сверху вниз. Automated ML автоматизировал выбор модели, нормализацию данных и другие задачи обработки данных. Они создаются вручную в Designer, но на высоком уровне.

При создании новых пайплайнов дизайнера также имеется достаточное количество примеров и шаблонов:

У конструктора машинного обучения на GitHub тоже есть несколько примеров

Базовый многоклассовый конвейер для Azure ML Designer

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

Обзор Designer Pipeline, который мы создадим:

С помощью конвейеров ML Designer вы можете лучше контролировать производительность модели и поток, чем Automated ML, но при этом сохранять аналитику в интерфейсе с низким кодом. Нажмите «Конструктор», а затем нажмите «+» в левом верхнем углу, чтобы создать новый конвейер. Я пройдусь по примеру пайплайна, который я создал ниже:

  • Набор данных — щелкните раскрывающийся список, чтобы выбрать зарегистрированный набор данных (обратите внимание, что вы также можете создавать наборы данных из пользовательского кода Python с помощью пользовательского блока Python (Пример кода для извлечения ортопедических данных из источника)
  • Редактировать метаданные: я уточняю типы данных и уточняю, какие столбцы являются признаками (используемыми для классификации) и метками (результатами классификации).

  • Суммировать данные — сводку данных можно просмотреть в конструкторе, а выходные данные также сохраняются в хранилище данных (в нашем примере оно подключено к хранилищу BLOB-объектов).
  • Разделить данные – отделить часть данных для построения модели и часть данных для тестирования обученной модели.

  • Normalize Data — нормализуйте данные объектов для лучшего обучения модели (можно использовать функции стандартизации, такие как zscale, или функции масштабирования, такие как minmax или zscore).

  • Многоклассовое ускоренное дерево решений. В Designer есть несколько стандартных моделей машинного обучения, которые вы можете использовать. Вы также можете создавать собственные модели с помощью пользовательского кода Python или R. Гиперпараметры (гиперпараметры являются параметрами модели и могут быть настроены с помощью блока настройки гиперпараметров; параметры обучаются с помощью блока «Обучение модели»). Я использую настройку гиперпараметров с рядом гиперпараметров. См. ниже

  • Настройка гиперпараметров модели. Итеративно выберите оптимальные гиперпараметры с подмножеством данных. Это выводит обученную модель. Вы можете либо просмотреть всю сетку (все возможные комбинации гиперпараметров), либо выполнить случайную проверку (случайно протестировать подмножество комбинаций). Дополнительная информация о документах Microsoft находится здесь

  • Применить преобразование — к тестовым данным применяются те же преобразования (например, нормализовать данные), что и к обучающим данным.
  • Score Model: используйте обученную модель для прогнозирования классов для тестового набора данных.
  • Оценить модель. Наконец, оцените предсказанные метки для тестового набора данных и поймите точность и эффективность модели.

Просмотр выходных данных и следующие шаги

Перейдите на вкладку «Эксперимент» и просмотрите выбранный эксперимент, в котором вы запустили конвейер конструктора. Оттуда вы можете просмотреть прогон и увидеть производительность модели. Вы также можете просмотреть это непосредственно в конструкторе.

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

Выводы и дальнейшие действия дизайнера

В целом Designer — отличный способ создания конвейеров в Azure. Этот пример — только начало! Самое интересное начинается с создания конвейеров логических выводов (пакетных или в реальном времени), чтобы делать прогнозы с помощью новой модели. У Microsoft есть отличный подробный обзор здесь

Ноутбуки (Actual-Code ML)

Хорошо, давайте приступим к реальному кодированию. Этот раздел довольно подробный, поэтому подробные инструкции включены в блокнот Jupyter. Смотрите ссылки ниже, чтобы начать:

Команды терминала:

Создайте вычислительный экземпляр, а затем нажмите «Терминал», клонируйте репозитории github ниже, чтобы начать.

Чтобы клонировать обучающий набор Microsoft DP100:

git clone https://github.com/MicrosoftLearning/mslearn-dp100 mslearn-dp100

Чтобы клонировать блокнот Jupyter:

git clone https://github.com/van-william/azure-ml-demo ortho-ml

Краткое содержание

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

Обязательно ознакомьтесь с руководством Microsoft здесь: https://microsoftlearning.github.io/mslearn-dp100/ и постарайтесь получить сертификат DP-100, чтобы действительно освоить Машинное обучение Azure.