Uusi avoimen lähdekoodin koneoppimiskehys, joka on kirjoitettu Java PlatoBlockchain Data Intelligencellä. Pystysuuntainen haku. Ai.

Uusi avoimen lähdekoodin koneoppimiskehys, joka on kirjoitettu Java-kielellä

Olen iloinen voidessani ilmoittaa, että Datumbox Machine Learning Framework on nyt avattu GPL 3.0: sta ja voit ladata sen koodin osoitteesta Github!

Mikä tämä kehys on?

- Datumbox Machine Learning Framework on Java-kielellä kirjoitettu avoimen lähdekoodin kehys, joka mahdollistaa koneoppimismallien ja tilastosovellusten nopean kehityksen. Se on koodi, joka tällä hetkellä käyttää Datumbox-sovellusliittymää. Kehyksen pääpaino on sisällyttää suuri määrä koneoppimisen algoritmeja ja tilastollisia menetelmiä ja pystyä käsittelemään pieniä ja keskisuuria aineistoja. Vaikka kehys pyrkii auttamaan eri alojen mallien kehittämisessä, se tarjoaa myös työkaluja, jotka ovat erityisen hyödyllisiä luonnollisen kielen käsittely- ja tekstianalyysisovelluksissa.

Minkä tyyppisiä malleja / algoritmeja tuetaan?

Kehys on jaettu useisiin tasoihin, kuten koneoppiminen, tilastot, matematiikka, algoritmit ja apuohjelmat. Jokainen niistä tarjoaa sarjan luokkia, joita käytetään koneoppimismallien kouluttamiseen. Kaksi tärkeintä tasoa ovat tilastot ja koneoppimiskerros.

Tilastokerros tarjoaa luokat kuvaavien tilastojen laskemiseksi, erityyppisten näytteiden suorittamiseksi, CDF: ien ja PDF-tiedostojen arvioimiseksi yleisesti käytetyistä todennäköisyysjakaumista ja yli 35 parametrisen ja ei-parametrisen testin suorittamisesta. Tällaiset luokkatyypit ovat yleensä välttämättömiä suoritettaessa selittäviä tietoja, analyysia, näytteenottoa ja ominaisuuksien valintaa.

Koneoppimiskerros tarjoaa luokkia käytettäväksi useissa ongelmissa, kuten luokittelu, regressio, klusterianalyysi, aihemallinnus, ulottuvuuden pienentäminen, ominaisuuksien valinta, yhtyeoppiminen ja suosittelujärjestelmät. Tässä on joitain tuettuja algoritmeja: 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 ja paljon muuta.

Datumbox Framework VS Mahout VS Scikit-Learn

Sekä Mahout että Scikit-Learn ovat hienoja projekteja, ja molemmilla on täysin erilaiset tavoitteet. Mahout tukee vain hyvin rajoitettua määrää algoritmeja, jotka voidaan rinnastaa ja käyttää siten Hadoopin Map-Reduce-kehystä Big Data -palvelun käsittelemiseen. Toisaalta Scikit-Learn tukee suurta määrää algoritmeja, mutta se ei pysty käsittelemään valtavaa määrää tietoa. Lisäksi se on kehitetty Pythonissa, joka on hieno kieli prototyyppien tekemiseen ja tieteelliseen laskentaan, mutta ei henkilökohtainen suosikkini ohjelmistokehityksessä.

Datumbox Framework on kahden ratkaisun keskellä. Se yrittää tukea suurta määrää algoritmeja ja se on kirjoitettu Java-muodossa. Tämä tarkoittaa, että se voidaan liittää helpommin tuotantokoodiin, sitä voidaan helpommin säätää muistin kulutuksen vähentämiseksi ja sitä voidaan käyttää reaaliaikaisissa järjestelmissä. Lopuksi, vaikka tällä hetkellä Datumbox Framework pystyy käsittelemään keskisuuria aineistoja, aion laajentaa sitä käsittelemään suurikokoisia aineistoja.

Kuinka vakaa se on?

Kehyksen varhaiset versiot (jopa 0.3.x) kehitettiin elokuussa ja syyskuussa 2013, ja ne kirjoitettiin PHP: ssä (yeap!). Touko- ja kesäkuussa 2014 (versiot 0.4.x) kehys kirjoitettiin uudelleen Java-järjestelmään ja parannettiin lisäominaisuuksilla. Molempia haaroja testattiin voimakkaasti kaupallisissa sovelluksissa, mukaan lukien Datumbox API. Nykyinen versio on 0.5.0 ja se näyttää riittävän kypsältä julkaistavaksi kehyksen ensimmäisenä julkisena alfa-versiona. Tämän sanottuaan on tärkeää huomata, että kehyksen joitain toimintoja testataan perusteellisemmin kuin toisia. Lisäksi koska tämä versio on alfa, sinun pitäisi odottaa rajuja muutoksia tuleviin julkaisuihin.

Miksi kirjoitin sen ja miksi avoimen lähdekoodin?

Olen osallistunut koneoppimiseen ja NLP: hen vuodelta 2009, jolloin perustin WebSEOAnalytics.comin. Siitä lähtien olen kehittänyt erilaisten koneoppimisalgoritmien toteutuksia erilaisille projekteille ja sovelluksille. Valitettavasti suurin osa alkuperäisistä toteutuksista oli hyvin ongelmakohtaisia, eikä niitä tuskin voitu käyttää missään muussa ongelmassa. Elokuussa 2013 päätin aloittaa Datumboxin henkilökohtaisena projektina ja kehittää puitteet, jotka tarjoavat työkalut koneoppimismallien kehittämiseen keskittyen NLP: hen ja tekstiluokitukseen. Tavoitteenani oli rakentaa kehys, jota hyödynnettäisiin tulevaisuudessa nopeasti koneoppimismallien kehittämiseksi sisällyttämällä se projekteihin, jotka edellyttävät koneoppimisen komponentteja tai tarjoavat sitä palveluna (Machine Learning as a Service).

Ja tässä olen nyt, useita koodirivejä myöhemmin, hankkimalla avointa hankintaa. Miksi? Rehellinen vastaus on, että tässä vaiheessa ei ole suunnitelmissani käydä läpi ”rakennetaan uusi start-up” -matka. Samalla tunsin, että koodin pitäminen kiintolevylläni, jos tarvitsen sitä tulevaisuudessa, ei ole järkevää. Joten ainoa looginen asia oli avata se lähdekoodilla. 🙂

Dokumentointi?

Jos luet kaksi edellistä kappaletta, sinun pitäisi todennäköisesti nähdä tämä tulossa. Koska kehystä ei ole kehitetty ajatellen, että jaan sen muiden kanssa, dokumentaatio on heikkoa / olematonta. Suurinta osaa luokista ja julkisista menetelmistä ei ole kommentoitu oikein, eikä koodin arkkitehtuuria kuvaavaa asiakirjaa ole. Onneksi kaikki luokkien nimet ovat itsestään selviä, ja kehys tarjoaa JUnit-testit jokaiselle julkiselle menetelmälle ja algoritmille, joita voidaan käyttää esimerkkeinä koodin käytöstä. Toivon, että rakennamme yhteisön avulla asianmukaiset asiakirjat, joten luotan sinuun!

Nykyiset rajoitukset ja tulevaisuuden kehitys

Kuten kaikissa ohjelmistoissa (ja erityisesti avoimen lähdekoodin projekteissa alfaversiossa), Datumbox Machine Learning Frameworkilla on omat ainutlaatuiset ja suloiset rajoituksensa. Kaivetaan heihin:

  1. Dokumentaatio: Kuten aiemmin mainittiin, dokumentaatio on heikkoa.
  2. Ei monisäikeistä: Valitettavasti kehys ei tällä hetkellä tue monisäikeisyyttä. Tietenkin on huomattava, että kaikkia koneoppimisalgoritmeja ei voida rinnastaa.
  3. Koodiesimerkkejä: Koska kehys on juuri julkaistu, et löydä verkosta muita koodiesimerkkejä kuin ne, jotka kehys tarjoaa JUnit-testien muodossa.
  4. Koodirakenne: Vankan arkkitehtuurin luominen mihin tahansa suureen projektiin on aina haastavaa, puhumattakaan siitä, kun joudut käsittelemään koneoppimisalgoritmeja, jotka eroavat huomattavasti (valvottu oppiminen, valvomaton oppiminen, ulottuvuuden vähentämisen algoritmit jne.).
  5. Mallin pysyvyys ja suuret tietokokoelmat: Tällä hetkellä malleja voidaan kouluttaa ja tallentaa joko tiedostoille levylle tai MongoDB-tietokantoihin. Suurten tietomäärien käsittelemiseksi on tutkittava muita ratkaisuja. Esimerkiksi MapDB näyttää hyvältä ehdokkaalta tietojen ja parametrien tallentamiseen koulutuksen aikana. Lisäksi on tärkeää poistaa kaikki 3rd osapuolikirjastot, jotka käsittelevät tällä hetkellä mallien pysyvyyttä ja kehittävät paremman kuivan ja modulaarisen ratkaisun.
  6. Uudet algoritmit /testit / mallit: On niin monia hienoja tekniikoita, joita ei tällä hetkellä tueta (varsinkin aikasarjojen analyysissä).

Valitettavasti kaikki yllä mainitut ovat liian paljon työtä ja aikaa on niin vähän. Siksi, jos olet kiinnostunut projektista, astu eteenpäin ja anna minulle käsi jollakin edellä mainituista. Haluaisin mielelläni kuulla ihmisiltä, ​​joilla on kokemusta avoimen hankinnan keskisuurista ja suurista hankkeista ja jotka voisivat antaa vinkkejä niiden hallintaan. Lisäksi olen kiitollinen kaikille rohkeille sieluille, jotka uskaltavat tutkia koodia ja dokumentoida joitain luokkia tai julkisia menetelmiä. Viimeisenä mutta ei vähäisimpänä, jos käytät kehystä mihin tahansa mielenkiintoiseen, pudota minulle rivi tai jaa se blogikirjoituksen kanssa.

Lopuksi haluaisin kiittää rakkaani Kyriakia siitä, että se suvaitsi minua kirjoittaessani tätä projektia, ystäväni ja super-ninja-Java-kehittäjää Eleftherios Bampaletakis auttaa tärkeiden Java-ongelmien ratkaisemisessa ja sinä osallistut projektiin. Odotan kommenttejasi.

Aikaleima:

Lisää aiheesta Datumbox