- 4 мая 2015 г.
- Василис Вриниотис
- . Без комментариев
Вышла новая версия Datumbox Machine Learning Framework! Загрузите его сейчас с Гитхаб или Центральный репозиторий Maven.
Что нового?
Основное внимание версия 0.6.0 заключается в расширении платформы для обработки больших данных, улучшении архитектуры кода и общедоступных API-интерфейсов, упрощении анализа данных, улучшении документации и переходе на разрешающую лицензию.
Давайте подробно рассмотрим изменения этой версии:
- Обработка больших данных: Улучшенное управление памятью и новые механизмы постоянного хранения позволили платформе обрабатывать большие наборы данных размером в несколько ГБ. Добавление поддержки MapDB Механизм базы данных позволяет платформе избегать хранения всех данных в памяти и, таким образом, иметь возможность обрабатывать большие данные. Механизм InMemory по умолчанию переработан, чтобы сделать его более эффективным, а механизм MongoDB был удален из-за проблем с производительностью.
- Улучшенная и упрощенная архитектура Framework: Уровень абстракции значительно снижен, а некоторые основные компоненты переработаны. В частности, переписаны механизмы постоянного хранения и удалены несколько ненужных функций и структур данных.
- Новые общедоступные API, похожие на Scikit-Learn: Все общедоступные методы алгоритмов изменены, чтобы напоминать API Scikit-Learn Python (парадигма подгонки/прогнозирования/преобразования). Новые общедоступные методы более гибкие, простые и удобные в использовании.
- Упрощение анализа данных: Новая платформа поставляется с набором удобных методов, позволяющих быстро анализировать файлы CSV или текстовые файлы и преобразовывать их в объекты набора данных.
- Улучшенная документация: Все общедоступные/защищенные классы и методы Framework задокументированы с использованием комментариев Javadoc. Кроме того, новая версия предоставляет улучшенные тесты JUnit, которые являются отличными примерами использования каждого алгоритма фреймворка.
- Новая лицензия Apache: Программная лицензия фреймворка изменена с «Стандартная общественная лицензия GNU v3.0” к “Лицензия Apache, версия 2.0“. Новая лицензия является разрешительной и позволяет распространять ее в рамках коммерческого программного обеспечения.
Поскольку большая часть фреймворка была переписана, чтобы сделать его более эффективным и простым в использовании, версия 0.6.0 не совместим с предыдущими версиями с более ранними версиями фреймворка. Наконец, фреймворк перешел из фазы разработки Alpha в фазу Beta, и его следует считать более стабильным.
Как это использовать
В предыдущем сообщении блога мы предоставили подробное руководство по установке Framework. Это руководство по-прежнему действительно для новой версии. Кроме того, в этой новой версии вы можете найти несколько Примеры кода о том, как использовать модели и алгоритмы Framework.
Следующие шаги и дорожная карта
Разработка фреймворка будет продолжена, и перед выпуском версии 1.0 должны быть внесены следующие улучшения:
- Насинг Фреймворк из консоли: Несмотря на то, что основной целью платформы является помощь в разработке приложений машинного обучения, ее следует упростить для разработчиков, не использующих Java. Следуя тому же подходу, что и Mahout, фреймворк должен предоставлять доступ к алгоритмам с помощью консольных команд. Интерфейс должен быть простым, легким в использовании, а различные алгоритмы должны легко комбинироваться.
- Поддержка многопоточности: В настоящее время платформа использует потоки только для процессов очистки и асинхронной записи на диск. Тем не менее часть алгоритмов можно распараллелить, что значительно сократит время выполнения. Решение в этих случаях должно быть элегантным и должно как можно меньше изменять внутреннюю логику/математику алгоритмов машинного обучения.
- Сократите использование двумерных массивов и матриц: Небольшое количество алгоритмов по-прежнему использует двумерные массивы и матрицы. Это приводит к загрузке всех данных в память, что ограничивает размер набора данных, который можно использовать. Некоторые алгоритмы (такие как PCA) должны быть переопределены, чтобы избежать использования матриц, в то время как для других (таких как GaussianDPMM, MultinomialDPMM и т. д.) мы должны использовать разреженные матрицы.
Другие важные задачи, которые должны быть выполнены в следующих версиях:
- Включите новые алгоритмы машинного обучения: Фреймворк может быть расширен для поддержки нескольких замечательных алгоритмов, таких как Mixture of Gaussian, Gaussian Processes, k-NN, деревья решений, факторный анализ, SVD, PLSI, искусственные нейронные сети и т. д.
- Улучшить документацию, Тестовое покрытие & Примеры кода: Создайте лучшую документацию, улучшите тесты JUnit, улучшите комментарии к коду, предоставьте лучшие примеры использования алгоритмов и т. д.
- Улучшить архитектуру & Оптимизировать код: Дальнейшее упрощение и улучшение архитектуры фреймворка, рационализация абстракции, улучшение дизайна, оптимизация скорости и потребления памяти и т. д.
Как видите, это долгий путь, и мне не помешала бы помощь. Если вы готовы принять вызов, напишите мне или отправьте запрос на включение на github.
Благодарности
Я хотел бы поблагодарить Элефтериос Бампалетакис за неоценимый вклад в улучшение архитектуры Framework. Также я хотел бы поблагодарить ej-technologies GmbH за предоставление мне лицензии на их Java Profiler. Более того, мой респект Ян Котек за его потрясающую работу над механизмом хранения MapDB. И последнее, но не менее важное: моя любовь к моей девушке Кириаки за то, что она терпела меня.
Не забудьте скачать код Datumbox v0.6.0 с Гитхаб. Библиотека доступна также на Центральный репозиторий Maven. Для получения дополнительной информации о том, как использовать библиотеку в вашем проекте Java, ознакомьтесь со следующим руководством или прочтите инструкции на главной странице нашего репозитория Github.
Жду ваших комментариев и рекомендаций. Пулл-реквесты всегда приветствуются! 🙂