Екосистема R як інструмент для автоматизації бізнес-завдань

ця стаття є продовженням попередньої публікації «Інструменти DataScience як альтернатива класичної інтеграції». Основна мета — привернути увагу як розробників, так і керівників середньої ланки, на широкому спектрі можливостей, які надають сучасні інструменти зі сфери Data Science за рамками класичних завдань статистичних обчислень і модної нині теми машинного навчання. Зокрема, можливості екосистеми R станом на серпень 2016 року і застосування цих можливостей на прикладі двох завдань: однією з прикладної науки, інший – з середнього бізнесу.

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

Ключові пункти, за якими проводилася оцінка обраного інструменту виглядали наступним чином:
  1. Основний зміст завдань зводилося до стандартного циклу: збір даних — очищення і препроцессинг — математична обробка різного ступеня складності — візуалізація — видача керуючих команд у зовнішні системи.
  2. Весь обмін інформацією з зовнішнім світом здійснювався за стандартизованими протоколами (ODBC, REST) і файлами різних форматів. Інформації не дуже багато (максимум, десятки гігабайт на добу), ~70% представлено в структурованому вигляді, потокова обробка в режимі реального часу зовсім не потрібно.
  3. Обов'язково повинен бути інтерактивний веб-інтерфейс користувача з інструментами експрес-аналітики оброблюваних даних.
  4. Бюджет на придбання чого б то не було = 0. Час на реалізацію = Ще вчора. Користувальницькі вимоги з'являться після першої демонстрації прототипу.
  5. Будь-яка система, покупна або open-source, вимагає часу на вивчення. Навіть при наявності «інтуїтивно-зрозумілих» інтерфейсів користувача, крок вліво-вправо потребує глибокого занурення і прив'язки до ідеології архітектури обраної системи. І, на жаль, немає ніяких гарантій, що через деякий час обмеження цієї системи не виявляться гальмом.
Якщо вже доведеться вкладати час у вивчення системи, то треба це робити максимально ефективно, вибираючи системи, що володіють гнучкістю і широтою можливого застосування. Забігаючи вперед, скажу, для такого класу задач це був вирішальний аргумент на користь перемоги R у фіналі. Хоча Python, хоч і посів друге місце, було є і залишиться активним універсальним інструментом.
Оцінка та порівняння підходів до вирішення задачі проводилася з точки зору бізнесу, для якого першочерговим показником є досягнення результату у визначений термін за мінімальну вартість. Оскільки на шляху у фінал технічно неповноцінні рішення відсіялися самі, будемо вважати, що рішення-фіналіст задовольняє запитам як бізнес-замовників, так і технічних виконавців.

R фреймворк
Мінімальний набір, який нас цілком влаштував — мова R IDE – RStudio, інтеграційний шлюз — DeployR, сервер клієнтських веб-додатків — Shiny.
Природно, що R, будучи мовою програмування, практично не обмежений в можливостях створення логічно і математично складних компонент. Все залежить від глибини знань, навичок роботи і використаних пакетів.

Завдання #1. Розрахунок оптичних властивостей матеріалів
Класична розрахунково-виробнича задача, коли для формування дослідних зразків складних шаруватих структур, необхідно визначити цілий ряд параметрів, необхідних для технологічного виробництва. Щоб визначити параметри необхідно провести вельми нетривіальні квантово-механічні розрахунки. І з різних комбінацій підібрати набір параметрів, оптимально задовольняють набору вихідних оптичних вимог до зразка. Безпосередньо для самих аналітичних розрахунків використовувався пакет Wolfram Mathematica.

Все б нічого, але була істотна проблема — складність розрахунків приводила до вельми трудомістким і тривалим обчислень. А для аналізу характеристик матеріалу необхідно було проаналізувати, в першу чергу візуально, спектральні характеристики об'єкта на різних довжинах хвиль, отримані в результаті циклу розрахунків. Максимально, що вдалося досягти по оптимізації в розрахунковій частині в межах доступного безлічі обчислювачів та ліцензій на Wolfram — розпаралелювати розрахунок на кілька комп'ютерів і досягти часу обрахунку однієї конфігурації параметрів 4-6 годин.

Але на другому етапі, що включає постпроцесинг отриманого безлічі даних, візуалізацію та інтерактивний аналіз спектрів, впоратися засобами тільки Wolfram Mathematica було вкрай важко. Підготовка одного спектру займала ~ 20 годин і вимагала додаткового рутинної ручної праці (ймовірність внесення помилок!). Графічні результати при цьому нерепрезентативним і дуже погано зчитувалися візуально (див. малюнок).



Застосування відомого спектру функцій, мантр і рекомендацій з форумів до корисного результату не привели. Не буду стверджувати, що пакет Wolfram Mathematica однозначно не володіє потрібними засобами, тим більше, що тільки що вийшла 11-ая версія має багато покращень саме в цій області. Але в умовах обмеженого часу на вирішення завдання і необхідності отримати результат до заданого терміну, займатися профілюванням коду і оптимізацією пам'яті без прозорого розуміння внутрішніх принципів роботи складного пропрієтарного математичного ядра фізично було зовсім ніколи. Власне кажучи, завдання пакета Mathematicа, як і його сильні сторони, дещо інші.

Тому за пару днів на фреймворку R був написаний модуль для збирання, обробки, візуалізації і експрес-аналізу розрахункових даних. За результатами аналізу формувався файл з параметрами для нового розрахунку. В результаті процес попередньої обробки і візуалізації з 20 годин скоротився до 5-7 секунд, візуалізація в ході 3-4 десятків ітерацій була повністю змінена і набула наступного вигляду, зрозумілий і очевидний всім виконавцям:





GUI був зібраний на базі Shiny RStudio, завдяки використанню пакетів для високорівневої комплексної обробки даних і візуалізації, елементів потокової передачі значень і функціонального програмування, змістовний код на R вмістився менш ніж в 100 рядків.

Якщо дивитися тільки з технічної точки зору, то завдання може здаватися дрібної. Немає ніяких Великих Даних, немає машинного навчання, навіть стат. методи не використовуються.

З точки зору бізнесу ефект застосування значний і показовий. В умовах жорсткого часового пресингу робота була виконана в строк. При цьому на це не було витрачено жодних коштів, якщо не рахувати час співробітників, що так чи інакше вже входить до ФОП.

Завдання #2. Моніторинг джерел даних на предмет пошуку аномалій і прогнозованих відхилень
Постановка завдання досить проста і класична для завдань будь-якого моніторингу – зібрати дані і повідомити відповідальних про будь-які проблеми. І, природно, відобразити це все в дружньому інтерфейсу веб-інтерфейсі. Класична ручна обробка в Excel давно втратила свою актуальність, оскільки вимагала постійних людських витрат, була вкрай повільною, допускалися помилки, аналіз здійснювався за простим моделям і шляхом пильного погляду в дані.

Також було кілька нюансів, дуже ускладнюють роботу:
  1. Елементи були вельми різнорідні, включаючи github, локальні файли, json відповіді REST API.
  2. Тимчасові мітки в джерелах могли йти в довільному порядку, могли надходити дані за вже «закриті» періоди (відвантаження приходили пачками).
  3. Пропущені дані, різні формати даних, нерегулярні временн'ті ряди, отримання агрегатних метрик замість вихідних даних (наприклад, ковзне середнє замість значення).
  4. Це не разові обчислення, а постійний процес 24x7.
Оскільки першочерговим завданням була обробка даних та прогнозна аналітика, то для розв'язання задачі був обраний мову R. Для забезпечення безперервної роботи можна було піти класичним варіантом – R скрипти на запуск за розкладом. Але ми пішли іншим, більш елегантним шляхом.

Згідно вимогам, необхідно було забезпечити GUI на базі Web. Для його створення ми використовували Shiny Server. А специфіка Shiny додатків така, що вони реактивні (реагують на події) і, будучи запущеним, інстанси програми залишається активним. І тут ми згадуємо мантру класичних Windows API додатків:
WHILE(GETMESSAGE(&MSG, NULL, 0, 0) > 0)
{
TRANSLATEMESSAGE(&MSG);
DISPATCHMESSAGE(&MSG);
}

Ось він відповідь. Наш додаток і сама виступатиме в якості планувальника. Вішаємо обробник таймера + використовуємо подієво запускається перечет реактивних структур даних і инвалидацию графічних елементів. Додаємо обробку винятків і шпигуємо логированием. Все, включаючи збір даних, їх обробку, математичні алгоритми, вивантаження назовні і запуск зовнішніх виконавчих елементів, GUI і інтерактивна візуалізація реалізуються в рамках R мови і середовища RStudio. Також, розвинені засоби профілювання і аналізу об'єктів дозволяють оптимізувати програми по часу виконання та обсягом пам'яті, що використовується.

Прототип GUI на синтетичних даних з'явився протягом 1,5 тижнів. Фінальний портал, стабільно працюючий 24x7 допрацювали протягом 1.5 місяців. Поки що особливої потреби немає, але у разі необхідності зможемо в пару кліків видати назовні для мобільного додатка всю аналітику через REST API засобами DeployR.

Висновок
У 2014-му році ми використовували мову R тільки як інструмент для проведення розрахунків за складним математичним алгоритмом на обмеженому наборі структурованих даних.

У 2016-му році ми успішно застосовували екосистему R для вирішення локальних, але складних завдань по автоматизації роботи з даними і можемо впевнено стверджувати, що кошти R в конфігурації 2016 року володіють всіма необхідними властивостями для успішного вирішення цих завдань.

Інтенсивний розвиток пакетів R по роботі з даними та засобів інтерактивної візуалізації, придбання Microsoft комерційної гілки R дає всі підстави вважати, що в найближчі 2-3 роки можливість екосистеми R багаторазово зростуть. Зокрема, активний розвиток PowerBI і включення R в SQL Serever 2016, обов'язкова підтримка провідними системами візуалізації (з популярних в Росії це Qlick і Tableau) тісної інтеграції з R, підтримка кластерних обчислень робота з Big Data платформами в редакціях enterprise і інші цікаві ініціативи явно вказують на великий потенціал R екосистеми в бізнес-завдання.

Але чекати чудес ще кілька років немає ніякого сенсу. Вже зараз можна засукати рукави і спробувати зайнятися автоматизацією бізнес-завдань на R, яких у будь-якій компанії може бути не один десяток. Економія коштів для компанії забезпечена, фан і виклик для виконавців – забезпечений в квадраті.
Джерело: Хабрахабр

0 коментарів

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