Noul cadru open-source de învățare automată scris în Java PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Noul cadru open-source de învățare automată scris în Java

Sunt bucuros să anunț că Datumbox Machine Learning Framework este acum open source sub GPL 3.0 și îi puteți descărca codul de la Github!

Ce este acest cadru?

Cadrul de învățare automată Datumbox este un cadru open-source scris în Java care permite dezvoltarea rapidă a modelelor de învățare automată și a aplicațiilor statistice. Este codul care pornește în prezent API-ul Datumbox. Obiectivul principal al cadrului este de a include un număr mare de algoritmi de învățare automată și metode statistice și de a putea gestiona seturi de date mici-medii. Chiar dacă cadrul vizează sprijinirea dezvoltării de modele din diverse domenii, oferă, de asemenea, instrumente care sunt deosebit de utile în aplicațiile de procesare a limbajului natural și de analiză a textului.

Ce tipuri de modele/algoritmi sunt acceptate?

Cadrul este împărțit în mai multe straturi, cum ar fi Învățare automată, Statistică, Matematică, Algoritmi și Utilități. Fiecare dintre ele oferă o serie de clase care sunt folosite pentru antrenarea modelelor de învățare automată. Cele mai importante două straturi sunt stratul Statistics și Machine Learning.

Stratul Statistics oferă clase pentru calcularea statisticilor descriptive, efectuarea diferitelor tipuri de eșantionare, estimarea CDF-urilor și PDF-urilor din distribuțiile de probabilitate utilizate în mod obișnuit și efectuarea a peste 35 de teste parametrice și neparametrice. Astfel de tipuri de clase sunt de obicei necesare în timp ce se efectuează analiza datelor explicative, eșantionarea și selecția caracteristicilor.

Stratul de învățare automată oferă clase care pot fi utilizate într-un număr mare de probleme, inclusiv clasificare, regresie, analiză cluster, modelare subiect, reducerea dimensionalității, selecție de caracteristici, învățare prin ansamblu și sisteme de recomandare. Iată câțiva dintre algoritmii acceptați: 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 și multe altele.

Datumbox Framework VS Mahout VS Scikit-Learn

Atât Mahout, cât și Scikit-Learn sunt proiecte grozave și ambele au obiective complet diferite. Mahout acceptă doar un număr foarte limitat de algoritmi care pot fi paralelizați și, astfel, utilizează cadrul Hadoop Map-Reduce pentru a gestiona Big Data. Pe de altă parte, Scikit-Learn acceptă un număr mare de algoritmi, dar nu poate gestiona o cantitate mare de date. Mai mult, este dezvoltat în Python, care este un limbaj excelent pentru prototipare și calcul științific, dar nu preferatul meu personal pentru dezvoltarea de software.

Cadrul Datumbox se află în mijlocul celor două soluții. Încearcă să suporte un număr mare de algoritmi și este scris în Java. Aceasta înseamnă că poate fi încorporat mai ușor în codul de producție, poate fi mai ușor ajustat pentru a reduce consumul de memorie și poate fi folosit în sisteme în timp real. În cele din urmă, chiar dacă în prezent Datumbox Framework este capabil să gestioneze seturi de date de dimensiuni medii, este în planurile mele să-l extind pentru a gestiona seturi de date de dimensiuni mari.

Cât de stabil este?

Primele versiuni ale framework-ului (până la 0.3.x) au fost dezvoltate în august și septembrie 2013 și au fost scrise în PHP (da!). În lunile mai și iunie 2014 (versiunile 0.4.x), cadrul a fost rescris în Java și îmbunătățit cu funcții suplimentare. Ambele ramuri au fost testate intens în aplicații comerciale, inclusiv API-ul Datumbox. Versiunea actuală este 0.5.0 și pare suficient de matură pentru a fi lansată ca prima versiune publică alfa a cadrului. Acestea fiind spuse, este important de reținut că unele funcționalități ale cadrului sunt testate mai amănunțit decât altele. În plus, deoarece această versiune este alfa, ar trebui să vă așteptați la schimbări drastice la versiunile viitoare.

De ce l-am scris și de ce l-am deschis?

Implicarea mea în Machine Learning și NLP datează din 2009, când am co-fondat WebSEOAnalytics.com. De atunci am dezvoltat implementări ale diverșilor algoritmi de învățare automată pentru diverse proiecte și aplicații. Din păcate, cele mai multe dintre implementările originale au fost foarte specifice problemei și cu greu puteau fi utilizate în orice altă problemă. În august 2013, am decis să încep Datumbox ca proiect personal și să dezvolt un cadru care oferă instrumentele pentru dezvoltarea modelelor de învățare automată cu accent pe zona NLP și Clasificarea Textelor. Ținta mea a fost să construiesc un cadru care să fie reutilizat în viitor pentru dezvoltarea rapidă a modelelor de învățare automată, încorporându-l în proiecte care necesită componente de învățare automată sau care îl oferă ca serviciu (Machine Learning as a Service).

Și iată-mă acum, câteva linii de cod mai târziu, deschizând proiectul. De ce? Răspunsul sincer este că, în acest moment, nu intră în planurile mele să trec printr-o călătorie „să construim un nou start-up”. În același timp, am simțit că păstrarea codului pe hard disk în cazul în care am nevoie de el pe viitor nu are sens. Așa că singurul lucru logic de făcut a fost să-l deschideți. 🙂

Documentație?

Dacă ai citit cele două paragrafe anterioare, probabil că ar trebui să vezi asta venind. Deoarece cadrul nu a fost dezvoltat având în vedere că l-aș împărtăși altora, documentația este slabă/inexistentă. Majoritatea claselor și metodelor publice nu sunt comentate corespunzător și nu există niciun document care să descrie arhitectura codului. Din fericire, toate numele claselor se explică de la sine, iar cadrul oferă teste JUnit pentru fiecare metodă și algoritm public, iar acestea pot fi folosite ca exemple de utilizare a codului. Sper ca cu ajutorul comunitatii sa construim o documentatie corespunzatoare, asa ca ma bazez pe voi!

Limitări actuale și dezvoltare viitoare

Ca în fiecare produs software (și în special proiectele open-source în versiunea alfa), Cadrul Datumbox Machine Learning vine cu propriile sale limitări unice și adorabile. Să cercetăm în ele:

  1. Documentație: După cum am menționat mai devreme, documentația este slabă.
  2. Fără multithreading: Din păcate, cadrul nu acceptă în prezent Multithreading. Desigur, ar trebui să remarcăm că nu toți algoritmii de învățare automată pot fi paralelizați.
  3. Exemple de cod: Deoarece framework-ul tocmai a fost publicat, nu puteți găsi alte exemple de cod pe web decât cele oferite de framework sub formă de teste JUnit.
  4. Structura codului: Crearea unei arhitecturi solide pentru orice proiect mare este întotdeauna o provocare, darămite atunci când trebuie să faceți față cu algoritmi de învățare automată care diferă semnificativ (învățare supravegheată, învățare nesupravegheată, algoritmi de reducere a dimensionalității etc.).
  5. Persistența modelului și culegeri mari de date: În prezent, modelele pot fi antrenate și stocate fie pe fișiere de pe disc, fie în baze de date MongoDB. Pentru a putea gestiona o cantitate mare de date, trebuie investigate alte soluții. De exemplu MapDB pare un candidat bun pentru stocarea datelor și parametrilor în timpul antrenamentului. În plus, este important să eliminați orice 3rd biblioteci de partide care se ocupă în prezent de persistența modelelor și dezvoltă o soluție mai bine uscată și modulară.
  6. Algoritmi noi/teste/modele: Există atât de multe tehnici grozave care nu sunt acceptate în prezent (în special pentru analiza seriilor temporale).

Din păcate, toate cele de mai sus sunt prea multă muncă și există atât de puțin timp. De aceea, dacă ești interesat de proiect, fă un pas înainte și dă-mi o mână de ajutor cu oricare dintre cele de mai sus. Mai mult, mi-ar plăcea să aud de la oameni care au experiență în proiecte medii-mari de tip open-source și care ar putea oferi orice sfaturi despre cum să le gestioneze. În plus, aș fi recunoscător oricărui suflet curajos care ar îndrăzni să cerceteze codul și să documenteze unele clase sau metode publice. Nu în ultimul rând, dacă utilizați cadrul pentru ceva interesant, vă rog să-mi trimiteți un rând sau să îl distribuiți printr-o postare pe blog.

În cele din urmă, aș dori să-i mulțumesc iubitei mele Kyriaki pentru că m-a tolerat în timp ce scriu acest proiect, prietenului meu și dezvoltatorului Java super-ninja Eleftherios Bampaletakis pentru că ați ajutat cu probleme importante cu Java și pentru că v-ați implicat în proiect. Aștept cu nerăbdare comentariile voastre.

Timestamp-ul:

Mai mult de la Datumbox