Nuovo framework di machine learning open source scritto in Java PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Nuovo Machine Learning Framework open source scritto in Java

Sono lieto di annunciare che Datumbox Machine Learning Framework è ora open source in GPL 3.0 e puoi scaricare il suo codice da Github!

Cos'è questo Framework?

Il Datumbox Framework di apprendimento automatico è un framework open source scritto in Java che consente il rapido sviluppo di modelli di Machine Learning e applicazioni statistiche. È il codice che attualmente alimenta l'API Datumbox. L'obiettivo principale del framework è includere un gran numero di algoritmi di apprendimento automatico e metodi statistici ed essere in grado di gestire set di dati di piccole-medie dimensioni. Anche se il framework mira a supportare lo sviluppo di modelli da vari campi, fornisce anche strumenti particolarmente utili nelle applicazioni di elaborazione del linguaggio naturale e analisi del testo.

Quali tipi di modelli / algoritmi sono supportati?

Il framework è diviso in diversi livelli come Machine Learning, Statistica, Matematica, Algoritmi e Utilità. Ognuno di essi fornisce una serie di lezioni che vengono utilizzate per la formazione di modelli di apprendimento automatico. I due livelli più importanti sono le statistiche e il livello di apprendimento automatico.

Il livello Statistics fornisce classi per il calcolo di statistiche descrittive, l'esecuzione di vari tipi di campionamento, la stima di CDF e PDF da distribuzioni di probabilità comunemente utilizzate e l'esecuzione di oltre 35 test parametrici e non parametrici. Tali tipi di classi sono generalmente necessari durante l'esecuzione di analisi esplicative dei dati, campionamento e selezione delle caratteristiche.

Il livello di Machine Learning fornisce le classi che possono essere utilizzate in un gran numero di problemi, tra cui classificazione, regressione, analisi dei cluster, modellazione degli argomenti, riduzione dimensionale, selezione delle caratteristiche, apprendimento di ensemble e sistemi di raccomandazione. Ecco alcuni degli algoritmi supportati: LDA, Max Entropy, Naive Bayes, SVM, Bootstrap Aggregating, Adaboost, Kmeans, Hierarchical Clustering, Dirichlet Process Miscxture Models, Regressione Softmax, Regressione ordinale, Regressione lineare, Regressione graduale, PCA e altro ancora.

Datumbox Framework VS Mahout VS Scikit-Learn

Sia Mahout che Scikit-Learn sono grandi progetti ed entrambi hanno obiettivi completamente diversi. Mahout supporta solo un numero molto limitato di algoritmi che possono essere parallelizzati e quindi utilizzare il framework Map-Reduce di Hadoop per gestire i Big Data. D'altra parte Scikit-Learn supporta un gran numero di algoritmi ma non è in grado di gestire enormi quantità di dati. Inoltre è sviluppato in Python, che è un ottimo linguaggio per la prototipazione e il calcolo scientifico, ma non è il mio preferito per lo sviluppo del software.

Il Datumbox Framework si trova nel mezzo delle due soluzioni. Cerca di supportare un gran numero di algoritmi ed è scritto in Java. Ciò significa che può essere incorporato più facilmente nel codice di produzione, può essere più facilmente ottimizzato per ridurre il consumo di memoria e può essere utilizzato in sistemi in tempo reale. Infine, anche se attualmente Datumbox Framework è in grado di gestire set di dati di medie dimensioni, è nei miei piani di espanderlo per gestire set di dati di grandi dimensioni.

Quanto è stabile?

Le prime versioni del framework (fino alla 0.3.x) sono state sviluppate in agosto e settembre del 2013 e sono state scritte in PHP (yeap!). Durante maggio e giugno 2014 (versioni 0.4.x), il framework è stato riscritto in Java e migliorato con funzionalità aggiuntive. Entrambe le filiali sono state pesantemente testate in applicazioni commerciali tra cui l'API Datumbox. La versione attuale è 0.5.0 e sembra abbastanza matura per essere rilasciata come la prima versione alfa pubblica del framework. Detto questo, è importante notare che alcune funzionalità del framework sono testate più accuratamente di altre. Inoltre, poiché questa versione è alfa, dovresti aspettarti cambiamenti drastici nelle versioni future.

Perché l'ho scritto e perché l'ho open-source?

Il mio coinvolgimento con Machine Learning e NLP risale al 2009, quando ho co-fondato WebSEOAnalytics.com. Da allora ho sviluppato implementazioni di vari algoritmi di machine learning per vari progetti e applicazioni. Sfortunatamente la maggior parte delle implementazioni originali erano molto specifiche per i problemi e difficilmente potevano essere utilizzate in nessun altro problema. Nell'agosto 2013 ho deciso di avviare Datumbox come progetto personale e sviluppare un framework che fornisse gli strumenti per lo sviluppo di modelli di machine learning focalizzati nell'area della PNL e della classificazione del testo. Il mio obiettivo era costruire un framework che sarebbe stato riutilizzato in futuro per sviluppare rapidamente modelli di machine learning, incorporandolo in progetti che richiedono componenti di machine learning o offrendolo come servizio (Machine Learning as a Service).

Ed eccomi ora, diverse righe di codice più tardi, a open source per il progetto. Perché? La risposta onesta è che a questo punto non rientra nei miei piani di intraprendere un viaggio "costruiamo un nuovo start-up". Allo stesso tempo, ho sentito che mantenere il codice sul mio hard disk nel caso in cui ne avessi bisogno in futuro non ha senso. Quindi l'unica cosa logica da fare era open-source. 🙂

Documentazione?

Se leggi i due paragrafi precedenti, probabilmente dovresti vederlo arrivare. Poiché il framework non è stato sviluppato tenendo presente che lo avrei condiviso con altri, la documentazione è scarsa / inesistente. La maggior parte delle classi e dei metodi pubblici non sono adeguatamente commentati e non esiste un documento che descriva l'architettura del codice. Fortunatamente tutti i nomi delle classi sono autoesplicativi e il framework fornisce test JUnit per ogni metodo e algoritmo pubblico e questi possono essere usati come esempi di come utilizzare il codice. Spero che con l'aiuto della community costruiremo una documentazione adeguata, quindi conto su di te!

Limitazioni attuali e sviluppo futuro

Come in ogni software (e in particolare nei progetti open source in versione alfa), Datumbox Machine Learning Framework presenta limiti unici e adorabili. Scaviamo in loro:

  1. Documentazione: Come accennato in precedenza, la documentazione è scadente.
  2. Nessun multithreading: Purtroppo il framework attualmente non supporta il multithreading. Ovviamente dovremmo notare che non tutti gli algoritmi di apprendimento automatico possono essere parallelizzati.
  3. Esempi di codice: Poiché il framework è appena stato pubblicato, non è possibile trovare sul web esempi di codice diversi da quelli forniti dal framework sotto forma di test JUnit.
  4. Struttura del codice: Creare un'architettura solida per qualsiasi progetto di grandi dimensioni è sempre una sfida, figuriamoci quando si devono affrontare algoritmi di Machine Learning che differiscono in modo significativo (apprendimento supervisionato, apprendimento non supervisionato, algoritmi di riduzione della dimensionalità, ecc.).
  5. Persistenza dei modelli e raccolte di dati di grandi dimensioni: Attualmente i modelli possono essere addestrati e archiviati su file su disco o in database MongoDB. Per essere in grado di gestire grandi quantità di dati, è necessario esaminare altre soluzioni. Per esempio Mappa DB sembra un buon candidato per la memorizzazione di dati e parametri durante l'allenamento. Inoltre è importante rimuovere qualsiasi 3rd librerie di partito che attualmente gestiscono la persistenza dei modelli e sviluppano una soluzione asciutta e modulare migliore.
  6. Nuovi algoritmi /test / modelli: Ci sono così tante grandi tecniche che al momento non sono supportate (specialmente per l'analisi delle serie storiche).

Purtroppo tutto quanto sopra è troppo faticoso e c'è così poco tempo. Ecco perché se sei interessato al progetto, fatti avanti e dammi una mano con uno dei precedenti. Inoltre mi piacerebbe sentire persone che hanno esperienza in progetti di open-source medio-grandi e potrebbero fornire suggerimenti su come gestirli. Inoltre sarei grato a qualsiasi anima coraggiosa che oserebbe esaminare il codice e documentare alcune classi o metodi pubblici. Ultimo ma non meno importante, se usi il framework per qualcosa di interessante, scrivimi un messaggio o condividilo con un post sul blog.

Infine, vorrei ringraziare il mio amore Kyriaki per avermi tollerato mentre scrivevo questo progetto, il mio amico e sviluppatore di super-ninja-Java Eleftherios Bampaletakis per l'aiuto con importanti problemi Java e per te per essere coinvolto nel progetto. Non vedo l'ora di ricevere i tuoi commenti.

Timestamp:

Di più da Databox