Нова платформа машинного навчання з відкритим кодом, написана на Java PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Нова платформа машинного навчання з відкритим вихідним кодом, написана на Java

Я радий повідомити, що Datumbox Machine Learning Framework тепер відкритий під GPL 3.0, і ви можете завантажити його код з Github!

Що це за рамка?

Команда Платформа машинного навчання Datumbox це фреймворк з відкритим вихідним кодом, написаний на Java, який дозволяє швидко розвивати моделі машинного навчання та статистичні програми. Це код, який наразі запускає API Datumbox. Основне завдання фреймворка полягає в тому, щоб включити велику кількість алгоритмів машинного навчання та статистичних методів і мати можливість обробляти набори даних малого та середнього розміру. Незважаючи на те, що фреймворк спрямований на надання допомоги в розробці моделей з різних областей, він також надає інструменти, які особливо корисні в програмах обробки природної мови та аналізу тексту.

Які типи моделей/алгоритмів підтримуються?

Фреймворк поділено на кілька рівнів, таких як машинне навчання, статистика, математика, алгоритми та утиліти. Кожен з них передбачає серію класів, які використовуються для навчання моделей машинного навчання. Двома найважливішими рівнями є рівень статистики та рівень машинного навчання.

Рівень статистики надає класи для обчислення описової статистики, виконання різних типів вибірки, оцінки CDF і PDF-файлів із загальновживаних розподілів ймовірностей і виконання понад 35 параметричних і непараметричних тестів. Такі типи класів зазвичай необхідні під час аналізу пояснювальних даних, вибірки та вибору ознак.

Рівень машинного навчання надає класи, які можна використовувати у великій кількості проблем, включаючи класифікацію, регресію, кластерний аналіз, тематичне моделювання, зменшення розмірності, вибір функцій, ансамблеве навчання та системи рекомендацій. Ось деякі з підтримуваних алгоритмів: LDA, Max Entropy, Naive Bayes, SVM, Bootstrap Aggregating, Adaboost, Kmeans, ієрархічна кластеризація, моделі суміші процесів Діріхле, регресія Softmax, порядкова регресія, лінійна регресія, ступінчаста регресія, PCA та інші.

Framework Datumbox VS Mahout VS Scikit-Learn

І Mahout, і Scikit-Learn — чудові проекти, і обидва вони мають абсолютно різні цілі. Mahout підтримує лише дуже обмежену кількість алгоритмів, які можна розпаралелювати і, таким чином, використовувати фреймворк Map-Reduce Hadoop для обробки великих даних. З іншого боку, Scikit-Learn підтримує велику кількість алгоритмів, але не може обробляти величезну кількість даних. Крім того, він розроблений на Python, який є чудовою мовою для створення прототипів і наукових обчислень, але не моєю улюбленою мовою для розробки програмного забезпечення.

Datumbox Framework знаходиться в середині двох рішень. Він намагається підтримувати велику кількість алгоритмів і написаний на Java. Це означає, що його можна простіше включити в виробничий код, його можна легше налаштувати, щоб зменшити споживання пам’яті, і його можна використовувати в системах реального часу. Нарешті, незважаючи на те, що на даний момент Datumbox Framework здатний обробляти набори даних середнього розміру, я планую розширити його для обробки великих наборів даних.

Наскільки це стабільно?

Ранні версії фреймворку (до 0.3.x) були розроблені в серпні та вересні 2013 року і написані на PHP (так!). Протягом травня та червня 2014 року (версії 0.4.x) фреймворк було переписано на Java та доповнено додатковими функціями. Обидві гілки були ретельно перевірені в комерційних програмах, включаючи API Datumbox. Поточна версія — 0.5.0, і вона здається достатньо зрілою, щоб бути випущеною як перша загальнодоступна альфа-версія фреймворку. Сказавши це, важливо відзначити, що деякі функціональні можливості фреймворку перевіряються ретельніше, ніж інші. Крім того, оскільки ця версія є альфа-версією, слід очікувати кардинальних змін у майбутніх випусках.

Чому я написав це і чому я відкриваю його?

Моя участь у машинному навчанні та НЛП сягає 2009 року, коли я був співзасновником WebSEOAnalytics.com. З тих пір я розробляю реалізації різноманітних алгоритмів машинного навчання для різних проектів і додатків. На жаль, більшість оригінальних реалізацій були дуже специфічними для конкретної проблеми, і їх навряд чи можна було використовувати в будь-якій іншій задачі. У серпні 2013 року я вирішив розпочати Datumbox як особистий проект і розробити фреймворк, який надає інструменти для розробки моделей машинного навчання, зосереджених на НЛП та класифікації тексту. Моєю метою було побудувати фреймворк, який буде повторно використаний у майбутньому для швидкої розробки моделей машинного навчання, включення його в проекти, які потребують компонентів машинного навчання або пропонують його як послугу (Машинне навчання як послуга).

І ось я зараз, кілька рядків коду пізніше, відкриваю проект з відкритим кодом. Чому? Чесна відповідь полягає в тому, що на даний момент у мої плани не входить пройти шлях «давайте побудуємо новий стартап». У той же час я відчув, що зберігати код на своєму жорсткому диску, якщо він мені знадобиться в майбутньому, не має сенсу. Тож єдине логічне, що можна було зробити, це відкрити його вихідний код. 🙂

Документація?

Якщо ви прочитали попередні два абзаци, ви, напевно, побачили це. Оскільки фреймворк не був розроблений, маючи на увазі, що я поділюся нею з іншими, документація погана/відсутня. Більшість класів і відкритих методів не прокоментовані належним чином, і немає документа, що описує архітектуру коду. На щастя, всі назви класів зрозумілі самі за собою, і фреймворк надає тести JUnit для кожного загальнодоступного методу та алгоритму, і їх можна використовувати як приклади використання коду. Сподіваюся, що за допомогою спільноти ми побудуємо належну документацію, тому розраховую на вас!

Поточні обмеження та майбутній розвиток

Як і будь-яке програмне забезпечення (і особливо проекти з відкритим кодом в альфа-версії), Datumbox Machine Learning Framework має свої унікальні та чудові обмеження. Давайте вникнемо в них:

  1. Документація: Як згадувалося раніше, документація погана.
  2. Без багатопоточності: На жаль, фреймворк наразі не підтримує багатопоточність. Звичайно, ми повинні зазначити, що не всі алгоритми машинного навчання можна розпаралелювати.
  3. Приклади коду: Оскільки фреймворк щойно опубліковано, ви не можете знайти жодних прикладів коду в Інтернеті, крім тих, які надаються фреймворком у вигляді тестів JUnit.
  4. Структура коду: Створення надійної архітектури для будь-якого великого проекту завжди є складним завданням, не кажучи вже про те, коли вам доводиться мати справу з алгоритмами машинного навчання, які суттєво відрізняються (навчання з наглядом, навчання без нагляду, алгоритми зменшення розмірності тощо).
  5. Постійність моделі та великі колекції даних: На даний момент моделі можна навчати та зберігати або на файлах на диску, або в базах даних MongoDB. Щоб мати можливість обробляти велику кількість даних, необхідно досліджувати інші рішення. Наприклад MapDB здається хорошим кандидатом для зберігання даних і параметрів під час навчання. Крім того, важливо видалити будь-які 3rd партійні бібліотеки, які наразі обробляють постійність моделей і розробляють краще сухе і модульне рішення.
  6. Нові алгоритми/тести/моделі: Існує дуже багато чудових методів, які наразі не підтримуються (особливо для аналізу часових рядів).

На жаль, все вищезазначене – це занадто багато роботи, а часу так мало. Тому, якщо ви зацікавлені в проекті, зробіть крок вперед і допоможіть мені з будь-яким із перерахованих вище. Крім того, я хотів би почути від людей, які мають досвід роботи з відкритим джерелом середніх і великих проектів і можуть надати будь-які поради щодо того, як ними керувати. Крім того, я був би вдячний будь-якій сміливій душі, яка наважиться зазирнути в код і задокументувати деякі класи або публічні методи. І останнє, але не менш важливе, якщо ви використовуєте фреймворк для чогось цікавого, будь ласка, напишіть мені або поділіться ним у блозі.

Наостанок я хотів би подякувати моєму коханому Кіріакі за те, що він терпів мене під час написання цього проекту, мій друг і супер-ніндзя-розробник Java Елефтеріос Бампалетакіс за допомогу у вирішенні важливих проблем Java і за участь у проекті. З нетерпінням чекаю на ваші коментарі.

Часова мітка:

Більше від Датабокс