Nouveau framework d'apprentissage automatique open source écrit en Java PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Nouveau framework d'apprentissage automatique open source écrit en Java

Je suis heureux d'annoncer que Datumbox Machine Learning Framework est désormais open source sous GPL 3.0 et que vous pouvez télécharger son code sur Github!

Quel est ce cadre?

La Framework d'apprentissage automatique Datumbox est un framework open-source écrit en Java qui permet le développement rapide de modèles d'apprentissage automatique et d'applications statistiques. C'est le code qui alimente actuellement l'API Datumbox. L'objectif principal du cadre est d'inclure un grand nombre d'algorithmes d'apprentissage automatique et de méthodes statistiques et de pouvoir gérer des ensembles de données de petite et moyenne taille. Même si le cadre vise à aider au développement de modèles dans divers domaines, il fournit également des outils particulièrement utiles dans les applications de traitement du langage naturel et d'analyse de texte.

Quels types de modèles / algorithmes sont pris en charge?

Le cadre est divisé en plusieurs couches telles que l'apprentissage automatique, les statistiques, les mathématiques, les algorithmes et les utilitaires. Chacun d'eux propose une série de classes utilisées pour la formation de modèles d'apprentissage automatique. Les deux couches les plus importantes sont les statistiques et la couche d'apprentissage automatique.

La couche Statistiques fournit des classes pour calculer des statistiques descriptives, effectuer divers types d'échantillonnage, estimer les CDF et les PDF à partir de distributions de probabilité couramment utilisées et effectuer plus de 35 tests paramétriques et non paramétriques. Ces types de classes sont généralement nécessaires lors de l'analyse des données explicatives, de l'échantillonnage et de la sélection des caractéristiques.

La couche d'apprentissage automatique fournit des classes pouvant être utilisées dans un grand nombre de problèmes, notamment la classification, la régression, l'analyse de cluster, la modélisation de sujets, la réduction de dimensionnalité, la sélection de fonctionnalités, l'apprentissage d'ensemble et les systèmes de recommandation. Voici quelques-uns des algorithmes pris en charge: LDA, Max Entropy, Naive Bayes, SVM, Bootstrap Aggregating, Adaboost, Kmeans, Hierarchical Clustering, Dirichlet Process Mixture Models, Softmax Regression, Ordinal Regression, Linear Regression, Stepwise Regression, PCA et plus encore.

Datumbox Framework VS Mahout VS Scikit-Learn

Mahout et Scikit-Learn sont tous deux d'excellents projets et tous deux ont des objectifs complètement différents. Mahout ne prend en charge qu'un nombre très limité d'algorithmes qui peuvent être parallélisés et utilisent donc le framework Map-Reduce de Hadoop pour gérer le Big Data. D'autre part, Scikit-Learn prend en charge un grand nombre d'algorithmes, mais il ne peut pas gérer une énorme quantité de données. De plus, il est développé en Python, qui est un excellent langage pour le prototypage et le calcul scientifique mais pas mon préféré pour le développement de logiciels.

Le framework Datumbox se situe au milieu des deux solutions. Il essaie de prendre en charge un grand nombre d'algorithmes et il est écrit en Java. Cela signifie qu'il peut être intégré plus facilement dans le code de production, il peut plus facilement être modifié pour réduire la consommation de mémoire et il peut être utilisé dans des systèmes en temps réel. Enfin, même si actuellement Datumbox Framework est capable de gérer des ensembles de données de taille moyenne, je prévois de l'étendre pour gérer des ensembles de données de grande taille.

Quelle est sa stabilité?

Les premières versions du framework (jusqu'à 0.3.x) ont été développées en août et septembre 2013 et elles ont été écrites en PHP (oui!). En mai et juin 2014 (versions 0.4.x), le framework a été réécrit en Java et amélioré avec des fonctionnalités supplémentaires. Les deux branches ont été fortement testées dans des applications commerciales, y compris l'API Datumbox. La version actuelle est 0.5.0 et elle semble suffisamment mature pour être publiée en tant que première version alpha publique du framework. Cela dit, il est important de noter que certaines fonctionnalités du framework sont testées de manière plus approfondie que d'autres. De plus, puisque cette version est alpha, vous devez vous attendre à des changements drastiques sur les futures versions.

Pourquoi je l'ai écrit et pourquoi je l'ai open-source?

Mon implication dans le Machine Learning et la PNL remonte à 2009 lorsque j'ai co-fondé WebSEOAnalytics.com. Depuis, j'ai développé des implémentations de divers algorithmes d'apprentissage automatique pour divers projets et applications. Malheureusement, la plupart des implémentations originales étaient très spécifiques à un problème et elles ne pouvaient guère être utilisées dans aucun autre problème. En août 2013, j'ai décidé de lancer Datumbox en tant que projet personnel et de développer un cadre qui fournit les outils pour développer des modèles d'apprentissage automatique en se concentrant dans le domaine de la PNL et de la classification de texte. Mon objectif était de créer un cadre qui serait réutilisé à l'avenir pour développer rapidement des modèles d'apprentissage automatique, en l'incorporant dans des projets nécessitant des composants d'apprentissage automatique ou en l'offrant en tant que service (Machine Learning as a Service).

Et me voici maintenant, plusieurs lignes de code plus tard, open-sourcing du projet. Pourquoi? La réponse honnête est qu'à ce stade, ce n'est pas dans mes plans de passer par un parcours «construisons une nouvelle start-up». En même temps, j'ai senti que garder le code sur mon disque dur au cas où j'en aurais besoin à l'avenir n'avait pas de sens. Donc, la seule chose logique à faire était de l'open-source. 🙂

Documentation?

Si vous lisez les deux paragraphes précédents, vous devriez probablement le voir venir. Étant donné que le cadre n'a pas été développé en pensant que je le partagerais avec d'autres, la documentation est médiocre / inexistante. La plupart des classes et méthodes publiques ne sont pas correctement commentées et il n'y a pas de document décrivant l'architecture du code. Heureusement, tous les noms de classe sont explicites et le framework fournit des tests JUnit pour chaque méthode et algorithme publics et ceux-ci peuvent être utilisés comme exemples d'utilisation du code. J'espère qu'avec l'aide de la communauté, nous allons construire une documentation appropriée, donc je compte sur vous!

Limitations actuelles et développement futur

Comme dans chaque logiciel (et en particulier les projets open-source en version alpha), le Datumbox Machine Learning Framework est livré avec ses propres limitations uniques et adorables. Explorons-les:

  1. Documentation: Comme mentionné précédemment, la documentation est médiocre.
  2. Pas de multithreading: Malheureusement, le framework ne prend actuellement pas en charge le multithreading. Bien sûr, nous devons noter que tous les algorithmes d'apprentissage automatique ne peuvent pas être parallélisés.
  3. Exemples de code: Puisque le framework vient d'être publié, vous ne pouvez pas trouver d'exemples de code sur le web autres que ceux fournis par le framework sous forme de tests JUnit.
  4. Structure du code: Créer une architecture solide pour tout grand projet est toujours un défi, et encore moins lorsque vous devez gérer des algorithmes d'apprentissage automatique qui diffèrent considérablement (apprentissage supervisé, apprentissage non supervisé, algorithmes de réduction de dimensionnalité, etc.).
  5. Persistance du modèle et grandes collections de données: Actuellement, les modèles peuvent être entraînés et stockés sur des fichiers sur disque ou dans des bases de données MongoDB. Pour pouvoir traiter une grande quantité de données, d'autres solutions doivent être recherchées. Par exemple MapDB semble être un bon candidat pour stocker des données et des paramètres pendant l'entraînement. De plus, il est important de supprimer 3rd bibliothèques partielles qui gèrent actuellement la persistance des modèles et développent une meilleure solution sèche et modulaire.
  6. Nouveaux algorithmes /tests / modèles: Il y a tellement de bonnes techniques qui ne sont actuellement pas prises en charge (en particulier pour l'analyse de séries chronologiques).

Malheureusement, tout ce qui précède demande trop de travail et il reste si peu de temps. C'est pourquoi si vous êtes intéressé par le projet, avancez et donnez-moi un coup de main avec l'un des éléments ci-dessus. De plus, je serais ravi d'entendre des personnes qui ont de l'expérience dans les projets de taille moyenne à grande open-sourcing et qui pourraient fournir des conseils sur la façon de les gérer. De plus, je serais reconnaissant à toute âme courageuse qui oserait examiner le code et documenter certaines classes ou méthodes publiques. Enfin, si vous utilisez le framework pour quelque chose d'intéressant, envoyez-moi un message ou partagez-le avec un article de blog.

Enfin je voudrais remercier mon amour Kyriaki de m'avoir toléré lors de l'écriture de ce projet, mon ami et développeur super-ninja-Java Eleftherios Bampaletakis pour avoir aidé avec les problèmes Java importants et vous pour vous être impliqué dans le projet. J'attends vos commentaires avec impatience.

Horodatage:

Plus de Boîte de données