Quel langage de programmation recommandez-vous pour prototyper un problème d'apprentissage automatique?


12

Travaille actuellement dans Octave, mais en raison de la mauvaise documentation, les progrès sont très lents.

Quelle langue est facile à apprendre et à utiliser et bien documentée pour résoudre les problèmes d'apprentissage automatique? Je cherche à prototyper sur un petit ensemble de données (des milliers d'exemples), donc la vitesse n'est pas importante.

EDIT: Je développe un moteur de recommandation. Je suis donc intéressé à utiliser la régression linéaire régularisée, les réseaux neuronaux, le SVN ou le filtrage collaboratif.


1
J'ai aussi commencé avec Octave, car mon prof était dans matlab (euh c'était amusant pendant le cours en utilisant la bibliothèque du prof, car matlab et octave n'ont pas exactement la même syntaxe), mais ensuite je suis passé à R et j'ai simplement été époustouflé par sa documentation supérieure et sa variété de bibliothèques.
steffen

9
Le python est bien sûr très facile à apprendre et à lire, donc je suppose que c'est une question de goût. Je suggère ces liens: python-stat-workbench , What-Programming-Language-for-Statistic-Inference , Machine-Learning- Using
steffen

1
Je recommanderais R, Python ou Matlab. Pour des raisons trop importantes à aborder, je laisserais tomber Matlab. Pour une personne de statistiques, j'irais avec R, pour un programmeur, j'irais avec Python. Pour les boucles internes, j'irais avec C / C ++. À une échelle suffisante, les coûts de Matlab dépassent tous les avantages.
Iterator

1
ou jetez un œil à julia ...
kjetil b halvorsen

Réponses:


7

Si vous souhaitez utiliser quelque chose hors de la boîte, Weka pourrait être un excellent point de départ. Il n'est pas nécessaire de programmer quoi que ce soit. Vous importez vos données, les visualisez et jouez avec différents modèles.

Ensuite, la chaîne serait R. Il y a une courbe d'apprentissage associée - en particulier avec la fusion de vos données pour qu'elles s'intègrent dans les structures de données R, mais une fois que vous avez surmonté cela, vous avez des tonnes de bibliothèques qui offrent toutes les capacités d'apprentissage automatique sans trop d'effort.

Ensuite, la programmation manuelle des algorithmes d'apprentissage automatique. Puisque vous utilisez déjà Octave et cherchez des alternatives, peut-être que ce que vous voulez, ce n'est pas de transmettre des algorithmes de code dans un autre système, mais simplement d'utiliser les bibliothèques écrites par d'autres personnes.

Si vous suivez le chemin R, vous trouverez peut-être un livre de Luis Torgo (Exploration de données avec R: Apprentissage avec des études de cas) très utile (divulgation: pas d'affiliation). Il décrit en détail des études de cas que vous pouvez adapter à votre problème.


15

Vous obtiendrez peut-être de meilleures réponses si vous spécifiez les algorithmes spécifiques qui vous intéressent. J'utilise R pour ce genre de choses (je fais de l'économétrie en série temporelle, cependant, pas de l'apprentissage automatique); vous pouvez voir la fonctionnalité existante ici:

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

et il existe un code R pour implémenter l'analyse dans Hastie, Tibshirani et Friedman's Elements of Statistic Learning :

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

Le système d'empaquetage de R est assez génial et pousse les gens à documenter leur code, et il est open source afin que vous puissiez toujours regarder la mise en œuvre. Je n'ai pas utilisé Matlab depuis quelques années et je ne l'ai pas utilisé pour beaucoup d'apprentissage automatique - leurs boîtes à outils sont généralement bien documentées mais peuvent être coûteuses, mais le code fourni par l'utilisateur sera aussi mal documenté que les autres.


11

Dans son cours en ligne d'apprentissage automatique, Andrew Ng suggère d'utiliser Octave / Matlab.

Je vous recommande de vous inscrire à la prochaine édition de ce cours: il est vraiment utile et vous apprendrez beaucoup de choses sur Octave et sur les différents algorithmes d'apprentissage automatique.

EDIT 1 : Je suis d'accord avec d'autres personnes qui préfèrent travailler dans R. Cependant, pour résoudre les problèmes d'apprentissage automatique, la plupart de vos calculs seront sous forme matricielle, et comme souligné par @Wayne, les langages Matlab ou Octave sont très populaires à cause de leur pouvoir. Vous voudrez peut-être jeter un œil aux solutions aux exercices de cours d'apprentissage automatique proposés par d'autres étudiants; vous pouvez sûrement en apprendre certaines choses:

Gkokaisel Github

Merwan Github


1
Je suis inscrit à cette édition du cours! Le problème est que faire les choses les plus simples en dehors du cours ne fonctionne pas! La documentation est inutile.
B Seven

3
Je dois dire que Matlab (donc Octave) est un langage de programmation terrible. Il est très populaire dans les domaines de l'ingénierie et de l'apprentissage automatique, mais cela est dû à sa puissance et à son utilisation dans les écoles, non pas parce qu'il s'agit d'un langage de programmation moderne. Cela dit, vous serez plus susceptible de rencontrer des textes d'apprentissage automatique qui l'utilisent que vous n'utiliserez R ou Python.
Wayne

1
Je fais tout mon travail dans MATLAB, ce n'est pas le meilleur langage de programmation au monde (je dirais que R était encore pire; o), mais cela vaut la peine de persévérer car il est très bon pour la recherche en apprentissage automatique. Pour les réseaux de neurones, recherchez la bibliothèque NETLAB et étudiez également le processus gaussien avec la bibliothèque GPML, les deux sont d'excellents morceaux de kit, et l'IIRC fonctionne tous les deux avec l'octave. Pour la régression linéaire régularisée, il ne s'agit que d'une seule ligne de MATLAB, pour les modèles non linéaires, il y a la boîte à outils GKM, theoval.cmp.uea.ac.uk/projects/gkm (désolé pas encore de mnual).
Dikran Marsupial

1
Les calculs matriciels peuvent également être effectués dans R, bien que la notation, par exemple t(A) %*% B, soit moins intuitive que dans Matlab.
Itamar

1
N'y a-t-il pas de bonnes bibliothèques matricielles pour tous les langages de haut niveau comme C #, Java, Python et Perl?
B Seven

10

Le scikit-learn (maintenant sklearn) devrait répondre à plusieurs des critères que vous avez décrits (vitesse, classes bien conçues pour gérer les données, les modèles et les résultats), y compris les applications ciblées (régression pénalisée L1 / L2, SVM, etc.). Il est livré avec un ensemble de documentation riche et de nombreux exemples . Voir également sa description dans un article publié dans le JMLR.

Un autre framework en Python est Orange , qui peut être utilisé via une interface graphique douce ou directement sur la ligne de commande. Pour le filtrage collaboratif, pyrsvd peut être intéressant mais je ne l'ai jamais essayé. Cependant, Apache Mahout pourrait certainement être utilisé pour le filtrage collaboratif .


1

Si vous vous référez à un prototype industriel (c'est-à-dire quelque chose qui est fait pour être utilisé par de vraies personnes et non pour de la recherche pure), le python est pour le moment la seule voie à suivre.

Si vous utilisez Matlab, Octave ou R, vous obtenez un environnement facile à utiliser pour la recherche ML, mais ce sera un cauchemar de mettre le modèle au travail avec une interface utilisateur ou un service Web.

En python, nous avons la chance d'avoir à la fois un écosystème scientifique étendu ( sklearn pour ML, pandas pour la recherche de données, matplotlib / seaborn pour la visualisation) et un écosystème d'application (pensez à django et à son cadre de repos ).

Python c'est un langage facile à apprendre. À l'avenir, j'espère que l'écosystème Javascript deviendra scientifiquement solide en tant que python, mais malgré de grands projets, je ne pense pas que cela arrivera bientôt.

Ne vous enveloppez pas dans une boîte, utilisez un langage général!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.