company_banner

Экспериментируем с Azure ML: Классификация, деревья решений

    В конце февраля этого года Хабр взорвала статья про открытый курс машинного обучения от сообщества 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 можно попробовать бесплатно.

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

    Хотели бы вы увидеть статьи по другим частям курса?

    • 41,7%Да10
    • 37,5%Да, но хотелось бы подробнее9
    • 20,8%Нет5
    Microsoft
    Microsoft — мировой лидер в области ПО и ИТ-услуг

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

      +4

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


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

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

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


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

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

            +1

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

            +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/
              0
              Относительно, чего хватает не хватает это индивидуально.
              Это вы здорово подметили. И, да, хотелось бы узнать ваше индивидуальное мнение.

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

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

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

            Самое читаемое