Огляд Knime Analytics Platform — open source системи для аналізу даних

ПРО KNIME
Вашій увазі пропонується огляд Knime Analytics Platform – open source фреймворку для аналізу даних. Даний фреймворк дозволяє реалізовувати повний цикл аналізу даних включає читання даних з різних джерел, перетворення і фільтрацію, власне аналіз, візуалізацію і експорт.

Скачати KNIME (eclipse-based десктоп додаток) можна звідси: www.knime.org

Кому може бути цікава ця платформа:

  • Тим, хто хоче аналізувати дані
  • Тим, хто хоче аналізувати дані і не володіє навичками програмування
  • Тим, хто хоче покопатися в непоганий бібліотеці реалізованих алгоритмів і, можливо, дізнатися щось нове

Workflows
У Knime процес програмування логіки здійснюється через створення Workflow. Workflow складається з вузлів, які виконують ту чи іншу функцію (наприклад читання даних з БД, трансформація, візуалізація). Вузли, відповідно, з'єднуються між собою стрілками, які показують напрям рух даних.

image

(картинка з офіційного сайту)

Після того як workflow створений, його можна запустити на виконання. Після того як workflow запущений на виконання, в базовому сценарії вузли workflow починають відпрацьовувати один за одним, починаючи з самого першого. Якщо в ході виконання того чи іншого сайту виникла помилка, то виконання всієї гілки наступної за ним припиняється. Існує можливість перезапуску workflow не з першого, а з довільного вузла.

Світлофор біля кожного вузла відображає його поточне стан – червоний – помилка, жовтий – готовий до виконання, зелений – виконаний.

Nodes
Workflow складається з вузлів (або «нсд»). Практично у кожного сайту є конфігураційний діалог в якому можна настроїти властивості.

Всі вузли розбиті на категорії:


Підтримуються наступні типи вузлів: IO — введення/виведення даних (наприклад читання CSV), Manipulation – перетворення даних (включаючи фільтрацію рядків, стовпців, сортування), Views – візуалізація даних (побудова різних графіків включаючи Histogram, Pie Chart, Scatter Plot, etc), Database – можливість підключення до бази даних, читання/запису, Workflow Control – створення циклів, итерирование груп в ході виконання workflow та інше.

З вузлів реалізують аналіз даних доступні різні статистичні методи (включаючи лінійну кореляцію, перевірку гіпотез), а також методи Data Mining (наприклад нейронні мережі, побудова decision trees, cluster view).

На офіційному сайті є хороша діаграма показує як можна компонувати вузли різних типів в єдиний flow:

image
Приклад workflow #1: побудова простого Scatter Plot
Розглянемо приклад простого workflow який витягає дані, виробляє JOIN значення по якомусь полю ID, фільтрацію і візуалізацію результату на Scatter Plot.



В даному workflow ми створюємо два підключення до БД через Database Table Connector. Всередині Database Table Connector-ів знаходяться SQL-запити витягають необхідні дані. За допомогою Database Connection Table Reader дані безпосередньо вивантажуються. Після того як дані прочитані Reader-ами, вони приходять у вузол Joiner, в якому виконується операція, відповідно, JOIN. У вузлі String to Number відбувається перетворення рядкових значень у чисельні, далі фільтруються зайві стовпці і нарешті дані приходять в визуализационный вузол Scatter Plot.

Далі, після успішного виконання Flow, можна натиснути на View Scatter Plot в контекстному меню і подивитися результат візуалізації:


Побудований графік відкривається в новому вікні.


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

Приклад workflow #2: Correlation Analysis
Розглянемо ще один приклад. Хочеться зробити відносно велику вибірку даних з БД, згрупувати вибірку значень деякого поля, і всередині кожної групи знайти коррелляцию значень з цієї групи і цільового вектора.



В даному прикладі відкривається два підключення до БД. Через одне з'єднання (Node 2) SQL-запитом витягується вектор із декількох значень. Це буде цільовий вектор до якого будемо шукати кореляцію.

Через інше з'єднання (SQL-запитом) витягується відносно велика вибірка даних. Далі дані потрапляють в Group Loop Start – Workflow Control оператор який робить GROUP BY, всередині цього loop-а до даними JOIN-ится цільовий вектор, робиться перетворення значень рядка в чисельні і вважається лінійна кореляція. Результати обчислень акумулюються у вузлі End Loop. На виході з цього вузла застосовується фільтрація по рядкам і стовпцям, нормалізація значень і побудова Box Plot.

Після виконання всього workflow і натискання на View: Box Plot відкривається вікно з підрахованими значеннями для Box Plot.


Альтернативний варіант – застосувати операцію Pivot і за допомогою JOIN додати цільовий вектор, а потім итерироваться по стовпцях і вважати кореляцію. На workflow надана заготівля для альтернативного варіанту (у вигляді вузла Pivot), але сам підхід не реалізований.

Додаткові можливості
З цікавих особливостей, на які я звернув увагу, можна виділити наступні:

  • Виконання workflow на сервері і надання доступу до результатів роботи через REST API. Дана функціональність доступна при купівлі KNIME-Server
  • Повний дистрибутив KNIME-а з усіма плагінами важить майже 2 гігабайти. В даний дистрибутив входить велика кількість сторонніх бібліотек (наприклад JFreeChart), які доступні у вигляді вузлів
  • Реалізована можливість зробити операцію Pivot прямо на базі даних або даних завантажених в локальний кеш
  • Доступна велика бібліотека прикладів
  • Робота з Hadoop і іншими BigData джерелами
Проблеми і висновки
Дана система надає досить гнучкий підхід до побудови алгоритмів аналізу, перетворення та візуалізації даних, але все ж на складних workflow, на мій погляд, можна зіткнутися з наступними проблемами:

  • Недостатньо гнучка поведінка вузлів – вони працюють так як хочуть і подтюнить якісь нюанси роботи може бути досить складно (якщо не залазити всередину коду)
  • Програмування складних flow може вилитися в довгу і складну діаграму з циклами, умовами що приведе до складності читання і налагодження. В даному випадку написання коду на R або Python може бути більш правильним вибором
Даний фреймоврк добре підійде для людей не сильно знайомих з програмуванням, з його допомогою можна швидко створювати прості і середньої складності workflow і надавати до них доступ через REST. Це може бути затребуване в будь-яких організаціях.

Data scientists, можливо, теж знайдуть для себе багато цікавого і можуть розглянути цю систему як додаток до R або Python.

Цей фреймворк хороший також для роботи зі студентами, оскільки наочно видно все, що відбувається з даними, за яким гілках вони переміщаються і як перетворюються. Студенти можуть вивчати реалізацію існуючих вузлів, дописувати свої компоненти (вузли) і поповнювати ними бібліотеку.
Джерело: Хабрахабр

0 коментарів

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