В конце февраля этого года Хабр взорвала статья про открытый курс машинного обучения от сообщества Open Data Science. Наш MVP, Mikhail_Komarov, решил поэкспериментировать и пройти его с использованием Azure ML для реализации некоторых алгоритмов. Под катом вы найдёте разбор для 3 части курса «Классификация, деревья решений и метод ближайших соседей».



Далее повествование будет вестись от имени автора.

Идея этого материала возникла по мере прохождения курса «Открытый курс машинного обучения». Задачу для себя я ставил так: «Есть эталонные решения на Python, часть этих решений можно портировать на Azure ML, при этом портирование осуществить таким образом, чтобы максимально использовать функционал Azure ML. Каким образом это сделать?»

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

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

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



С учётом того, что в задании строят дерево, дерево с подбором параметров, лес и лес с подбором параметров, мы создаём вот такую структуру.



Чтобы не тратить время на частности и сосредоточиться на главном, предлагаю вам взять за основу мой эксперимент из галереи и при необходимости изменить его. Если вы не хотите заводить бесплатную учётную запись, вы можете попробовать без неё, просто удалив модуль на Python.

Детали работы в облаке


Я остановлюсь на некоторых деталях, которые помогут понять работу эксперимента в облаке Azure ML.

1. Чистка данных, замена пропущенных числовых значений на их медиану и модуль, также работают для текстовых полей.



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



3. Так как в Azure ML нет алгоритма простого дерева, то для первого приближения возьмём Two-Class Boosted Decision Tree и в параметрах установим одно дерево.



4. Теперь посмотрим результат работы, модуль Evaluate Model.



5. Получим следующий набор результатов.



Это картина в целом, но есть ещё детали, такие как подбор параметров и кросс-валидация.

Ниже вы можете увидеть результат для дерева.





Детали реализации подбора параметров можно посмотреть в Tune Model Hyperparameters. Не забудьте установить в параметрах модели Parameter Range.



Спасибо за внимание и лёгкого облака!

Полезные ссылки




Автор


Михаил Комаров — занимается поддержкой существующих и реализацией новых систем, направленных на повышение эффективности работы в корпоративном сегменте. До работы в крупном корпоративном секторе работал тренером по информационным технологиям. Общий опыт работы в сфере ИТ составляет более 20 лет. Из интересов, виртуализация, инфраструктура, анализ данных и машинное обучение. MVP по Cloud and Data Center Management c 2011 года.

Хочу отметить помощь Евгения Григоренко в работе над экспериментом и Елизаветы Швец за решение общих вопросов и подготовку публикации.



Напоминаем, что Azure можно попробовать бесплатно.
Хотели бы вы увидеть статьи по другим частям курса?

Проголосовало 20 человек. Воздержалось 6 человек.

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

Поделиться с друзьями
-->

Комментарии (7)


  1. cotique
    18.05.2017 06:43
    +4

    У меня возникло такое впечатление, что Azure ML – это скорее игрушка, нежели полноценный инструмент датасаентиста. В основном причина в упомянутых вами ограничениях. Михаил, хотелось бы получить ваш комментарий по этому поводу. Каких возможностей не хватает Azure ML (или всего в достатке)?


    И было бы круто почитать про обычный Azure, особенно про то, как разобраться в его (не очень-то юзер-френдли) интерфейсе (и не впасть при этом в отчаяние).


    1. codezombie
      18.05.2017 12:25

      Azure ML (как и его облачные братья от AWS и GCP) вполне серьезный инструмент data scientist'a.

      В основном причина в упомянутых вами ограничениях
      Про ограничения я ничего не понял: понятно, что они есть — толщина dataset'а, длина вектора фич и т.п. (довольно большие величины). Но в статье про них не написано, а те ограничение, которые указаны в статье — в csv разделитель запятая, а не другой символ, и BDT приходится использовать вместо простого дерева — ограничения конкретного модуля, а не платформы. Хотите читать GBs данных из HBase/NoSQL/MSSQL? — используйте модуль Import Data. Не устраивает формат? — добавьте R/Python-скрипт и трансформируйте в нужный.
      не очень-то юзер-френдли
      Про user-friendly: удобнее всего, конечно, писать код (я серьезно). Но писав продолжительное время на R, я без проблем освоил Azure ML (может обратная ситуация тоже возможна, уже не узнаю). Но это проблема общая для IT-мира: если ты не понимаешь на уровень абстракции ниже, то довольно сложно понять, как эта штука работает.


    1. codezombie
      18.05.2017 12:36
      +2

      Чего в Azure ML сейчас не хватает (мне) так это:


      • DL-алгоритмы из коробки (есть Azure GPU-инстансы и там это возможно),
      • более шустрый перенос новых R-пакетов в облако (в AzureML-environment новые версии пакетов появляются с тормозами). Синхронизация облачный и девелоперских версий R-runtime и R-пакетов — это вообще отдельная история, как и история с source control в Azure ML.
      • чтение данных напрямую с HDFS, поддержка Parquet (полгода назад не было).

      В остальном Azure ML, если знаешь что хочешь (со мной это редко) — удобный инструмент как для соревнований, так и для production-сервисов.


    1. codezombie
      18.05.2017 13:11
      +1

      Через пару недель MS проводит мероприятие, где среди прочего будут мастер-классы по ML/DL (разумеется, с закосом, как это сделано Azure (для кого-то это неприемлимо)) https://events.techdays.ru/Future-Technologies/2017-06/
      Я думаю, что там многое можно услышать-спросить, из того, что было написано выше.


  1. Mikhail_Komarov
    18.05.2017 13:08
    +1

    Относительно, чего хватает не хватает это индивидуально.
    Думаю нужно попробовать и посмотреть различные проекты из блога или из курсов.
    Сила еще в том что за минуту из модели делаем web службу.
    Читаем по Azure (книга)
    https://blogs.msdn.microsoft.com/microsoft_press/2016/09/01/free-ebook-microsoft-azure-essentials-fundamentals-of-azure-second-edition/
    Читаем по Azure ML (книга)
    https://aka.ms/AzureML_pdf
    Смотрим курсы по треку DS от Microsoft (edx)
    https://academy.microsoft.com/en-us/professional-program/data-science/
    Блог по AzureML от Microsoft
    https://blogs.technet.microsoft.com/machinelearning/


    1. cotique
      19.05.2017 00:05

      Относительно, чего хватает не хватает это индивидуально.
      Это вы здорово подметили. И, да, хотелось бы узнать ваше индивидуальное мнение.

      Алсо спасибо за ссылки. Не хотите их в сам пост добавить, кстати?


      1. Mikhail_Komarov
        19.05.2017 06:34

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