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

Новая платформа машинного обучения с открытым исходным кодом, написанная на Java

Я рад объявить, что среда машинного обучения Datumbox теперь открыта из GPL 3.0, и вы можете скачать ее код с Github!

Что это за рамки?

Ассоциация Структура машинного обучения Datumbox - это среда с открытым исходным кодом, написанная на Java, которая позволяет быстро разрабатывать модели машинного обучения и статистические приложения. Это код, который в настоящее время запускает Datumbox API. Основное внимание в структуре уделяется включению большого количества алгоритмов машинного обучения и статистических методов, а также возможности обработки небольших и средних наборов данных. Несмотря на то, что структура предназначена для помощи в разработке моделей из различных областей, она также предоставляет инструменты, которые особенно полезны в приложениях для обработки естественного языка и анализа текста.

Какие типы моделей / алгоритмов поддерживаются?

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

Слой статистики предоставляет классы для расчета описательной статистики, выполнения различных типов выборки, оценки CDF и PDF-файлов из широко используемых распределений вероятности и выполнения более 35 параметрических и непараметрических тестов. Такие типы классов обычно необходимы при выполнении пояснительного анализа данных, выборки и выбора признаков.

Уровень машинного обучения предоставляет классы, которые можно использовать для решения большого числа задач, включая классификацию, регрессию, кластерный анализ, моделирование тем, уменьшение размерности, выбор характеристик, ансамблевое обучение и системы рекомендаций. Вот некоторые из поддерживаемых алгоритмов: LDA, Макс. Энтропия, Наивный Байес, SVM, Агрегирование начальной загрузки, Adaboost, Kmeans, Иерархическая кластеризация, Модели процессов Дирихле, регрессия Softmax, Порядковая регрессия, Линейная регрессия, Ступенчатая регрессия, PCA и другие.

Datumbox Framework против Mahout против 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 и дополнена дополнительными функциями. Обе ветви были тщательно протестированы в коммерческих приложениях, включая Datumbox API. Текущая версия - 0.5.0, и она кажется достаточно зрелой, чтобы быть выпущенной в качестве первой общедоступной альфа-версии фреймворка. Сказав это, важно отметить, что некоторые функциональные возможности платформы проверены более тщательно, чем другие. Более того, поскольку эта версия является альфа-версией, вы должны ожидать радикальных изменений в будущих версиях.

Почему я написал это и почему я с открытым исходным кодом это?

Мое участие в Машинном обучении и НЛП началось в 2009 году, когда я стал соучредителем WebSEOAnalytics.com. С тех пор я занимаюсь разработкой реализаций различных алгоритмов машинного обучения для различных проектов и приложений. К сожалению, большинство оригинальных реализаций были очень специфичными для проблемы, и их вряд ли можно было использовать в любой другой проблеме. В августе 2013 года я решил запустить Datumbox в качестве личного проекта и разработать структуру, которая предоставляет инструменты для разработки моделей машинного обучения, ориентированных на области НЛП и текстовой классификации. Моя цель состояла в том, чтобы создать структуру, которая в будущем будет многократно использоваться для быстрой разработки моделей машинного обучения, включения ее в проекты, которые требуют компонентов машинного обучения или предлагают их как услугу (Machine Learning as a Service).

И вот я здесь, несколько строк кода позже, открываю исходный код проекта. Почему? Честный ответ заключается в том, что на данный момент я не планирую проходить путь «давайте создадим новый стартап». В то же время я чувствовал, что хранить код на моем жестком диске на случай, если он понадобится мне в будущем, не имеет смысла. Поэтому единственной логичной вещью было сделать это с открытым исходным кодом. 🙂

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

Если вы прочитали два предыдущих абзаца, вы, вероятно, заметили это. Поскольку фреймворк не разрабатывался, имея в виду, что я поделюсь им с другими, документация плохая / отсутствует. Большинство классов и общедоступных методов не прокомментированы должным образом, и нет документа, описывающего архитектуру кода. К счастью, все имена классов говорят сами за себя, и фреймворк предоставляет тесты JUnit для каждого общедоступного метода и алгоритма, и их можно использовать в качестве примеров того, как использовать код. Я надеюсь, что с помощью сообщества мы создадим надлежащую документацию, поэтому я рассчитываю на вас!

Текущие ограничения и будущее развитие

Как и в любом программном обеспечении (и особенно в проектах с открытым исходным кодом в альфа-версии), Datumbox Machine Learning Framework имеет свои уникальные и привлекательные ограничения. Давайте копаться в них:

  1. Документация: Как упоминалось ранее, документация плохая.
  2. Нет многопоточности: К сожалению, фреймворк в настоящее время не поддерживает многопоточность. Конечно, мы должны отметить, что не все алгоритмы машинного обучения могут быть распараллелены.
  3. Примеры кода: Поскольку фреймворк только что был опубликован, вы не можете найти в Интернете никаких примеров кода, кроме тех, которые предоставляются фреймворком в форме тестов JUnit.
  4. Структура кода: Создание надежной архитектуры для любого крупного проекта всегда является сложной задачей, не говоря уже о том, что вам приходится иметь дело с алгоритмами машинного обучения, которые значительно различаются (контролируемое обучение, неконтролируемое обучение, алгоритмы уменьшения размерности и т. Д.).
  5. Постоянство модели и большой сбор данных: В настоящее время модели можно обучать и хранить либо в файлах на диске, либо в базах данных MongoDB. Чтобы иметь возможность обрабатывать большие объемы данных, необходимо изучить другие решения. Например MapDB кажется хорошим кандидатом для хранения данных и параметров во время обучения. Кроме того, важно удалить любые 3rd партийные библиотеки, которые в настоящее время обрабатывают постоянство моделей и разрабатывают лучшее сухое и модульное решение.
  6. Новые алгоритмы /тесты / модели: Есть так много замечательных методов, которые в настоящее время не поддерживаются (особенно для анализа временных рядов).

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

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

Отметка времени:

Больше от Датумбокс