14 strumenti open source per ottenere il massimo dal machine learning

Filtro antispam, riconoscimento facciale, motori di raccomandazione: quando si dispone di un ampio set di dati su cui si desidera eseguire l'analisi predittiva o il riconoscimento di pattern, l'apprendimento automatico è la strada da percorrere. La proliferazione di software open source gratuito ha reso l'apprendimento automatico più facile da implementare sia su macchine singole che su larga scala e nei linguaggi di programmazione più diffusi. Questi strumenti open source includono librerie per artisti del calibro di Python, R, C ++, Java, Scala, Clojure, JavaScript e Go.

Apache Mahout

Apache Mahout offre un modo per creare ambienti per l'hosting di applicazioni di machine learning che possono essere ridimensionati in modo rapido ed efficiente per soddisfare la domanda. Mahout funziona principalmente con un altro noto progetto Apache, Spark, ed è stato originariamente concepito per funzionare con Hadoop per l'esecuzione di applicazioni distribuite, ma è stato esteso per funzionare con altri back-end distribuiti come Flink e H2O.

Mahout utilizza un linguaggio specifico del dominio in Scala. La versione 0.14 è un importante refactor interno del progetto, basato su Apache Spark 2.4.3 come impostazione predefinita.

Comporre

Compose, di Innovation Labs, si rivolge a un problema comune con i modelli di machine learning: etichettare i dati grezzi, che può essere un processo lento e noioso, ma senza il quale un modello di machine learning non può fornire risultati utili. Compose ti consente di scrivere in Python un insieme di funzioni di etichettatura per i tuoi dati, in modo che l'etichettatura possa essere eseguita nel modo più programmatico possibile. Varie trasformazioni e soglie possono essere impostate sui dati per semplificare il processo di etichettatura, come l'inserimento dei dati in contenitori in base a valori discreti o quantili.

Strumenti principali di ML

Il framework Core ML di Apple ti consente di integrare modelli di machine learning nelle app, ma utilizza il proprio formato di modello di apprendimento distinto. La buona notizia è che non è necessario pre-addestrare i modelli nel formato Core ML per usarli; puoi convertire i modelli da quasi tutti i framework di machine learning comunemente usati in Core ML con Core ML Tools.

Core ML Tools viene eseguito come un pacchetto Python, quindi si integra con la ricchezza di librerie e strumenti di machine learning Python. I modelli di TensorFlow, PyTorch, Keras, Caffe, ONNX, Scikit-learn, LibSVM e XGBoost possono essere tutti convertiti. I modelli di rete neurale possono anche essere ottimizzati per le dimensioni utilizzando la quantizzazione post-training (ad esempio, a una piccola profondità di bit che è ancora accurata).

Corteccia

Cortex offre un modo conveniente per fornire previsioni da modelli di machine learning utilizzando Python e TensorFlow, PyTorch, Scikit-learn e altri modelli. La maggior parte dei pacchetti Cortex è costituita da pochi file: la logica Python di base, un file cortex.yaml che descrive quali modelli utilizzare e quali tipi di risorse di calcolo allocare e un file requirements.txt per installare i requisiti Python necessari. L'intero pacchetto viene distribuito come container Docker in AWS o in un altro sistema di hosting compatibile con Docker. Le risorse di elaborazione vengono allocate in un modo che riecheggia le definizioni utilizzate in Kubernetes per lo stesso e puoi utilizzare GPU o ASIC Amazon Inferentia per accelerare il servizio.

Featuretools

L'ingegnerizzazione delle funzionalità, o creazione di funzionalità, implica l'acquisizione dei dati utilizzati per addestrare un modello di apprendimento automatico e la produzione, in genere a mano, di una versione trasformata e aggregata dei dati che è più utile per l'addestramento del modello. Featuretools ti fornisce le funzioni per farlo tramite oggetti Python di alto livello costruiti sintetizzando i dati in dataframe e può farlo per i dati estratti da uno o più dataframe. Featuretools fornisce anche primitive comuni per le operazioni di sintesi (ad esempio, time_since_previousper fornire il tempo trascorso tra istanze di dati con marcatura temporale), quindi non è necessario eseguirne il roll da soli.

GoLearn

GoLearn, una libreria di machine learning per il linguaggio Go di Google, è stata creata con il duplice obiettivo di semplicità e personalizzazione, secondo lo sviluppatore Stephen Whitworth. La semplicità sta nel modo in cui i dati vengono caricati e gestiti nella libreria, che è modellata dopo SciPy e R. La personalizzazione sta nel modo in cui alcune delle strutture di dati possono essere facilmente estese in un'applicazione. Whitworth ha anche creato un wrapper Go per la libreria Vowpal Wabbit, una delle librerie che si trovano nella cassetta degli attrezzi di Shogun.

Gradio

Una sfida comune quando si creano applicazioni di machine learning è la creazione di un'interfaccia utente robusta e facilmente personalizzabile per l'addestramento del modello e i meccanismi di pubblicazione delle previsioni. Gradio fornisce strumenti per la creazione di interfacce utente basate sul Web che ti consentono di interagire con i tuoi modelli in tempo reale. Diversi progetti di esempio inclusi, come le interfacce di input per il classificatore di immagini Inception V3 o il modello di riconoscimento della grafia MNIST, ti danno un'idea di come puoi usare Gradio con i tuoi progetti.

H2O

H2O, ora alla sua terza importante revisione, fornisce un'intera piattaforma per l'apprendimento automatico in memoria, dall'addestramento alla pubblicazione delle previsioni. Gli algoritmi di H2O sono orientati ai processi aziendali, ad esempio previsioni di frodi o tendenze, piuttosto che, ad esempio, all'analisi delle immagini. H2O può interagire in modo autonomo con i negozi HDFS, oltre a YARN, in MapReduce o direttamente in un'istanza Amazon EC2.

Gli esperti di Hadoop possono utilizzare Java per interagire con H2O, ma il framework fornisce anche collegamenti per Python, R e Scala, consentendo di interagire anche con tutte le librerie disponibili su quelle piattaforme. Puoi anche ripiegare alle chiamate REST come un modo per integrare H2O nella maggior parte delle pipeline.

Oryx

Oryx, per gentile concessione dei creatori della distribuzione Cloudera Hadoop, utilizza Apache Spark e Apache Kafka per eseguire modelli di machine learning su dati in tempo reale. Oryx fornisce un modo per creare progetti che richiedono decisioni al momento, come motori di raccomandazione o rilevamento di anomalie in tempo reale, che sono informati da dati sia nuovi che storici. La versione 2.0 è una riprogettazione quasi completa del progetto, con i suoi componenti liberamente accoppiati in un'architettura lambda. È possibile aggiungere in qualsiasi momento nuovi algoritmi e nuove astrazioni per tali algoritmi (ad esempio, per la selezione degli iperparametri).

PyTorch Lightning

Quando un progetto potente diventa popolare, è spesso integrato da progetti di terze parti che lo rendono più facile da usare. PyTorch Lightning fornisce un wrapper organizzativo per PyTorch, in modo che tu possa concentrarti sul codice che conta invece di scrivere boilerplate per ogni progetto.

I progetti Lightning utilizzano una struttura basata su classi, quindi ogni passaggio comune per un progetto PyTorch è incapsulato in un metodo di classe. I cicli di addestramento e convalida sono semiautomatici, quindi devi solo fornire la tua logica per ogni passaggio. È anche più facile impostare i risultati dell'addestramento in più GPU o diversi mix di hardware, perché le istruzioni e i riferimenti agli oggetti per farlo sono centralizzati.

Scikit-impara

Python è diventato un linguaggio di programmazione di riferimento per matematica, scienza e statistica grazie alla sua facilità di adozione e all'ampiezza di librerie disponibili per quasi tutte le applicazioni. Scikit-learn sfrutta questa ampiezza costruendo su diversi pacchetti Python esistenti - NumPy, SciPy e Matplotlib - per il lavoro di matematica e scienze. Le librerie risultanti possono essere utilizzate per applicazioni "workbench" interattive o incorporate in altri software e riutilizzate. Il kit è disponibile con una licenza BSD, quindi è completamente aperto e riutilizzabile.

Shogun

Shogun è uno dei progetti più longevi di questa collezione. È stato creato nel 1999 e scritto in C ++, ma può essere utilizzato con Java, Python, C #, Ruby, R, Lua, Octave e Matlab. L'ultima versione principale, 6.0.0, aggiunge il supporto nativo per Microsoft Windows e il linguaggio Scala.

Sebbene popolare e di ampio respiro, Shogun ha concorrenza. Un'altra libreria di machine learning basata su C ++, Mlpack, è in circolazione solo dal 2011, ma si dichiara più veloce e più facile da utilizzare (tramite un set di API più integrato) rispetto alle librerie concorrenti.

Spark MLlib

La libreria di machine learning per Apache Spark e Apache Hadoop, MLlib vanta molti algoritmi comuni e tipi di dati utili, progettati per funzionare a velocità e scalabilità. Sebbene Java sia il linguaggio principale per lavorare in MLlib, gli utenti Python possono connettere MLlib con la libreria NumPy, gli utenti Scala possono scrivere codice su MLlib e gli utenti R possono collegarsi a Spark a partire dalla versione 1.5. La versione 3 di MLlib si concentra sull'utilizzo dell'API DataFrame di Spark (al contrario della vecchia API RDD) e fornisce molte nuove funzioni di classificazione e valutazione.

Un altro progetto, MLbase, si basa su MLlib per semplificare la derivazione dei risultati. Piuttosto che scrivere codice, gli utenti effettuano query tramite un linguaggio dichiarativo à la SQL.

Weka

Weka, creato dal Machine Learning Group presso l'Università di Waikato, è classificato come "machine learning senza programmazione". È un workbench GUI che consente ai data wrangler di assemblare pipeline di machine learning, addestrare modelli ed eseguire previsioni senza dover scrivere codice. Weka funziona direttamente con R, Apache Spark e Python, quest'ultimo tramite un wrapper diretto o tramite interfacce per librerie numeriche comuni come NumPy, Pandas, SciPy e Scikit-learn. Il grande vantaggio di Weka è che fornisce interfacce navigabili e intuitive per ogni aspetto del tuo lavoro, inclusa la gestione dei pacchetti, la pre-elaborazione, la classificazione e la visualizzazione.