Welche Programmiersprache empfehlen Sie, um ein Problem des maschinellen Lernens zu prototypisieren?

12

Arbeitet derzeit in Octave, ist aber aufgrund der schlechten Dokumentation nur sehr langsam vorangekommen.

Welche Sprache ist leicht zu lernen und zu verwenden und gut dokumentiert, um Probleme des maschinellen Lernens zu lösen? Ich möchte einen Prototyp für einen kleinen Datensatz (Tausende von Beispielen) erstellen, daher ist Geschwindigkeit nicht wichtig.

EDIT: Ich entwickle eine Empfehlungs-Engine. Daher interessiere ich mich für die Verwendung von regulierter linearer Regression, neuronalen Netzen, SVN oder kollaborativer Filterung.

B Sieben
quelle
1
Ich habe auch einmal mit Octave angefangen, da mein Professor sich für Matlab interessierte (uuh, das hat während der Kursarbeit mit der Bibliothek des Profis Spaß gemacht, da Matlab und Oktave nicht genau die gleiche Syntax haben), aber dann bin ich zu R gewechselt und wurde einfach umgehauen durch seine überlegene Dokumentation und Vielfalt der Bibliotheken.
steffen
9
Python ist natürlich sehr einfach zu lernen und zu lesen, also denke ich, dass es Geschmackssache ist. Ich schlage diese Links vor: Python-Stat-Workbench , welche Programmiersprache für statistische Inferenz , maschinelles Lernen mit Python , Clojure
steffen
1
Ich würde R, Python oder Matlab empfehlen. Aus Gründen, die zu umfangreich sind, um sie anzusprechen, würde ich Matlab fallen lassen. Für eine Statistikperson würde ich mit R gehen, für einen Programmierer würde ich mit Python gehen. Für die inneren Schleifen würde ich mit C / C ++ gehen. In ausreichendem Umfang übersteigen die Kosten von Matlab alle Vorteile.
Iterator
1
oder werfen Sie einen Blick auf Julia ...
kjetil b halvorsen

Antworten:

7

Wenn Sie etwas Out-of-Box verwenden möchten, könnte Weka ein guter Ausgangspunkt sein. Es besteht keine Notwendigkeit, etwas zu programmieren. Sie importieren Ihre Daten, visualisieren sie und spielen mit verschiedenen Modellen.

Als nächstes in der Kette wäre R. Es gibt eine gewisse Lernkurve - insbesondere beim Munging Ihrer Daten, um sie in R-Datenstrukturen zu integrieren, aber sobald Sie darüber hinweg sind, haben Sie Tonnen von Bibliotheken, die alle maschinellen Lernfunktionen ohne großen Aufwand bieten.

Als nächstes würde man die Algorithmen für maschinelles Lernen von Hand programmieren. Da Sie Octave bereits verwenden und nach Alternativen suchen, möchten Sie möglicherweise keine Codealgorithmen in einem anderen System übergeben, sondern nur die von anderen Personen geschriebenen Bibliotheken verwenden.

Wenn Sie den R-Pfad beschreiten, ist das Buch von Luis Torgo (Data Mining mit R: Lernen mit Fallstudien) möglicherweise sehr nützlich (Offenlegung: keine Zugehörigkeit). Es beschreibt ausführliche Fallstudien, die Sie an Ihr Problem anpassen können.

Araroot
quelle
15

Sie erhalten möglicherweise bessere Antworten, wenn Sie die spezifischen Algorithmen angeben, an denen Sie interessiert sind. Ich verwende R für diese Art von Dingen (ich mache jedoch Zeitreihenökonometrie, aber kein maschinelles Lernen); Sie können die vorhandene Funktionalität hier sehen:

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

und es gibt R-Code, um die Analyse in Hastie, Tibshirani und Friedmans Elementen des statistischen Lernens zu implementieren :

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

Das Verpackungssystem von R ist großartig und bringt die Leute dazu, ihren Code zu dokumentieren. Es ist Open Source, sodass Sie sich jederzeit die Implementierung ansehen können. Ich habe Matlab seit einigen Jahren nicht mehr verwendet und es nicht für viel maschinelles Lernen verwendet - ihre Toolboxen sind normalerweise gut dokumentiert, können aber teuer sein, aber vom Benutzer bereitgestellter Code wird genauso schlecht dokumentiert sein wie jeder andere.

Grau
quelle
11

In seinem Online-Kurs zum maschinellen Lernen schlägt Andrew Ng die Verwendung von Octave / Matlab vor.

Ich empfehle Ihnen, sich für die nächste Ausgabe dieses Kurses anzumelden: Es ist sehr nützlich und Sie werden viel über Octave und die verschiedenen Algorithmen für maschinelles Lernen lernen.

BEARBEITEN 1 : Ich stimme anderen Leuten zu, die es vorziehen, in R zu arbeiten. Bei der Lösung der Probleme des maschinellen Lernens werden die meisten Ihrer Berechnungen jedoch in Matrixform ausgeführt, und wie von @Wayne hervorgehoben, sind Matlab- oder Octave-Sprachen sehr beliebt wegen ihrer Macht. Vielleicht möchten Sie einen Blick auf die Lösungen für Übungen zum maschinellen Lernen werfen, die von anderen Studenten vorgeschlagen wurden. sicherlich können Sie einige Dinge von ihnen lernen:

Gkokaisel Github

Merwan Github

Manuel Ramón
quelle
1
Ich bin in dieser Ausgabe des Kurses eingeschrieben! Das Problem ist, dass die einfachsten Dinge außerhalb des Kurses nicht funktionieren! Dokumentation ist nutzlos.
B Sieben
3
Ich muss sagen, dass Matlab (also Octave) eine schreckliche Programmiersprache ist. Es ist sehr beliebt in den Bereichen Ingenieurwesen und maschinelles Lernen, aber das liegt an seiner Leistungsfähigkeit und wird in Schulen verwendet, nicht weil es eine moderne Programmiersprache ist. Das heißt, Sie werden eher auf Texte des maschinellen Lernens stoßen, die es verwenden, als auf R oder Python.
Wayne
1
Ich mache meine ganze Arbeit in MATLAB, es ist nicht die beste Programmiersprache der Welt (ich würde sagen, R war noch schlimmer; o), aber es lohnt sich, daran festzuhalten, da es sehr gut für die Forschung zum maschinellen Lernen ist. Suchen Sie für neuronale Netze nach der NETLAB-Bibliothek und untersuchen Sie den Gaußschen Prozess mit der GPML-Bibliothek. Beide sind hervorragende Kit-Teile, und IIRC arbeiten beide mit Oktave. Für die regulierte lineare Regression ist es nur eine Zeile von MATLAB, für nichtlineare Modelle gibt es die GKM-Toolbox theoval.cmp.uea.ac.uk/projects/gkm (leider noch kein Handbuch).
Dikran Marsupial
1
Matrixberechnungen können auch in R durchgeführt werden, obwohl die Notation z. B. t(A) %*% Bweniger intuitiv ist als in Matlab.
Itamar
1
Gibt es nicht gute Matrixbibliotheken für jede Hochsprache wie C #, Java, Python und Perl?
B Sieben
10

Das Scikit-Lernen sollte (jetzt sklearn) mehrere der von Ihnen beschriebenen Kriterien erfüllen (Geschwindigkeit, gut konzipierte Klassen für den Umgang mit Daten, Modellen und Ergebnissen), einschließlich gezielter Anwendungen (L1 / L2-bestrafte Regression, SVM usw.). Es enthält ein umfangreiches Dokumentationsset und viele Beispiele . Siehe auch die Beschreibung in einem Papier in der JMLR veröffentlicht.

Ein alternatives Framework in Python ist Orange , das über eine übersichtliche Benutzeroberfläche oder direkt über die Befehlszeile verwendet werden kann. Für die kollaborative Filterung mag pyrsvd interessant sein, aber ich habe es nie ausprobiert. Allerdings Apache Mahout könnte sicherlich verwendet werden für Collaborative Filtering .

chl
quelle
1

Wenn Sie sich auf einen industriellen Prototyp beziehen (dh etwas, das von echten Menschen verwendet wird und nicht für reine Forschung), ist Python im Moment der einzige Weg.

Wenn Sie Matlab, Octave oder R verwenden, erhalten Sie eine benutzerfreundliche Umgebung für die ML-Forschung, aber es ist ein Albtraum, das Modell mit einer Benutzeroberfläche oder einem Webdienst in Betrieb zu nehmen.

In Python haben wir das Glück, sowohl ein umfangreiches wissenschaftliches Ökosystem ( sklearn für ML, Pandas für Daten-Wragling, Matplotlib / Seaborn für die Visualisierung) als auch ein Anwendungs-Ökosystem (denken Sie an Django und sein Rest-Framework ) zu haben.

Python ist eine leicht zu erlernende Sprache. Ich hoffe, dass das Javascript-Ökosystem in Zukunft wissenschaftlich fundiert sein wird wie das Python-Ökosystem, aber trotz einiger großartiger Projekte sehe ich das nicht in Kürze.

Wickeln Sie sich nicht in eine Schachtel, verwenden Sie eine allgemeine Sprache!

Pieroit
quelle