Nieuw open-source Machine Learning Framework geschreven in Java PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Nieuw open-source Machine Learning Framework geschreven in Java

Ik ben verheugd aan te kondigen dat het Datumbox Machine Learning Framework nu open source is onder GPL 3.0 en dat u de code kunt downloaden van GitHub!

Wat is dit framework?

De Datumbox-framework voor machinaal leren is een open-source framework geschreven in Java dat de snelle ontwikkeling van Machine Learning-modellen en statistische toepassingen mogelijk maakt. Het is de code die momenteel de Datumbox API opstart. De belangrijkste focus van het framework is om een โ€‹โ€‹groot aantal machine learning-algoritmen en statistische methoden op te nemen en om kleine tot middelgrote datasets te kunnen verwerken. Hoewel het raamwerk zich richt op het ondersteunen van de ontwikkeling van modellen uit verschillende velden, biedt het ook tools die bijzonder nuttig zijn in toepassingen voor natuurlijke taalverwerking en tekstanalyse.

Welke soorten modellen / algoritmen worden ondersteund?

Het framework is onderverdeeld in verschillende lagen, zoals machine learning, statistiek, wiskunde, algoritmen en hulpprogramma's. Elk van hen biedt een reeks lessen die worden gebruikt voor het trainen van modellen voor machine learning. De twee belangrijkste lagen zijn de laag Statistieken en de machine learning-laag.

De laag Statistieken biedt klassen voor het berekenen van beschrijvende statistieken, het uitvoeren van verschillende soorten steekproeven, het schatten van CDF's en PDF's van veelgebruikte kansverdelingen en het uitvoeren van meer dan 35 parametrische en niet-parametrische tests. Dergelijke soorten klassen zijn meestal nodig bij het uitvoeren van verklarende gegevensanalyse, steekproeven en selectie van kenmerken.

De Machine Learning-laag biedt klassen die kunnen worden gebruikt in een groot aantal problemen, waaronder classificatie, regressie, clusteranalyse, onderwerpmodellering, vermindering van dimensionaliteit, functiekeuze, ensemble-leren en aanbevelingssystemen. Hier zijn enkele van de ondersteunde algoritmen: 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 en meer.

Datumbox Framework VS Mahout VS Scikit-Learn

Zowel Mahout als Scikit-Learn zijn geweldige projecten en beide hebben compleet verschillende doelen. Mahout ondersteunt slechts een zeer beperkt aantal algoritmen die parallel kunnen lopen en dus Hadoops Map-Reduce-framework gebruiken om Big Data af te handelen. Aan de andere kant ondersteunt Scikit-Learn een groot aantal algoritmen, maar het kan niet overweg met een enorme hoeveelheid gegevens. Bovendien is het ontwikkeld in Python, een geweldige taal voor prototyping en Scientific Computing, maar niet mijn persoonlijke favoriet voor softwareontwikkeling.

Het Datumbox Framework zit midden in de twee oplossingen. Het probeert een groot aantal algoritmen te ondersteunen en het is geschreven in Java. Dit betekent dat het gemakkelijker kan worden opgenomen in de productiecode, dat het gemakkelijker kan worden aangepast om het geheugenverbruik te verminderen en dat het in realtime systemen kan worden gebruikt. Hoewel Datumbox Framework momenteel in staat is om middelgrote datasets te verwerken, ligt het binnen mijn plannen om het uit te breiden om grote datasets te verwerken.

Hoe stabiel is het?

De vroege versies van het framework (tot 0.3.x) zijn ontwikkeld in augustus en september 2013 en ze zijn geschreven in PHP (yeap!). In mei en juni 2014 (versies 0.4.x) werd het framework herschreven in Java en uitgebreid met extra functies. Beide branches zijn zwaar getest in commerciรซle toepassingen, waaronder de Datumbox API. De huidige versie is 0.5.0 en het lijkt volwassen genoeg om te worden vrijgegeven als de eerste openbare alfaversie van het framework. Dat gezegd hebbende, is het belangrijk op te merken dat sommige functionaliteiten van het raamwerk grondiger worden getest dan andere. Bovendien, aangezien deze versie alfa is, zou u drastische veranderingen in de toekomstige releases moeten verwachten.

Waarom ik het heb geschreven en waarom ik het open source heb gemaakt?

Mijn betrokkenheid bij Machine Learning en NLP gaat terug tot 2009 toen ik mede-oprichter was van WebSEOAnalytics.com. Sindsdien heb ik implementaties van verschillende machine learning-algoritmen ontwikkeld voor verschillende projecten en applicaties. Helaas waren de meeste oorspronkelijke implementaties erg probleemspecifiek en konden ze bij geen enkel ander probleem worden gebruikt. In augustus 2013 besloot ik Datumbox te starten als een persoonlijk project en een raamwerk te ontwikkelen dat de tools biedt voor het ontwikkelen van machine learning-modellen die zich richten op het gebied van NLP en tekstclassificatie. Mijn doel was om een โ€‹โ€‹raamwerk te bouwen dat in de toekomst zou worden hergebruikt om snel machine learning-modellen te ontwikkelen, en dit op te nemen in projecten die machine learning-componenten vereisen of het als een service aanbieden (Machine Learning as a Service).

En hier ben ik nu, enkele regels code later, open-sourcing van het project. Waarom? Het eerlijke antwoord is dat het op dit moment niet in mijn plannen ligt om een โ€‹โ€‹"laten we een nieuwe start-up" -reis maken. Tegelijkertijd voelde ik dat het niet logisch is om de code op mijn harde schijf te bewaren voor het geval ik deze in de toekomst nodig heb. Dus het enige logische om te doen was het open source te maken. ๐Ÿ™‚

Documentatie?

Als je de vorige twee alinea's hebt gelezen, zou je dit waarschijnlijk moeten zien aankomen. Aangezien het raamwerk niet is ontwikkeld met het idee dat ik het met anderen zou delen, is de documentatie slecht / onbestaande. De meeste klassen en openbare methoden zijn niet correct becommentarieerd en er is geen document dat de architectuur van de code beschrijft. Gelukkig spreken alle klassenamen voor zich en biedt het framework JUnit-tests voor elke openbare methode en algoritme en deze kunnen worden gebruikt als voorbeelden van het gebruik van de code. Ik hoop dat we met de hulp van de community een goede documentatie zullen opbouwen, dus ik reken op jullie!

Huidige beperkingen en toekomstige ontwikkeling

Zoals in elk stuk software (en vooral de open-sourceprojecten in alfaversie), heeft het Datumbox Machine Learning Framework zijn eigen unieke en schattige beperkingen. Laten we ze onderzoeken:

  1. Documentatie: Zoals eerder vermeld, is de documentatie slecht.
  2. Geen multithreading: Helaas ondersteunt het framework momenteel geen multithreading. Natuurlijk moeten we er rekening mee houden dat niet alle machine learning-algoritmen parallel kunnen lopen.
  3. Code voorbeelden: Aangezien het framework zojuist is gepubliceerd, kunt u op het web geen andere codevoorbeelden vinden dan die in het framework in de vorm van JUnit-tests.
  4. Code structuur: Het creรซren van een solide architectuur voor elk groot project is altijd een uitdaging, laat staan โ€‹โ€‹wanneer u te maken krijgt met algoritmen voor machine learning die aanzienlijk verschillen (begeleid leren, onbewaakt leren, algoritmen voor het verminderen van dimensies, enz.).
  5. Modelpersistentie en grote gegevensverzamelingen: Momenteel kunnen de modellen worden getraind en opgeslagen op bestanden op schijf of in MongoDB-databases. Om grote hoeveelheden data te kunnen verwerken, moeten andere oplossingen worden onderzocht. Bijvoorbeeld KaartDB lijkt een goede kandidaat voor het opslaan van gegevens en parameters tijdens het trainen. Bovendien is het belangrijk om eventuele 3 te verwijderenrd partijbibliotheken die momenteel de persistentie van de modellen verwerken en een betere droge en modulaire oplossing ontwikkelen.
  6. Nieuwe algoritmen /tests / modellen: Er zijn zoveel geweldige technieken die momenteel niet worden ondersteund (vooral voor tijdreeksanalyse).

Helaas is al het bovenstaande te veel werk en is er zo weinig tijd. Daarom, als je geรฏnteresseerd bent in het project, stap dan naar voren en help me een handje met een van bovenstaande zaken. Bovendien hoor ik graag van mensen die ervaring hebben met open-sourcing van middelgrote tot grote projecten en die tips kunnen geven om deze te managen. Bovendien zou ik elke dappere ziel dankbaar zijn die de code zou durven inzien en enkele klassen of openbare methoden zou documenteren. Last but not least, als je het framework voor iets interessants gebruikt, stuur me dan een berichtje of deel het met een blogpost.

Ten slotte wil ik mijn liefde Kyriaki bedanken voor het tolereren van mij tijdens het schrijven van dit project, mijn vriend en super-ninja-Java-ontwikkelaar Eleftherios Bampaletakis voor het helpen met belangrijke Java-problemen en voor het betrokken raken bij het project. Ik kijk uit naar uw opmerkingen.

Tijdstempel:

Meer van Datumbox