Что такое машинное обучение? ПО, сотканное из данных. Введение в машинное обучение и быстрый старт с Azure ML Кому будет полезно

Сегодня интерес к специалистам по анализу данных достиг того, что только самый скромный человек не назовет себя Data Scientist, если хотя бы пару раз занимался обучением логистической регрессии или ансамблей деревьев. Анализ данных и машинное обучение в частности – это не просто красивые слова. Это настоящая магия, которая может преображать окружающий мир, и в Яндексе действительно можно проникнуться ей, познакомиться с людьми, которые в этом сильны, узнать и научиться делать много нового.

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

В Яндекс.Такси создается группа, которой предстоит внедрять методы машинного обучения в самый крупный сервис такси в России. Нам нужны аналитики, которые:

  • влюблены в анализ данных и знают основные принципы и методы машинного обучения (могут отличить переобучение от недообучения, логрегрессию от SVM, бустинг от бэггинга, precision от accuracy);
  • понимают, зачем нужна аналитику математическая статистика;
  • хотят, чтобы их работа влияла на миллионы поездок, совершаемых еженедельно нашими пользователями.

Обязательные требования:

  • знание математической статистики и теории вероятностей;
  • знание наиболее популярных методов supervised learning (линейные модели, ансамбли деревьев, kNN, наивный байесовский классификатор) и понимание, в каких случаях уместно их применять и как диагностировать их работу;
  • знание часто используемых в машинном обучении метрик качества, понимание различий между ними, способность интерпретировать различные значения метрик;
  • хорошая техническая подготовка: уверенное использование Python и знакомство с библиотеками для работы с данными – numpy, scipy, matplotlib, pandas, sklearn, опыт использования xgboost и vowpal wabbit;
  • знание английского языка на уровне чтения технической литературы.

Приветствуются:

  • высшее математическое или техническое образование;
  • опыт решения задач в области анализа данных и машинного обучения;
  • опыт применения прикладной математической статистики, например, оценки доверительных интервалов целевых показателей, статистической значимости результатов А/В-тестирования;
  • понимание, как можно оценить потенциальный экономический эффект от внедрения модели на основе машинного обучения и как связать с этим эффектом метрики качества;
  • понимание, как оценивать качество моделей в офлайне (на исторических данных) и в онлайне (в продакшене);
  • знакомство с Linux;
  • знакомство с Map Reduce;
  • знание классических алгоритмов и структур данных;
  • знание SQL;
  • способность читать код на C++;
  • опыт работы в аналогичной должности.

Машинное обучение - это способ программирования, при котором компьютер сам формирует алгоритм действий, основываясь на модели и данных, которые загружает человек. Обучение основано на поиске закономерностей: машине показывают много примеров и учат находить общие черты. Люди, к слову, учатся подобным образом. Мы не рассказываем ребёнку, что такое зебра, мы показываем ему фотографию и говорим, что это. Если подобной программе показать миллион фотографий голубей, она научится отличать голубя от любой другой птицы.

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

Для входа в офис Квентин использует мобильное приложение. Сначала программа сканирует лицо сотрудника, после чего он прикладывает палец к сенсору, а приложение проверяет отпечаток на соответствие и пускает в помещение.

Распознают текст

На работе Квентину нужно сканировать кредитные карты и работать с бумажными документами. В этом ему помогает приложение с функцией распознавания текста.

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

Распознают звуки

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

Анализируют данные с сенсоров

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

У Квентина мигрень. Чтобы предугадать, когда будет приступ сильной головной боли, он скачал специальное приложение , которое будет полезно и при других хронических заболеваниях. Приложение анализирует состояние человека с помощью сенсоров на смартфоне, обрабатывает информацию и предугадывает приступы. Если возникает риск - программа отправляет сообщение пользователю и его близким.

Помогают с навигацией

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

Строят точные прогнозы

Квентин любит заказывать пиццу через мобильное приложение, но интерфейс в нем не очень удобен, и это раздражает. Разработчик использует сервисы мобильной аналитики Amazon и Google , чтобы понять, что не нравится Квентину в мобильном приложении. Сервисы анализируют поведение пользователя и подсказывают, что исправить, чтобы заказывать пиццу стало просто и удобно.

Кому будет полезно

  • Интернет-компаниям. Почтовые сервисы используют алгоритмы машинного обучения, чтобы фильтровать спам. Социальные сети учатся показывать только интересные новости и пытаются создать «идеальную» ленту новостей.
  • Службам безопасности. Пропускные системы основаны на алгоритмах распознавания фото или биометрических данных. Дорожные службы используют автоматическую обработку данных, чтобы отслеживать нарушителей.
  • Компании в сфере кибербезопасности разрабатывают системы для защиты от взлома мобильных устройств, используя машинное обучение. Яркий пример - Snapdragon от Qualcomm .
  • Ритейлерам. Мобильные приложения торговых сетей могут изучать данные о покупателях, чтобы создавать персональные списки покупок, повышая лояльность клиентов. Еще умное приложение может советовать товары, которые интересны конкретному человеку.
  • Финансовым организациям. Банковские приложения изучают поведение пользователей и предлагают продукты и услуги, основываясь на особенностях клиента.
  • Умным домам. Приложение на основе машинного обучения будет анализировать действия человека и предлагать свои решения. Например, если на улице холодно, закипит чайник, а если в домофон звонят друзья, приложение заказывает пиццу.
  • Медицинским учреждениям. Клиники смогут наблюдать за пациентами, которые находятся вне больницы. Отслеживая показатели организма и физическую активность, алгоритм предложит записаться к врачу или сесть на диету. Если показать алгоритму миллион томографических снимков с опухолями, система с большой точностью сможет предсказывать рак на ранней стадии.

И что дальше?

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

Технологии машинного обучения привлекают покупателей, анализируют большие объемы данных и делают прогнозы. На базе Machine Learning можно построить мобильное приложение, которое облегчит жизнь и вам, и вашим клиентам. Кроме того, станет конкурентным преимуществом вашего бизнеса.

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

Мы порой даже примерно не представляем, как работают некоторые приложения, основанные на методах машинного обучения. Скажем, никто не сможет вам ответить на вопрос «Почему мне сегодня в рекламе показали сайт A, а не Б?». Наиболее печальным во всей этой ситуации является то, что большинство людей имеет неверное представление о машинном обучении.

Вводная

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

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

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

Обучение с учителем и без учителя

Большую часть задач машинного обучения можно разделить на обучение с учителем (supervised learning) и обучение без учителя (unsupervised learning). Если вы представили себе программиста с плёткой в одной руке и куском сахара в другой, вы немного ошиблись. Под «учителем» здесь понимается сама идея вмешательства человека в обработку данных. При обучении с учителем у нас есть данные, на основании которых нужно что-то предсказать, и некоторые гипотезы. При обучении без учителя у нас есть только данные, свойства которых мы и хотим найти. На примерах разницу вы увидите немного яснее.

Обучение с учителем

У нас есть данные о 10 000 квартирах в Москве, причём известна площадь каждой квартиры, количество комнат, этаж, на котором она расположена, район, наличие парковки, расстояние до ближайшей станции метро и так далее. Кроме того, известна стоимость каждой квартиры. Нашей задачей является построение модели, которая на основе данных признаков будет предсказывать стоимость квартиры. Это классический пример обучения с учителем, где у нас есть данные (10 000 квартир и различные параметры для каждой квартиры, называемые признаками) и отклики (стоимость квартиры). Такая задача называется задачей регрессии . О том, что это такое, мы поговорим чуть позже.

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

Обучение без учителя

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

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

Классы задач машинного обучения

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

  • Задача регрессии : на основании различных признаков предсказать вещественный ответ. Другими словами, ответом может быть 1, 5, 23.575 или любое другое вещественное число , которое, например, может олицетворять стоимость квартиры. Примеры : предсказание стоимости акции через полгода, предсказание прибыли магазина в следующем месяце, предсказание качества вина на слепом тестировании.
  • Задача классификации : на основании различных признаков предсказать категориальный ответ. Другими словами, ответов в такой задаче конечное количество, как в случае с определением наличия у пациента рака или определения того, является ли письмо спамом. Примеры : распознавание текста по рукописному вводу, определение того, находится на фотографии человек или кот.
  • Задача кластеризации : разбиение данных на похожие категории. Примеры : разбиение клиентов сотового оператора по платёжеспособности, разбиение космических объектов на похожие (галактики, планеты, звезды и так далее).
  • Задача уменьшения размерности : научиться описывать наши данные не N признаками, а меньшим числом (как правило, 2-3 для последующей визуализации). В качестве примера помимо необходимости для визуализации можно привести сжатие данных.
  • Задача выявления аномалий : на основании признаков научиться различать отличать аномалии от «не-аномалий». Кажется, что от задачи классификации эта задача ничем не отличается. Но особенность выявления аномалий состоит в том, что примеров аномалий для тренировки модели у нас либо очень мало, либо нет совсем, поэтому мы не можем решать такую задачу как задачу классификации. Пример : определение мошеннических транзакций по банковской карте.

Нейронные сети

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

Нейронная сеть (или искусственная нейронная сеть) - это сеть нейронов, где каждый нейрон является математической моделью реального нейрона. Нейронные сети начали пользоваться большой популярностью в 80-х и ранних 90-х, однако в конце 90-х их популярность сильно упала. Впрочем, в последнее время это одна из передовых технологий, используемых в машинном обучении, применяемая в огромном количестве приложений. Причина возврата популярности проста: увеличились вычислительные способности компьютеров.

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

Фактически же, нейрон в искусственной нейронной сети представляет собой математическую функцию (например, сигмоидную функцию), которой на вход приходит какое-то значение и на выходе получается значение, полученное с помощью той самой математической функции.

Ограниченность нейронных сетей

Впрочем, в нейронных сетях нет ничего магического и в большинстве случаев опасения касательно сценария «Терминатора» не имеют под собой оснований. Допустим, учёные натренировали нейронную сеть на распознавание рукописных цифр (такое приложение может использовать, скажем, на почте). Как может работать такое приложение и почему здесь не о чем беспокоиться?

Допустим, мы работаем с изображениями 20x20 пикселей, где каждый пиксель представляется оттенком серого (всего 256 возможных значений). В качестве ответа у нас имеется одна из цифр: от 0 до 9. Структура нейронной сети будет следующая: в первом слое будет 400 нейронов, где значение каждого нейрона будет равно интенсивности соответствующего пикселя. В последнем слое будет 10 нейронов, где в каждом нейроне будет вероятность того, что на изначальном изображении нарисована соответствующая цифра. Между ними будет некоторое число слоев (такие слоя называются скрытыми) с одинаковым количеством нейронов, где каждый нейрон соединён с нейроном из предыдущего слоя и ни с какими более.

Рёбрам нейронной сети (на картинке они показаны как стрелочки) будут соответствовать некоторые числа. Причем значение в нейроне будет считаться как следующая сумма: значение нейрона из предыдущего слоя * значение ребра, соединяющего нейроны . Затем от данной суммы берётся определенная функция (например, сигмоидная функция, о которой мы говорили ранее).

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

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

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

Например, вторая кампания Барака Обамы была фактически выиграна лучшей на тот момент командой в области анализа данных. Разумеется, речь не идет о том, что они советовали ему соврать о чем-то, работа строилась значительно более умным путем: они выбирали, в каком штате, перед какой аудиторией, в какой день и на какую тему он должен выступать. Причем каждый раз они замеряли, как это сказывается на опросах вида «За кого бы вы проголосовали, если бы выборы были в ближайшее воскресенье?». Другими словами, подобные решения принимали не политтехнологи, а исключительно специалисты по анализу данных. Особенно интересным это становится в свете того, что, по оценкам специалистов, это дало ему преимущество в 8-10%.

Кроме того, современный интернет довольно сложно представить без ретаргетинга, или персонализированной рекламы. Вспомните: вы выбираете какой-то продукт в интернете, а после покупки ещё на протяжении двух недель вам показывают его в различного рода рекламе. В одном из своих выступлений директор по маркетингу сервисов компании «Яндекс» Андрей Себрант дал на этот счёт такой совет:

Дарю лайфхак. После того как вы купили топор, чтобы не любоваться топорами ещё две недели, зайдите в магазин модной одежды. Дальше, в зависимости от ваших гендерных предпочтений, зайдите либо в мужское, либо в женское бельё. Бросьте несколько предметов в корзину, закройте корзину и уйдите. У этих ребят очень большие бюджеты на ретаргетинг: следующие две недели вас, в зависимости от ваших предпочтений, будут преследовать либо красивые полуодетые мужчины, либо красивые полуодетые женщины. Это лучше, чем топор.

Если у вас появилось желание изучить технологии машинного обучения, стоит отметить, что для глубокого изучения предмета с пониманием всего фундамента следует разбираться как минимум в математическом анализе, линейной алгебре и методах оптимизации (с упором на последние два). Кроме того, желательно знать основы программирования и какой-нибудь язык программирования. В машинном обучении, как правило, используется R, Python или Matlab.

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

Мотивировать его изучение можно следующим образом: посмотрите учебный план. Если вы просмотрите все лекции и решите все задания, то вы гарантированно сможете применять все эти вещи на практике. В частности, вы освоите алгоритмы линейной регрессии (задача регрессии), логистической регрессии, метода опорных векторов, нейронных сетей (задача классификации), K-means (кластеризация), PCA (понижение размерности), выявления аномалий и узнаете как построить рекомендательную систему (рекомендация товаров по вашим оценкам, например, фильмов или песен). На последней неделе курса вам также расскажут, как построить систему, которая будет находить и расшифровывать надписи на картинках или опознавать людей.

Для тех, кто хочет изучать предмет со всеми математическими тонкостями в лучших традициях сильных технических вузов, можно порекомендовать курс от ВШЭ или специализацию от МФТИ . Заметим лишь, что специализация является платной и для доступа к ней придется оформить подписку приблизительно за 3000 рублей в месяц. Впрочем, есть бесплатный период в 7 дней.

Сервис машинного обучения 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.

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

Нам приходится ежедневно сталкиваться с задачами по учету и обработке обращений клиентов. За долгие годы работы у нас накопилось большое количество задокументированных решений, и мы задумались, как можно использовать этот объем знаний. Мы пытались составлять базу знаний, использовать встроенный в Service Desk поиск, но все эти методики требовали больших усилий и ресурсов. В итоге наши сотрудники чаще пользовались интернет-поисковиками, чем собственными решениями, что мы, естественно, не могли так оставить. И нам на выручку пришли технологии, которых 5-10 лет назад ещё не было, однако сейчас они имеют достаточное распространение. Речь пойдет о том, как мы применяем машинное обучение для устранения проблем клиентов. Мы использовали алгоритмы machine learning в задаче поиска похожих, уже возникавших ранее инцидентов, для применения их решений к новым инцидентам.

Задача оператора Help desk

Help desk (Service Desk) - система учета и обработки обращений пользователей, в которых содержатся описания неисправностей технического характера. Работа оператора Help desk заключается в обработке таких обращений: он дает инструкции по устранению неполадок или же устраняет их лично, через удаленный доступ. Однако рецепт устранения проблемы сперва нужно составить. При этом, оператор может:

  • Воспользоваться базой знаний.
  • Использовать встроенный в Service desk поиск.
  • Составить решение самостоятельно, исходя из своего опыта.
  • Использовать сетевой поисковик (Google, Yandex и др.).

Почему понадобилось машинное обучение

Какие наиболее развитые программные продукты мы можем применить:

  • Service Desk на платформе 1С: Предприятие. Существует только ручной режим поиска: по ключевым словам, или с использованием полнотекстового поиска. Есть словари синонимов, возможность замены букв в словах и даже использование логических операторов. Однако, эти механизмы практически бесполезны при таком объеме данных, как у нас - результатов, удовлетворяющих запроса много, а эффективной сортировки по релевантности нет. Есть база знаний, на поддержку которой нужно тратить дополнительные усилия, а поиск в ней осложнен интерфейсным неудобством и необходимостью понимать её каталогизацию.
  • JIRA от Atlassian. Наиболее известная западная Service desk - система с передовым, по сравнению с конкурентами, поиском. Существуют пользовательские расширения, интегрирующие функцию ранжирования результатов поиска BM25, которую использовали Google в своем поисковике до 2007 года. Подход BM25 основан на оценке “важности” слов в обращениях исходя из частоты их встречаемости. Чем реже совпадающее слово, тем сильнее оно влияет на сортировку результатов. Это позволяет несколько улучшить качество поиска при большом объеме обращений, однако система не адаптирована для обработки русского языка и, в целом, результат неудовлетворителен.
  • Интернет поисковики. Сам поиск решений занимает в среднем от 5 до 15 минут, при этом качество ответов не гарантировано, как и их наличие. Бывает, что длинное обсуждение на форуме содержит несколько длинных инструкций, и ни одна из них не подходит, а на проверку уходит целый день (в итоге может уйти много времени при отсутствии гарантии результата).
Основной трудностью поиска по содержанию обращений является то, что симптомы одинаковых по сути неисправностей, описываются разными словами. Кроме того, описания часто содержат сленг, грамматические ошибки и формы почтовой отправки, т.к. большинство заявок поступает по e-mail. Современные Help Desk системы пасуют перед такими сложностями.

Какое решение придумали мы

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

Семантика позволяет учитывать значение слова в зависимости от его контекста. Это дает возможность понимать синонимы, снимать многозначность слов.

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

Обработка состоит из очистки содержания обращений от лишних слов и символов и разбиения содержания на отдельные лексемы - токены. Так как обращения приходят в виде e-mail, то отдельной задачей является очистка почтовых форм, которые отличаются от письма к письму. Для этого мы разработали собственный алгоритм фильтрации. После его применения, у нас остается текстовое содержания письма без вводных слов, приветствий и подписей. Затем, из текста удаляются знаки пунктуации, а даты и цифры заменяются специальными тегами. Этот обобщающий прием повышает качество извлечения семантических связей между токенами. После этого, слова проходят лемматизацию – процесс приведения слов к нормальной форме, что также повышает качество за счет обобщения. Затем отсеиваются части речи с низкой смысловой нагрузкой: предлоги, междометия, частицы и т. п. После этого, все буквенные токены фильтруются по словарям (национальный корпус русского языка). Для точечной фильтрации, используются словари IT-терминов и сленга.

Примеры результатов обработки:

В качестве инструмента машинного обучения, мы используем Paragraph Vector (word2vec) – технология семантического анализа естественных языков, которая основана на распределенном векторном представлении слов. Разработана Mikolov et al совместно с Google в 2014 году. Принцип работы основывается на предположении, что слова, встречающиеся в схожих контекстах, являются близкими по смыслу. К примеру, слова «интернет» и «подключение» часто встречаются в схожих контекстах, например «Пропал интернет на сервере 1С» или «Пропало подключение на сервере 1С». Paragraph Vector анализирует текстовые данные предложений и делает вывод, что слова «интернет» и «подключение» являются семантически близкими. Адекватность подобных выводов тем выше, чем больше текстовых данных будет использовать алгоритм.

Если углубиться в детали:

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

Приведем пример:

  • пропадать интернет сервер 1С
  • пропадать подключение сервер 1С
  • падать сервер 1С

А так выглядит мешок слов:

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

Как мы отлаживали продукт

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

Для анализа качества обучения мы также использовали визуализации семантических связей с помощью T-SNE - алгоритма уменьшения размерности (основан на машинном обучении). Он позволяет отобразить многомерные вектора на плоскости таким образом, что дистанция между точками-обращениями отражает их семантическую близость. В примерах будут представлены 2000 обращений.

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

Качество следующей модели куда ниже, чем предыдущей. Модель недообучена. Равномерное распределение указывает на то, что детали семантических отношений были усвоены лишь в общих чертах, что было выявлено уже при ручной оценке качества:

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

Эффект от внедрения машинного обучения

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

  • Дополнение для стандартной отраслевой информационной системы, которое позволило существенно экономить время на поиск решений ежедневных задач service desk.
  • Снизилась зависимость от человеческого фактора. Максимально быстро заявку сможет решить не только тот, кто её уже решал ранее, но и тот, кто с проблемой вообще не знаком.
  • Клиент получает более качественный сервис, если ранее решение незнакомой инженеру задачи занимало от 15 минут, то теперь до 15 минут, если ранее эту задачу уже кто-то решал.
  • Понимание, что можно повысить качество обслуживания расширяя и улучшая базу описаний и решений проблем. Наша модель постоянно дообучается по мере поступления новых данных, а значит ее качество и количество готовых решений растет.
  • Наши сотрудники могут влиять на свойства модели, постоянно участвуя в оценке качество поиска и решений, что позволяет оптимизировать её в непрерывном режиме.
  • Инструмент, который можно усложнять и развивать для извлечения большей пользы из имеющейся информации. Далее мы планируем привлекать к партнерству других аутсорсеров и модифицировать решение для решения похожих задач у наших клиентов.

Примеры поиска похожих обращений (орфография и пунктуация авторов сохранена):

Входящее обращение Наиболее похожее обращение из архива % похожести
“Re:Диагностика ПК ПК 12471 уходит в ребут после подключения флеш накопителя. Проверить логи. Диагностировать, понять в чем проблема.” “перезагружается пк, при подключении флешки пк ребутается. пк 37214 Проверить в чем проблема. Пк на гарантии.” 61.5
“Тертнальный сервер после отключения питания не загружается. BSOD” “После перезагрузки сервера, сервер не загружается пищит” 68.6
“Не работает камера” “ Камеры не работают” 78.3
“RE:The Bat Не отправляются письма, пишет переполнена папка. Re: не принимается почта Переполнение папки в THE Bat! папка более 2 ГБ 68.14
“Ошибка при запуске 1С - Невозможно получить сертификат сервера лицензирования. Скрин прикладываю. (компьютер 21363)” Не запускается 1С CRM, на пк 2131 и 2386 не запускается 1С, ошибка след.: Невозможно получить сертификат сервера лицензирования. Не удалось найти сервер лицензирования в режиме автоматического поиска.” 64.7

Изначально решение архитектурно планировалось следующим образом:

Программное решение полностью написано на языке Python 3. Библиотека, реализующая методы машинного обучения частично написана на c/c++, что позволяет использовать оптимизированные версии методов, дающие ускорение порядка 70 раз, по сравнению с чистыми Python-имплементациями. На данный момент, архитектура решения выглядит следующим образом:

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

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

  • Семантический поиск документов (по содержанию документа или ключевым словам).
  • Анализ тональности комментариев (выявление в текстах эмоционально окрашенной лексики и эмоциональной оценки мнений по отношению к объектам, речь о которых идёт в тексте).
  • Извлечение краткого содержания текстов.
  • Построение рекомендаций (Collaborative Filtering).

Решение легко интегрируется с системами документооборота, так как для его работы требуется только база данных с текстами.

Будем рады внедрить технологии machine learning коллегам по ИТ сфере и клиентам из других отраслей, свяжитесь с нами , если заинтересовались продуктом.

Направления развития продукта

Решение находится в стадии альфа-тестирования и активно развивается в следующих направлениях:

  • Создание облачного сервиса
  • Обогащение модели на основе решений технической поддержки в открытом доступе и в сотрудничестве с другими аутсорсинговыми компаниями
  • Создание распределенной архитектуры решения (данные остаются у заказчика, а создание модели и обработка запросов происходит на нашем сервере)
  • Расширение модели под другие предметные области (медицина, юриспруденция, обслуживание техники и проч.)