Введение в машинное обучение и быстрый старт с Azure ML
Это перевод оригинальной статьи Azure ML: A Brief Introduction
Сервис машинного обучения Azure Machine Learning в настоящее время находится в предварительном публичном тестировании доступном каждому, у кого есть учетная запись Azure (или хотя бы триальный доступ). Если вам интересно почему я всегда был настолько возбужден этой технологией, посмотрите мою обзорную статью, написанную месяц назад или читайте дальше этот пост, в котором я обо всем расскажу.
Если кратко, для того чтобы выполнять задачи аналитики с прогнозированием (predictive analytic) с помощью Azure Machine Learning вам достаточно выполнить следующие шаги:
- Загрузить или импортировать онлайн какие-нибудь текущие или накопленные данные (например, демография вашего клиента и его общие расходы)
- Построить и валидировать модель (например, предсказать затраты основанные на демографии)
- Создать веб-сервис, который использует ваши модели для выполнения быстрых предсказаний в реальном времени (решать, что какие предложения предоставить новому клиенту основываясь на его демографии)
Сервис Azure ML (известный так же как проект Passau) представлен двумя концептуальными компонентами: Экспериментами и Веб-Сервисами и одним инструментом разработки под названием ML Studio. Вы можете пригласить других людей, имеющих учетную запись Microsoft (Live ID), для совместной работы в вашем рабочем окружении (workdspaces) с помощью ML Studio и при этом им даже не понадобиться оплачивать подписку Azure для работы с вами.
Эксперименты можно представить как потоковые конфигурации (data-flow) того, что вам хотелось бы сделать с вашей информацией и вашими моделями. Вы, в качестве исследователя данных Azure ML, фокусируетесь на экспериментах и можете проводить все своем время в ML Studio, занимаясь лишь перестраиванием экспериментов, изменением параметров, алгоритмами, критериями валидации, периодическим внесением изменений в данные и так далее. ML Studio – это веб-приложение и выглядит оно похоже на портал управления Azure (на момент написания статьи, середина 2014). Интерфейс выглядит чистым, приятным и работает хорошо не только в IE, но и в Firefox и Chrome, правда с некоторыми оговорками, но это ведь только первая превью-версия.
ML Studio – это место где вы начинаете свою работу, решая какие источники данных вы хотите использовать: загруженные вами наборы данных или живые данные доступные через механизм Reader из веб-страницы, OData, SQL Azure, Microsoft Azure, Hive или блобов Azure. Затем, вам может потребоваться произвести некоторые Трансформации Данных, например, группировку, переименование колонок, объединения, исключение дубликатов или весьма полезную операцию диcкретизации (binning/discretisation). Кроме того, вы можете воспользоваться и другими, более интересными трансформациями, например, фильтрами конечного и бесконечного входного ответа (Finite and Infinite Input Response), которые используются в обработке сигналов (signal processing). Они также могут применяться более широко для данных относящихся к экономике, которые можно рассмотреть в виде комплексных волн (например, особенно временные ряды). Это является частью работы определения сезональности и часто связано с поиском частот похожих на музыкальные в этих сезональностях. Кроме того, если вы только начинаете свой проект и не совсем уверены в том, какие из колонок данных включить, то фильтры автоматического выбора функций (Feature Selection) могут быть вам полезны, представляя вам неплохой выбор корреляции показателей. На практике, тем не менее, на поздних шагах вам захочется указать набор колонок вручную для достижения максимальной точности.
Теперь мы перейдем к тому, что так долго ждали: проделаем настоящее Машинное Обучение – что означает Инициализация (определение) модели, Обучение (Train) модели некоторыми данными, Проверка (Evaluate) производительности модели и ее валидности и, если все ок, Оценка (Score) модели (проведение предсказаний на ее базе). Azure ML предлагает множество алгоритмов для Классификации задач, включая Multiclass и Two-Class Decision Forests, Decision Jungles (разработано Microsoft Research), Logistic Regression, Neural Networks, а так же Two-Class Averages Perceptrons, Bayes Point Machine, Boosted Decision Trees и Support Vector Machines (SVM). Кластеризация использует вариацию стандартного K-Means подхода. Регрессии включают Bayesian Linear, Boosted Decision Trees, Decision Forests, конечно Linear Regression, Neural Network Regression, Ordinal и Poisson Regression. И это только в версии 1.
Вы можете применять полезные Статистические функции в своих экспериментах, включая общие элементарные, например, вычисление отклонений. Попробуйте сами, начните просто с указания задаче Descriptive Statistics своих данных и Визуализируйте (Visualise) результаты (воспользуйтесь точками соединений на задачах). Наслаждайтесь элементами boxplots в полученных визуализациях – то, чего давно не хватало во всех BI-инструментах Microsoft, даже Excel…
Один классный пример того, как Azure ML привносит внешнее исследование в ваши эксперименты можно найти в секции задачи Text Analytics. Задача Named Entity Recognition позволит обработать входной текст (называемый историями, например, почтовые адреса, типизированные описания ситуаций или твиты) и извлечь из них именованные термины (named terms), автоматически классифицировать их как Люди, Места или Организации. Присутствует также поддержка проекта Vowpal Wabbit, который поддерживается Yahoo и Microsoft Research. Вы можете использовать его для получения хэшей для сущностей по запросу. Я ожидаю в будущем появления большего числа инструментов и возможностей в этой области, так как очевидно, что Microsoft обладает огромной кучей знаний сохраняемых внутри Bing.
Глубокая поддержка языка R
И в добавление ко всему, вы можете использовать R внутри Azure ML. По моим подсчетам, на сегодня Azure ML содержит около 410 предустановленных пакетов поверх R 3.1.0 (к удивлению, последняя версия). Среди пакетов есть ggplot2 (да!), plyr и dplyr, car, datasets, HMisc, MASS и все другие наиболее часто используемые пакеты для анализа данных (data mining). вроде rpart, nnet, survival, boot и так далее.
Если вы хотите найти список пакетов, которые были включены в Azure ML, то просто создайте небольшой эксперимент, например, такой как у меня, показанный тут, выполните немного кода R и сохраните результирующий CSV на своем компьютере. Колонка 1 покажет все включенные пакеты.
Что делать, если ваш любимый пакет R (например, ROCR или nleqslv) отсутствует в списке? На самом деле, документация может вас запутать. В ней говорится, что в “настоящее время” не существует возможности установить свои собственные пакеты, однако, затем в документации описывается обходной путь, который помогает подключить свой пакет с помощью zip-файла. Вы можете найти описание этого подхода снизу по этой ссылке, где показано как применить install.packages() во время использования ссылки на файл переданный в задачу Execute R Script.
Ключ к пониманию важности того, что R является частью Azure ML, по моему мнению, не только в том, что платформа предоставляет доступ к языку статистики и аналитики де-факто (lingua-franca), но также в том, насколько она быстрая и безболезненная в процессе обработки ваших данных. Это особенно заметно на фоне того, что R сам по себе не такой уж удобный инструмент для манипулирования данными. Так что вместо того чтобы использовать уважаемый RODBC (включен) внутри своего R-скрипта, вы можете рассмотреть применение Azure ML для всех тяжелых задач обработки данных (прошу прощения, фанаты plyr) и передать данные в R-скрипт в виде Azure ML Dataset Data Table, который становится доступен в виде нативного для R фрейма данных (data frame). Данные магически появятся внутри вашего скрипта в виде объекта под названием dataset. Вы можете добавлять несколько источников данных.
Пока я еще не закончил свои тесты производительности, но все, что так или иначе сможет улучшить производительность R на обработке больших объемов данных можно только горячо приветствовать. Кроме того, эти возможности выглядят как очевидное преимущество облачного провайдера, по сравнению с обычным коробочным решением. И я могу представить, что Microsoft использует ряд трюков для увеличения производительности, когда наборы данных из Azure связываются с сервисом Azure ML, даже если иметь в виду лимит на 10ГБ в настоящее время.
Вместе с R или без него, у вас может быть рабочий эксперимент, который вы можете использовать в качестве рабочего кирпичика внутри своего веб-ориентированного приложения. Представьте, что вы только что построили систему рекомендаций. В терминах Azure ML, у вас есть эксперимент, который использует задачу Оценки (Scoring, предсказания). Вы определяете, какой из входных портов должен использоваться в качестве Publish Input для вашего веб-сервиса и соответственно что должно считаться Publish Output. Они будут представлены в виде небольших зеленых и синих буллитов на контуре задачи. Вы перезапускаете ваш эксперимент еще раз и с помощью Studio ML публикуете его в качестве Azure ML Web Service. Теперь вы можете потреблять результаты через Azure ML REST API в виде простого веб-сервиса или конечной точки OData. Этот API предлагает Request Response Service (RRS) для синхронного доступа с низкими задержками для выполнения предсказаний, и асинхронного выполнения Batch Execution Service (BES) для переобучения модели, скажем, с вашими будущими свежими данными. Этот API предлагает автоматически сгенерированный пример кода, который вы можете просто скопировать и вставить для использования в Python, R или приложении C#, а так же в любом другом месте, так как все это просто основано на REST и JSON.
В наличии есть классная небольшая страница для тестирования, которая позволит вам ввести требуемые значения для свежего сервиса и произвести тестовое предсказание.
У сервиса есть и дополнительные функции предназначенные для применения на практике, например, предотвращение автоматического обновления Microsoft любых из компонент (задачи и т.д.) вашего эксперимента, изменение которых могло бы изменить или даже поломать вашу работу. Правильное решение, Microsoft – это то, с чем не любят сталкиваться любые ИТ-специалисты поддерживающие веб-системы. Вы можете тестировать обновления сервисов в стейджинг и конфигурировать безопасность через ключ доступа к API.
Стоимость
Сколько все это стоит? Имея в виду ценообразование превью-версии, выглядит это очень привлекательно. Есть два вида затрат, почасовая оплата вычислений (per-hour active compute) и оплата вызовов API веб-сервиса (per-web-service API call), оба вида затрат пропорциональные. Почасовая оплата ниже пока вы используете ML Studio ($0.38/час) и чуть выше в промышленной эксплуатации через ML API Service ($0.75/час). Затраты на вызовы API не считаются, пока вы работаете в ML Studio и стоят $0.18 за 1000 предсказаний во время применения в промышленной эксплуатации. Если что, это интересная и крайне простая модель ценообразования, в отличии от других, которые бывали у Microsoft. Мне крайне интересно узнать, что думают мои клиенты-разработчики в связи с тем, что существует классная возможность эффективно перепродавать Azure ML в виде части вашего собственного веб-приложения, затратив только минимум сил на поддержку, без необходимости строить всю систему самому.
С чего начать?
С чего начать? Посетите azure.microsoft.com, подпишитесь и создайте рабочую область в New/Data Services/Machine Learning. Затем перейдите в панель Dashboard и нажмите ссылку Sign-in to ML Studio. После обзора задач, которые определят Эксперимент, я посоветую вам выбрать один из многих примеров, создать его копию и запустить его на выполнение. Если он заработает, следуйте шагам описанным выше для публикации его в качестве своего первого веб-сервиса предсказания.
Конечно, убедитесь, что вы не пропустите наши грядущие видео и статьи по этой теме: станьте участником сайта для получения новостного листка с большим набором информации. Если вы хотите быстро начать, обратите внимание на наш тренинг Data mining Training, особенно на модули посвященные подготовке данных, так как эти концепции, особенно, cases, input и output columns совершенно точно пригодятся при работе с Azure ML.
Желаю вам наслаждаться изучением машинного обучения!
Дополнительные ссылки
Попробовать Azure бесплатно на 30 дней
Пройти обучающие курсы на виртуальной академии Microsoft (MVA)
- Разработка приложений на платформе Microsoft
- Обзор безопасности Microsoft Azure и SQL Azure Databases
- Программное управление сервисами Azure
- Погружение в Azure для разработки приложений и инфраструктурных сервисов
- Введение в разработку современных приложений с Azure для начинающих
- или курсы по разработке в облаке Azure
- или многие другие бесплатные курсы MVA!