`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Дмитрий Тепляков

Azure Machine Learning. Создание простого эксперимента

+44
голоса

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

Компания «Майкрософт» недавно выпустила в стадии «preview» свой сервис Azure Machine Learning. В Интернете есть статьи по этому поводу, но на мой взгляд, они не совсем полные. Я же хочу показать, как на базе данного сервиса получить полностью рабочий сервис, с которым вы сможете работать из своего приложения.

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

Для начало очень кратко, немного теории. Машинное обучение может применять следующие технологии:

– Регрессия – мы пытаемся выявить закономерность в данных, и на основании этого, предсказать следующее значение. При этом у нас есть определенный набор исходных данных и результирующих значений. Модель позволяет получить прогноз значений для исходных данных вне исходного диапазона.

Azure Machine Learning. Создание простого эксперимента

– Классификация – у нас имеется несколько наборов исходных данных, для которых известны результирующие значения. Задача классификации – выделить закономерность, и затем на ее основании предсказать значение для новых исходных данных. В случае с картинкой ниже, например, нужно предсказать, какого цвета будет элемент в заданных координатах.

Azure Machine Learning. Создание простого эксперимента

– Кластеризация – когда у нас есть только исходный набор данных без результирующих значений. Задача кластеризации – выявить закономерность в неструктурированных данных.

Azure Machine Learning. Создание простого эксперимента

Теперь вернемся к нашему примеру. Для построения модели в машинном обучении очень важно правильно выбрать алгоритм. Так, для нашей задачи с объемами продаж первой на ум приходит именно регрессия, которая должна предсказывать значения в будущем. Но у регрессии есть основной недостаток – она плохо работает за пределами диапазона обучающих данных. Т.е. мы можем с довольно высокой вероятностью предсказать промежуточное значение внутри диапазона. Но как поведут себя данные вне диапазона – модель точно сказать не может. Особенно регрессия плохо работает с данными, имеющими нелинейную структуру, которыми как раз и являются данные продаж. Поэтому поставим задачу для нашего магазина немного по другому. Постараемся предсказать, какие продажи будут у нас в конкретный день недели в следующем периоде. В таком случае, наша задача попадает под категорию классификации.

Итак, как же это делается в системе машинного обучения Azure?

Если у вас есть подписка на облако Майкрософт, вам нужно активировать машинное обучение по ссылке: http://azure.microsoft.com/en-us/services/preview/

Вы также можете совершенно бесплатно протестировать машинное обучение, войдя под Microsoft ID в Azure ML Studio: https://studio.azureml.net/Home

В качестве исходных данных берем вот такую таблицу:

Azure Machine Learning. Создание простого эксперимента

– Year – год продаж
– Month – месяц продаж
– DayOfWeek – день недели продаж
– Hour – час продаж
– Category – категория товара
– Price – диапазон цен (для примера, берем диапазоны 50 – 60, 60 – 70 и т.п.)
– Sales – объем продаж.

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

Первое, что нужно сделать – это загрузить данные в студию машинного обучения.

Azure Machine Learning. Создание простого эксперимента

Azure Machine Learning. Создание простого эксперимента

Студия умеет работать с csv и tsv файлами с заголовком или без заголовка. Можно также загружать plain text, но тогда могут возникнуть вопросы с типами данных. Кроме этого, можно подключаться и к базам данных, веб сайтам, хранилищам Azure, но это уже более сложные варианты.

Теперь создаем новый эксперимент:

Azure Machine Learning. Создание простого эксперимента

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

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

Далее, для правильной работы системы обучения, нам нужно разбить набор данных на две группы – одну для обучения, вторую для тестов. Для этого используется модуль «Split». Удобнее всего в окне поиска над списком элементов ввести его название, чтобы не искать по всему дереву компонент. Перетащив этот модуль на рабочую область, соединяем выход нашего набора данных со входом модуля «Split». Кликнув на этом модуле, справа откроется окно параметров. Выставляем значение 0,8 в поле «Fraction of rows». Это означает, что мы 80% данных будем использовать для обучения, а 20% – для тренировки.

Следующим этапом выбираем модель, которая будет использоваться для обучения. Azure предлагает большой набор моделей. Для наших целей очень удобной является модель, сочетающая классификцацию и регрессию. Это decision forest regression. Эта модель разбивает все данные на группы по категориям, и затем для каждой категории применяет алгоритм регрессии. Как раз то, что нам нужно.

Теперь нужно обучить нашу собственную модель. Для этого добавляем компоненту «Train Model». Кликнув на модуль, нужно выбрать столбец, по которому мы будем делать прогноз. В нашем случае это столбец «Sales». Чтобы его выбрать, кликаем на поле «Column selector» и выбираем «Sales».

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

Azure Machine Learning. Создание простого эксперимента

Запустив модель, и убедившись, что ошибок нет, мы можем оценить качество ее работы. Кликнув по выходному узлу элемента «Score model», выбираем «Visialize». Откроется результирующий набор данных, прошедший через процесс проверки. По нему мы сможем сравнить, насколько точно наша модель предсказывает значения.

Azure Machine Learning. Создание простого эксперимента

В данном наборе данных мы видим наши исходные числа, а также два новых столбца – прогнозируемое значение и прогнозируемое отклонение. Как можно увидеть, прогнозируемое значение конечно отличается от исходного, но отклонение не всегда очень больше. Естественно, что для данных без какой либо закономерности, предсказать со 100% точностью будет попросту невозможно.

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

Для того, чтобы использовать полученные результаты в какой-то внешней системе (например, ваша внутренняя система отчетов, или корпоративный портал), нужно опубликовать эту модель как сервис. Для этого нужно создать второй проект, который и будет обрабатывать внешние данные. На нижней панели инструментов нажимаем кнопку «Create scoring experiment». Система создаст новый проект, где наша обученная модель будет использоваться уже как источник обученных данных.

Azure Machine Learning. Создание простого эксперимента

Вот так должна выглядеть ваша новая модель. Изначально в ней нет одного элемента – «Project column». Вам нужно самостоятельно вставить его между вашим источником данных и модулем оценки модели. И кликнув на этот элемент, выбрать все столбцы кроме нашего «Sales».

Azure Machine Learning. Создание простого эксперимента

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

Наш набор данных в данной модели используется исключительно для предоставления структуры данных для модели. Сами данные будут поступать через модуль «Web service input».

Все, осталось запустить модель, и по итогу, нажать кнопку «Publish web service».

Вот так выглядит страница с API созданной нами модели:

Azure Machine Learning. Создание простого эксперимента

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

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

Azure Machine Learning. Создание простого эксперимента

+44
голоса

Напечатать Отправить другу

Читайте также

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT