Введення в машинне навчання і швидкий старт з Azure ML

Сервіс машинного навчання 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. Потім, вам може знадобитися зробити деякі Трансформації Даних, наприклад, угруповання, перейменування колонок, об'єднання, виключення дублікатів або вельми корисну операцію дискретизації (binning/discretisation). Крім того, ви можете скористатися й іншими, більш цікавими трансформаціями, наприклад, фільтрами кінцевого і нескінченного вхідного відповіді (Finite and Infinite Input Response), які використовуються в обробці сигналів (signal processing). Вони також можуть застосовуватися більш широко для даних відносяться до економіки, які можна розглянути у вигляді комплексних хвиль (наприклад, особливо тимчасові ряди). Це є частиною роботи визначення сезональности і часто пов'язане з пошуком частот схожих на музичні в цих сезональностях. Крім того, якщо ви тільки починаєте свій проект і не зовсім впевнені в тому, які з колонок даних включити, то фільтри автоматичного вибору функцій (Feature Selection) можуть бути вам корисні, представляючи вам непоганий вибір кореляції показників. На практиці, тим не менш, на пізніх кроках вам захочеться вказати набір колонок вручну для досягнення максимальної точності.

azure-ml-machine-learning-tasks

Тепер ми перейдемо до того, що так довго чекали: спробуймо даний Машинне Навчання — що означає Ініціалізація (визначення) моделі, Навчання (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 і так далі.

which-r-packages-come-with-azure-ml

Якщо ви хочете знайти список пакетів, які були включені в 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ГБ в даний час.

azure-ml-api

Разом з R або без нього, у вас може бути робочий експеримент, який ви можете використовувати в якості робочого цеглинки всередині свого веб-орієнтованого програми. Уявіть, що ви тільки що побудували систему рекомендацій. В термінах Azure ML, у вас є експеримент, який використовує завдання Оцінки (Scoring, передбачення). Ви визначаєте, який з вхідних портів повинен використовуватися як Publish Input для вашого веб-сервісу і відповідно що повинно вважатися Publish Output. Вони будуть представлені у вигляді невеликих зелених і синіх булітів на контурі завдання. Ви перезапускаєте ваш експеримент ще раз і з допомогою Studio ML публікуєте його як Azure ML Web Service. Тепер ви можете споживати результати через Azure ML REST API у вигляді простого веб-сервісу або кінцевої точки OData. Цей API пропонує Request Service Response (RRS) для синхронного доступу з низькими затримками для виконання прогнозів, і асинхронного виконання Batch Execution Service (BES) для перенавчання моделі, скажімо, з вашими майбутніми свіжими даними. Цей API пропонує автоматично згенерований приклад коду, який ви можете просто скопіювати і вставити для використання в Python, R або додатку C#, а так само в будь-якому іншому місці, так як все це просто засноване на REST і JSON.

testing-a-prediction

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

У сервісу є і додаткові функції призначені для застосування на практиці, наприклад, запобігання автоматичного оновлення 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 абсолютно точно стануть у нагоді при роботі з Microsoft ML.

Бажаю вам насолоджуватися вивченням машинного навчання!

посилання


Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.