Quale linguaggio di programmazione mi consiglia di prototipare un problema di apprendimento automatico?


12

Attualmente lavora in Octave, ma a causa della scarsa documentazione i progressi sono molto lenti.

Quale lingua è facile da imparare e usare e ben documentata per risolvere i problemi di apprendimento automatico? Sto cercando di prototipare su un piccolo set di dati (migliaia di esempi), quindi la velocità non è importante.

EDIT: sto sviluppando un motore di raccomandazione. Quindi, sono interessato a utilizzare la regressione lineare regolarizzata, le reti neurali, SVN o il filtro collaborativo.


1
Una volta ho iniziato anche con Octave, dal momento che il mio prof era in matlab (uh è stato divertente durante i corsi usando la libreria del prof, dal momento che matlab e ottava non hanno esattamente la stessa sintassi), ma poi sono passato a R e sono stato semplicemente spazzato via dalla sua superiore documentazione e varietà di librerie.
Steffen,

9
Python è ovviamente molto facile da imparare e da leggere, quindi immagino che sia una questione di gusti. Suggerisco questi collegamenti: python-stat-workbench , che-linguaggio-di-programmazione-per-inferenza statistica , machine-learning-using-python , clojure
steffen,

1
Consiglierei R, Python o Matlab. Per ragioni troppo ampie da affrontare, lascerei cadere Matlab. Per una persona delle statistiche, andrei con R, per un programmatore, andrei con Python. Per i loop interni, andrei con C / C ++. Su scala sufficiente, i costi di Matlab superano qualsiasi vantaggio.
Iteratore,

1
oppure dai un'occhiata a julia ...
kjetil b halvorsen,

Risposte:


7

Se vuoi usare qualcosa fuori dagli schemi, Weka potrebbe essere un ottimo punto di partenza. Non è necessario programmare nulla. Importi i tuoi dati, li visualizzi e giochi con diversi modelli.

Il prossimo nella catena sarebbe R. C'è qualche curva di apprendimento associata - specialmente con il munging dei tuoi dati per adattarli alle strutture di dati R ma una volta superato, hai tonnellate di librerie che offrono tutte le funzionalità di apprendimento automatico senza troppi sforzi.

Il prossimo passo sarebbe la programmazione manuale degli algoritmi di apprendimento automatico. Dato che stai già usando Octave e stai cercando delle alternative, forse quello che vuoi non è consegnare algoritmi di codice in qualche altro sistema ma semplicemente usare le librerie scritte da altre persone.

Se segui il percorso R, potresti trovare molto utile il libro di Luis Torgo (Data Mining con R: Learning with Case Studies) (divulgazione: nessuna affiliazione). Descrive studi di casi approfonditi che è possibile adattare al proprio problema.


15

Potresti ottenere risposte migliori se specifichi gli algoritmi specifici che ti interessano. Uso R per questo genere di cose (faccio econometria di serie storiche, tuttavia, non apprendimento automatico); puoi vedere le funzionalità esistenti qui:

http://cran.r-project.org/web/views/MachineLearning.html

e c'è un codice R per implementare l'analisi in Elementi di apprendimento statistico di Hastie, Tibshirani e Friedman :

http://www-stat.stanford.edu/~tibs/ElemStatLearn/

Il sistema di packaging di R è piuttosto eccezionale e spinge le persone a documentare il loro codice ed è open source, quindi puoi sempre dare un'occhiata all'implementazione. Non uso Matlab da alcuni anni e non l'ho usato per molto apprendimento automatico - le loro cassette degli attrezzi sono generalmente ben documentate ma possono essere costose, ma il codice fornito dagli utenti sarà scarsamente documentato come qualsiasi altro.


11

Nel suo corso online di apprendimento automatico, Andrew Ng suggerisce di usare Octave / Matlab.

Ti consiglio di iscriverti alla prossima edizione di questo corso: è davvero utile e imparerai molte cose su Octave e sui diversi algoritmi di machine learning.

EDIT 1 : sono d'accordo con altre persone che preferiscono lavorare in R. Tuttavia, nel risolvere i problemi dell'apprendimento automatico, la maggior parte dei tuoi calcoli sarà in forma di matrice e, come sottolineato da @Wayne, Matlab o Octave le lingue sono molto popolari a causa del loro potere. Potresti voler dare un'occhiata alle soluzioni per gli esercizi di apprendimento automatico proposti da altri studenti; sicuramente puoi imparare alcune cose da loro:

Gkokaisel Github

Merwan Github


1
Sono iscritto a questa edizione del corso! Il problema è che fare le cose più semplici al di fuori del corso non funziona! La documentazione è inutile.
B Seven

3
Devo dire che Matlab (quindi Octave) è un terribile linguaggio di programmazione. È molto popolare nei settori dell'ingegneria e dell'apprendimento automatico, ma ciò è dovuto al suo potere e all'utilizzo nelle scuole, non perché è un linguaggio di programmazione moderno. Detto questo, avrai più probabilità di incontrare testi di apprendimento automatico che lo utilizzano rispetto a quelli che utilizzeranno R o Python.
Wayne,

1
Faccio tutto il mio lavoro in MATLAB, non è il miglior linguaggio di programmazione al mondo (direi che R era anche peggio; o), ma vale la pena perseverare perché è molto buono per la ricerca sull'apprendimento automatico. Per le reti neurali, cerca la libreria NETLAB e indaga anche sul processo gaussiano con la libreria GPML, entrambi sono eccellenti pezzi di kit e IIRC entrambi funzionano con l'ottava. Per la regressione lineare regolarizzata, è solo una riga di MATLAB, per i modelli non lineari, c'è la cassetta degli attrezzi GKM, theoval.cmp.uea.ac.uk/projects/gkm (scusate, non ancora un mese).
Dikran Marsupial,

1
I calcoli con Matrix possono essere eseguiti anche in R, sebbene la notazione, ad esempio t(A) %*% B, sia meno intuitiva rispetto a Matlab.
Itamar,

1
Non ci sono buone librerie di matrici per ogni linguaggio di alto livello come C #, Java, Python e Perl?
B Seven

10

Lo scikit-learn (ora sklearn) dovrebbe soddisfare molti dei criteri che hai descritto (velocità, classi ben progettate per la gestione di dati, modelli e risultati), comprese le applicazioni mirate (regressione penalizzata L1 / L2, SVM, ecc.). Viene fornito con un ricco set di documentazione e molti esempi . Vedi anche la sua descrizione in un documento pubblicato nel JMLR.

Un framework alternativo in Python è Orange , che può essere utilizzato attraverso una semplice interfaccia grafica o direttamente dalla riga di comando. Per il filtro collaborativo, pyrsvd potrebbe essere interessante ma non l'ho mai provato. Tuttavia, Apache Mahout potrebbe certamente essere usato per il filtro collaborativo .


1

Se ti riferisci a un prototipo industriale (ovvero qualcosa che viene fatto per essere utilizzato da persone reali e non per pura ricerca), al momento Python è l'unica strada da percorrere.

Se usi Matlab, Octave o R otterrai un ambiente facile da usare per la ricerca ML, ma sarà un incubo mettere il modello al lavoro con un'interfaccia utente o con un servizio web.

In Python siamo fortunati ad avere sia un vasto ecosistema scientifico ( sklearn per ML, panda per il wragling dei dati, matplotlib / seaborn per la visualizzazione) che un ecosistema applicativo (pensate a django e al suo framework di riposo ).

Python è una lingua facile da imparare. In futuro spero che l'ecosistema Javascript diventerà scientificamente solido come quello di Python, ma nonostante alcuni grandi progetti non vedo che arriverà presto.

Non avvolgerti in una scatola, usa una lingua generale!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.