Neues Open-Source-Framework für maschinelles Lernen, geschrieben in Java PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Neues Open-Source-Framework für maschinelles Lernen, geschrieben in Java

Ich freue mich, Ihnen mitteilen zu können, dass das Datumbox Machine Learning Framework jetzt Open Source unter GPL 3.0 ist und Sie seinen Code herunterladen können von Github!

Was ist dieser Rahmen?

Das Datumbox Framework für maschinelles Lernen ist ein in Java geschriebenes Open-Source-Framework, das die schnelle Entwicklung von Machine-Learning-Modellen und statistischen Anwendungen ermöglicht. Es ist der Code, der derzeit die Datumbox-API aktiviert. Das Hauptaugenmerk des Frameworks liegt darin, eine große Anzahl von maschinellen Lernalgorithmen und statistischen Methoden einzubeziehen und mit kleinen bis mittelgroßen Datensätzen umgehen zu können. Obwohl das Framework darauf abzielt, die Entwicklung von Modellen aus verschiedenen Bereichen zu unterstützen, bietet es auch Werkzeuge, die besonders nützlich in Anwendungen der Verarbeitung natürlicher Sprache und der Textanalyse sind.

Welche Arten von Modellen/Algorithmen werden unterstützt?

Das Framework gliedert sich in mehrere Schichten wie Machine Learning, Statistik, Mathematik, Algorithmen und Utilities. Jeder von ihnen bietet eine Reihe von Klassen, die zum Trainieren von Modellen für maschinelles Lernen verwendet werden. Die beiden wichtigsten Schichten sind die Statistik- und die Machine Learning-Schicht.

Die Statistikebene bietet Klassen zum Berechnen deskriptiver Statistiken, zum Durchführen verschiedener Arten von Stichproben, zum Schätzen von CDFs und PDFs aus häufig verwendeten Wahrscheinlichkeitsverteilungen und zum Durchführen von über 35 parametrischen und nicht parametrischen Tests. Solche Klassentypen sind normalerweise erforderlich, wenn eine erklärende Datenanalyse, Stichprobenziehung und Merkmalsauswahl durchgeführt werden.

Die Ebene des maschinellen Lernens bietet Klassen, die in einer Vielzahl von Problemen verwendet werden können, darunter Klassifikation, Regression, Clusteranalyse, Themenmodellierung, Dimensionsreduktion, Merkmalsauswahl, Ensemble-Lernen und Empfehlungssysteme. Hier sind einige der unterstützten Algorithmen: 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 und mehr.

Datumbox Framework VS Mahout VS Scikit-Learn

Sowohl Mahout als auch Scikit-Learn sind großartige Projekte und beide haben völlig unterschiedliche Ziele. Mahout unterstützt nur eine sehr begrenzte Anzahl von Algorithmen, die parallelisiert werden können und verwendet daher das Map-Reduce-Framework von Hadoop, um Big Data zu verarbeiten. Auf der anderen Seite unterstützt Scikit-Learn eine große Anzahl von Algorithmen, kann aber keine großen Datenmengen verarbeiten. Darüber hinaus wurde es in Python entwickelt, einer großartigen Sprache für Prototyping und Scientific Computing, aber nicht mein persönlicher Favorit für die Softwareentwicklung.

Das Datumbox Framework sitzt in der Mitte der beiden Lösungen. Es versucht eine große Anzahl von Algorithmen zu unterstützen und ist in Java geschrieben. Dies bedeutet, dass es einfacher in Produktionscode integriert werden kann, es einfacher optimiert werden kann, um den Speicherverbrauch zu reduzieren, und es in Echtzeitsystemen verwendet werden kann. Obwohl Datumbox Framework derzeit mit mittelgroßen Datensätzen umgehen kann, liegt es im Rahmen meiner Pläne, es auf große Datensätze zu erweitern.

Wie stabil ist es?

Die frühen Versionen des Frameworks (bis 0.3.x) wurden im August und September 2013 entwickelt und in PHP geschrieben (ja!). Im Mai und Juni 2014 (Versionen 0.4.x) wurde das Framework in Java neu geschrieben und um zusätzliche Funktionen erweitert. Beide Zweige wurden intensiv in kommerziellen Anwendungen getestet, einschließlich der Datumbox-API. Die aktuelle Version ist 0.5.0 und scheint ausgereift genug, um als erste öffentliche Alpha-Version des Frameworks veröffentlicht zu werden. Allerdings ist es wichtig zu beachten, dass einige Funktionalitäten des Frameworks gründlicher getestet werden als andere. Da es sich bei dieser Version außerdem um eine Alpha-Version handelt, sollten Sie bei zukünftigen Versionen mit drastischen Änderungen rechnen.

Warum habe ich es geschrieben und warum es Open Source?

Meine Beschäftigung mit Machine Learning und NLP reicht bis ins Jahr 2009 zurück, als ich WebSEOAnalytics.com mitbegründete. Seitdem entwickle ich Implementierungen verschiedener Machine-Learning-Algorithmen für verschiedene Projekte und Anwendungen. Leider waren die meisten der ursprünglichen Implementierungen sehr problemspezifisch und konnten kaum für andere Probleme verwendet werden. Im August 2013 entschloss ich mich, Datumbox als persönliches Projekt zu starten und ein Framework zu entwickeln, das die Werkzeuge für die Entwicklung von Machine-Learning-Modellen mit den Schwerpunkten NLP und Textklassifikation bereitstellt. Mein Ziel war es, ein Framework aufzubauen, das in Zukunft wiederverwendet werden kann, um schnell Machine-Learning-Modelle zu entwickeln, in Projekte zu integrieren, die Machine-Learning-Komponenten benötigen oder als Service (Machine Learning as a Service) anbieten.

Und hier bin ich jetzt, einige Codezeilen später, beim Open-Sourcing des Projekts. Wieso den? Die ehrliche Antwort ist, dass es zu diesem Zeitpunkt nicht in meinen Plänen liegt, eine „Lasst uns ein neues Start-up aufbauen“-Reise zu unternehmen. Gleichzeitig hatte ich das Gefühl, dass es keinen Sinn macht, den Code auf meiner Festplatte zu behalten, falls ich ihn in Zukunft brauche. Es war also nur logisch, es als Open-Source zu öffnen. 🙂

Dokumentation?

Wenn Sie die vorherigen beiden Absätze gelesen haben, sollten Sie dies wahrscheinlich kommen sehen. Da das Framework nicht mit dem Gedanken entwickelt wurde, es mit anderen zu teilen, ist die Dokumentation schlecht/nicht vorhanden. Die meisten Klassen und öffentlichen Methoden sind nicht richtig kommentiert und es gibt kein Dokument, das die Architektur des Codes beschreibt. Glücklicherweise sind alle Klassennamen selbsterklärend und das Framework bietet JUnit-Tests für jede öffentliche Methode und jeden Algorithmus, die als Beispiele für die Verwendung des Codes verwendet werden können. Ich hoffe, dass wir mit Hilfe der Community eine ordentliche Dokumentation aufbauen werden, also zähle ich auf euch!

Aktuelle Einschränkungen und zukünftige Entwicklung

Wie jede Software (und insbesondere die Open-Source-Projekte in der Alpha-Version) hat das Datumbox Machine Learning Framework seine eigenen einzigartigen und bezaubernden Einschränkungen. Lassen Sie uns in sie eintauchen:

  1. Dokumentation: Wie bereits erwähnt, ist die Dokumentation mangelhaft.
  2. Kein Multithreading: Leider unterstützt das Framework derzeit kein Multithreading. Natürlich sollten wir beachten, dass nicht alle maschinellen Lernalgorithmen parallelisiert werden können.
  3. Code-Beispiele: Da das Framework gerade erst veröffentlicht wurde, finden Sie im Web keine anderen Codebeispiele als die, die das Framework in Form von JUnit-Tests bereitstellt.
  4. Codestruktur: Eine solide Architektur für jedes große Projekt zu erstellen ist immer eine Herausforderung, geschweige denn, wenn Sie mit Machine-Learning-Algorithmen umgehen müssen, die sich erheblich unterscheiden (überwachtes Lernen, unüberwachtes Lernen, Algorithmen zur Dimensionsreduktion usw.).
  5. Modellpersistenz und große Datensammlungen: Derzeit können die Modelle trainiert und entweder auf Dateien auf der Festplatte oder in MongoDB-Datenbanken gespeichert werden. Um mit großen Datenmengen umgehen zu können, müssen andere Lösungen untersucht werden. Zum Beispiel MapDB scheint ein guter Kandidat für das Speichern von Daten und Parametern während des Trainings zu sein. Darüber hinaus ist es wichtig, alle 3 . zu entfernenrd Parteibibliotheken, die derzeit mit der Persistenz der Modelle umgehen und eine bessere trockene und modulare Lösung entwickeln.
  6. Neue Algorithmen/Tests/Modelle: Es gibt so viele großartige Techniken, die derzeit nicht unterstützt werden (insbesondere für die Zeitreihenanalyse).

Leider ist das alles zu viel Arbeit und es gibt so wenig Zeit. Deshalb, wenn Sie an dem Projekt interessiert sind, treten Sie vor und helfen Sie mir bei einem der oben genannten Punkte. Außerdem würde ich mich freuen, von Leuten zu hören, die Erfahrung mit Open-Sourcing mittelgroßen Projekten haben und Tipps zu deren Verwaltung geben könnten. Außerdem wäre ich jedem mutigen Menschen dankbar, der es wagt, in den Code zu schauen und einige Klassen oder öffentliche Methoden zu dokumentieren. Zu guter Letzt, wenn Sie das Framework für etwas Interessantes verwenden, schreiben Sie mir bitte eine Nachricht oder teilen Sie es mit einem Blogbeitrag.

Abschließend möchte ich meiner lieben Kyriaki dafür danken, dass sie mich beim Schreiben dieses Projekts toleriert hat, meinem Freund und Super-Ninja-Java-Entwickler Eleftherios Bampaletakis für die Mithilfe bei wichtigen Java-Fragen und für die Mitarbeit im Projekt. Ich freue mich auf Ihre Kommentare.

Zeitstempel:

Mehr von Bezugsbox