Что такое машинное обучение? Применение машинного обучения в ит аутсорсинге Искусственный интеллект для повышения индекса лояльности клиентов

  • 07.05.2023

Сервис машинного обучения Azure Machine Learning в настоящее время находится в предварительном публичном тестировании доступном каждому, у кого есть учетная запись Azure (или хотя бы триальный доступ). Если вам интересно почему я всегда был настолько возбужден этой технологией, посмотрите мою , написанную месяц назад или читайте дальше этот пост, в котором я обо всем расскажу.

Если кратко, для того чтобы выполнять задачи аналитики с прогнозированием (predictive analytic) с помощью Azure Machine Learning вам достаточно выполнить следующие шаги:

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

Сервис 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

И в добавление ко всему, вы можете использовать внутри 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.

Желаю вам наслаждаться изучением машинного обучения!


Машинное обучение – одна из самых популярных областей Computer Science, хотя в то же время одна их самый избегаемых среди разработчиков. Основная причина этого в том, что теоретическая часть машинного обучения требует глубокой математической подготовки, которую многие предпочитают сразу же забыть по окончании университетского обучения. Но необходимо понимать, что помимо теоретических основ, существует также и практическая сторона, которая оказывается значительно проще для освоения и ежедневного использования. Цель этой работы – ликвидировать разрыв между программистами и специалистами по обработке данных и показать, что использование машинного обучения в своих приложениях может быть достаточно простой задачей. В статье излагается вся последовательность шагов, необходимая для построения модели предсказания цены автомобиля в зависимости от набора его характеристик с последующим ее использованием в мобильном приложении на Windows 10 Mobile.

Что такое Azure ML?

Если кратко, то Azure Machine Learning – это:

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

Почему именно Azure ML?
Потому, что Azure Machine Learning – один из простейших инструментов для использования машинного обучения, убирающий входной барьер для всех, кто решает использовать его для своих нужд. С Azure ML больше не надо быть математиком.

Логический процесс построения алгоритма машинного обучения

  1. Определение цели. Все алгоритмы машинного обучения бесполезны без явно-определенной цели проведения эксперимента. В данной лабораторной работе цель – это предсказание цены автомобиля на основе набора характеристик, предоставленных конечным пользователем.
  2. Сбор данных. Во время этого этапа формируется выборка данных, необходимая для дальнейшего обучения модели. В данном случае будут использоваться данные репозитария машинного обучения университета Калифорнии.
    archive.ics.uci.edu/ml/datasets/Automobile
  3. Подготовка данных. На этом этапе производится подготовка данных путем формирования характеристик, удаления выбросов и разделения выборки на обучающую и тестовую.
  4. Разработка модели. В процессе разработки модели производиться выбор одного или нескольких моделей данных и соответствующих алгоритмов обучения, которые по мнению разработчика должны будут дать требуемый результат. Часто этот процесс совмещен с параллельным исследованием эффективности нескольких моделей и визуальным анализом данных с целью отыскания каких-либо закономерностей.
  5. Обучение модели. Во время обучения алгоритм обучения производит поиск скрытых закономерностей в выборке данных с целью отыскания способа предсказания. Сам процесс поиска определяется выбранной моделью и алгоритмом обучения.
  6. Оценка модели. После того как модель обучена необходимо исследовать ее прогностические характеристики. Чаще всего для этого ее прогоняют на тестовой выборке и оценивают получившийся уровень ошибки. В зависимости от этого и требований к точности модель может быть как принята в качестве итоговой, так и произведено повторное обучение после добавления новых входных характеристик или даже изменения алгоритма обучения.
  7. Использование модели. В случае успешного тестирования обученной модели наступает стадия ее использования. И это тот случай, когда Azure ML становится незаменим, давая все необходимые инструменты для публикации, мониторинга и монетизации алгоритмов

Построение прогностической модели

На открывшейся странице нажмите Get Started now.

Для работы с Azure ML вам необходима активная подписка Microsoft Azure. Если она у вас уже есть, то просто войдите в Azure Management Portal, иначе – предварительно зарегистрируйте бесплатную пробную учетную запись, перейдя по ссылке .

В первую очередь необходимо загрузить обучающую выборку. Для этого перейдите по ссылке и загрузите на свой компьютер файл imports-85.data, содержащий выборку данных по автомобилям.
Для загрузки этого файла в Azure ML Studio нажмите на New в нижней части страницы и в открывшейся панели последовательно выберите Dataset и From Local File. В меню загрузки укажите путь к загруженному файлу, название и в качестве типа выберите Generic CSV File with no header (.hn.csv).

Создание нового эксперимента

Для того чтобы создать новый эксперимента выберите New -> Experiment -> Blank Experiment. В результате будет создана новая рабочая область эксперимента с панелью инструментов справа.

Определение выборки данных

Загруженные ранее данные должны быть отражены в разделе Saved Datasets слева. Выберите его и перетащите в любое место рабочего пространства, например, туда, куда указывает стрелка Drag Items Here.

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

Подготовка данных

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

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

Для исправления проблемы с именами из группы Data Transformation/Manipulation перенесите на рабочую поверхность Metadata Editor.

Перетяните выход (снизу) выборки данных на вход (сверху) нового компонента, чтобы соединить их. Теперь кликните на него, чтобы открыть окно настроек справа. Metadata Editor позволяет изменить метаинформацию одного или нескольких столбцов, включая тип или название. Откройте мастер выбора столбцов нажатием на Launch column selector. Чтобы выбрать все столбцы, в поле Begin With выберите All columns, удалите строку уточнения выбора нажатием на знак “-“ справа и подтвердите нажатием на галочку.

В поле New column names панели настроек введите новые имена столбцов через запятую, которые можно найти в файле import-85.names по ранее приводившейся ссылке. Значение поля должно быть следующим:

symboling,normalized-losses,make,fuel-type,aspiration,num-of-doors,body-style,drive-wheels,engine-location,wheel-base,length,width,height,curb-weight,engine-type,num-of-cylinders,engine-size,fuel-system,bore,stroke,compression-ratio,horsepower,peak-rpm,city-mpg,highway-mpg,price

Для того, чтобы увидеть результат работы компонента, нажмите на Run снизу и визуализируйте выход Metadata Editor описанным ранее способом.

Теперь удалим normalized-losses. Для этого перетащите в рабочую область Project Columns из той же группы, соедините его с Metadata Editor и перейдите к его настройкам. Снова выберите мастер выбора строк и в этот раз выберите все строки за исключением normalized-losses, сделав настройки, аналогичные приведенным на рисунке ниже.

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

К сожалению, есть еще столбцы, в которых отсутствуют значения. Но их не много, а потому можно ограничиться лишь отбрасыванием неполных строк. Для этого выберите Missing Value Scrubber и соедините его с Project Columns. В поле For missing values измените значение на Remove entire row. Запустите, визуализируйте и убедитесь, что строки с пустыми значениями пропали.

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

make,body-style,wheel-base,engine-size,horsepower,peak-rpm,highway-mpg,num-of-cylinders,price

Добавьте новый Project Columns и выберите приведенные выше столбцы.

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

Разбивка выборки

Теперь данные готовы к использованию в процессе обучения. Но в машинном обучении возможен эффект, получивший название «переобучение», – заучивание моделью данных без обобщения. Такое поведение ведет к невозможности адекватного предсказания на сколько-нибудь отличающихся данных. Для обработки этой ситуации выборку принято разделить на обучающую и тестовую в отношении близком к 3:1. Последняя из них никак не участвует в процессе обучения и по окончании используется для оценки ошибки предсказания. Если эта ошибка значительно отличается в большую сторону от ошибки на обучающей выборке, значит, наблюдается описанный выше эффект.

Для создания тестовой выборки перенесите на рабочую область эксперимента и соедините с последним Project Columns компонент Split Data из группы Data Transformation/Sample and Split. Установите долю строк на первом выходе равной 0.75 и убедитесь, что установлен флаг Randomize Split.

Обучение модели линейной регрессии

Первым делом перенесите из панели инструментов компоненты Linear Regression, Train Model, Score Model и Evaluate Model. Train Model – универсальный компонент, позволяющий обучение любой модели на любой обучающей выборке. Для настройки нашего конкретного случая подсоедините первый (левый) выход Split Data и выход Linear Regression к соответствующим входам Train Model. В настройках Train Model в качестве целевого значения (outcome column) укажите price. Теперь модель готова к обучению.

Но, помимо самого обучения, важно узнать результат обучения. Компонент Score Model позволяет вычислить выход обученной модели на произвольной выборке и рассчитать результат предсказания. Соедините выход Train Model, содержащий обученную модель, с соответствующим входом Score Model, а в качестве выборки данных на другой вход подайте тестовую выборку со второго выхода Split Data. Выход Score Model соедините с любым из входов Evaluate Model для того, чтобы рассчитать численные характеристики качества обучения. В результате должна получиться процесс, аналогичный представленному на рисунке.

Запустите модель и визуализируйте результат выполнения Evaluate Model.

Коэффициент детерминации указывает, как хорошо линия регрессии описывает исходные данные. Принимаемые ей значения варьируются от 0 до 1, где единице соответствует абсолютная точность. В нашем случае коэффициент равен 82%. Хороший ли это результат или нет – напрямую зависит от постановки задачи и определенной толерантности к ошибке. Для случая предсказания цены автомобиля 82% - отличный результат. Если вы хотите его улучшить попробуйте добавить другие столбцы в Project Columns или попробовать принципиально другой алгоритм. Например, Poisson Regression. Последнее может быть достигнуто путем простой замены компонента линейной регрессии на пуасонову. Но более интересный подход – это собрать из элементов параллельное обучение и подключить результат ко второму выходу Evaluate Model, что позволит в удобной форме сравнить результаты обучения обоих моделей.

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

Кликните правой кнопкой по мыши по компоненту Train Model, отвечающему линейной регрессии и выберите Save as Trained Model. Это позволит использовать полученную модель в любых других экспериментах без необходимости повторного обучения.

Публикация веб-сервиса

Для публикации сервиса выберите компонент Train Model, отвечающий линейной регрессии и нажмите в Set Up Web Service. В открывшемся меню выберите Predictive Web Service и дождитесь пока Azure ML создаст новый эксперимент, оптимизированный для нужд сервиса. Удалите автоматически созданные компоненты Web Service Input и Web Service Output – мы создадим их позднее после небольшой подготовки.

На данный момент элемент Score Model повторяет на выходе все входящие столбцы, а предсказанному значению дает название Score Labels. Это необходимо исправить.

Для этого перенесите из панели инструментов на рабочую поверхность два уже знакомых компонента: Project Columns и Metadata Editor. И соедините их в последовательности изображенной на рисунке ниже. В настройках Project Columns выберите только один столбец Score Labels, и используя Metadata Editor переименуйте его в price.

В заключение необходимо добавить вход и выход создаваемого сервиса. Для этого добавьте в эксперимент Web Service Input и Web Service Output. Соедините первый со входом Score Model, а второй с выходом Metadata Editor. В настройках обоих элементов измените название на «input» и «prediction», соответственно.

Запустите модель еще раз, нажав на Run, и по окончании валидации опубликуйте сервис нажатием Deploy Web Service.

Тестирование сервиса

После нажатия на Deploy Web Service вы будете перенаправлены на страницу с информацией о только что созданном сервисе. Ссылки под API HELP PAGE содержат достаточно подробное описание с информацией о содержимом входящего и исходящего JSON пакетов, а также пример кода консольного приложения, дающего преставление о способе использования.

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

audi sedan 99.8 four 109 102 5500 30 13950

Разработка приложения

В заключение рассмотрим процесс разработки мобильного приложения, использующего Azure ML в роли back-end сервиса. Сначала создайте новый проект универсального приложения Windows. Для этого в открытом Visual Studio 2015 выберите File -> New -> Project… В открывшемся окне перейдите на вкладку Windows в меню слева и выберите Blank App (Universal Windows). В поле названия введите AzureMLDemo и нажмите OK. В случае необходимости готовый проект может быть найден на GitHub .

После некоторой подготовки Visual Studio откроет новый проект универсального приложения. Убедитесь, что в поле процессорной архитектуры справа от Debug указано x86, и правее выберите одну из мобильных виртуальных машин в качестве среды запуска. Например, Mobile Emulator 10.0.10240.0 720p 5 inch 1GB.

Теперь можно перейти к написанию самого приложения. В меню Solution Explorer двойным кликом откройте MainPage.xaml. Описание языка разметки XAML графического интерфейса выходит за границы этой работы, поэтому просто замените открывающийся и закрывающийся теги на код ниже.