Non classé

Meilleur langage de programmation pour l'apprentissage automatique – Apprendre langue

Une question que je me pose souvent est:

Quel est le meilleur langage de programmation pour l'apprentissage automatique?

J’ai répondu à cette question à plusieurs reprises, il est temps d’explorer plus en profondeur cette question dans un article de blog.

En fin de compte, le langage de programmation que vous utilisez pour l'apprentissage automatique doit prendre en compte vos propres exigences et préférences. Personne ne peut réellement répondre à ces préoccupations pour vous.

Personne ne peut réellement répondre à ces préoccupations pour vous.

Quelles langues sont utilisées

Avant de vous donner mon opinion, il est bon de regarder autour de vous pour voir quelles langues et quelles plates-formes sont populaires dans des communautés choisies par des professionnels de l'analyse de données et de l'apprentissage automatique.

KDnuggets a eu des sondages de langue pour toujours. Un sondage récent s'intitule «Quels langages de programmation / statistiques vous avez utilisés pour un travail d'analyse, d'exploration de données et de science des données en 2013». Les tendances sont presque identiques à celles de l’année précédente. Les résultats suggèrent une utilisation intensive de R, Python et SQL pour l’accès aux données. SAS et MATLAB se classent plus haut que ce à quoi je m'attendais. Je m'attendais à ce que les comptes SAS servent à l'analyse de données d'entreprise plus grandes (Fortune 500) et à MATLAB à des fins d'ingénierie, de recherche et d'utilisation par les étudiants.

kdnuggets langages de programmation populaires

Les plates-formes les plus populaires pour l'apprentissage automatique, extraites du sondage KDnuggets 2013.

Kaggle propose des concours d’apprentissage automatique et interroge ses utilisateurs sur les outils et les langages de programmation utilisés par les participants aux concours. Ils ont publié des résultats en 2011 sous le titre Outils préférés de Kagglers (voir également la discussion sur le forum). Les résultats suggèrent l'utilisation abondante de R. Les résultats montrent également une bonne utilisation de MATLAB et SAS avec une représentation Python beaucoup plus basse. Je peux attester que je préfère R à Python pour le travail de compétition. Nous pensons que l'offre d'analyse et de sélection des algorithmes est plus complète.

kaggle outils les plus populaires

Les outils les plus populaires utilisés sur Kaggle, le site Web du concours d’apprentissage automatique.

Ben Hamner, administrateur de Kaggle et auteur du message de blog ci-dessus, décrit plus en détail les options de programmation de langages pour l’apprentissage automatique dans un message du forum intitulé «Quels outils les gens utilisent-ils généralement pour résoudre des problèmes».

Ben commente que MATLAB / Octave est un bon langage pour les opérations sur les matrices et peut être utile lorsque vous travaillez avec une matrice de fonctions bien définie. Python est fragmenté de manière globale et peut être très lent, sauf si vous passez en C. Il préfère Python lorsqu'il ne travaille pas avec une matrice de caractéristiques bien définie et utilise Pandas et NLTK. Ben commente que «En règle générale, s’il est jugé intéressant pour les statisticiens, il est implémenté en R» (bien dit). Il se plaint également que la langue elle-même est laide et pénible à travailler. Enfin, Ben fait remarquer que Julia n’a pas grand-chose à offrir en matière de bibliothèques mais qu’elle est sa nouvelle langue préférée. Il commente qu'il a la concision de langages comme MATLAB et Python avec la rapidité de C.

Anthony Goldbloom, PDG de Kaggle, a présenté au groupe d'utilisateurs Bay Area R en 2011 sur la popularité des compétitions R in Kaggle intitulé Concours de modélisation prédictive: faire de la science des données un sport (voir les diapositives PowerPoint). Les diapositives de la présentation donnent plus de détails sur l’utilisation des langages de programmation et suggèrent une catégorie Autre aussi grande que l’utilisation de R. Il serait bien de disposer des données brutes collectées (pourquoi libérez-le à leur propre communauté de données, sérieusement !?).

langues populaires sur kaggle

Langages de programmation populaires sur Kaggle, extraits de la présentation de Kaggle.

Sur son blog, John Langford, Hunch a rédigé un excellent article sur les propriétés d'un langage de programmation à prendre en compte lors de l'utilisation d'algorithmes d'apprentissage automatique intitulé «Langages de programmation pour les implémentations d'apprentissage automatique». Il divise les propriétés en soucis de rapidité et de programmabilité (facilité de programmation). Il signale de puissantes implémentations standard d'algorithmes, toutes en C, et indique qu'il n'a pas utilisé R ou MATLAB (le message a été écrit il y a 8 ans). Prenez le temps de lire certains commentaires d’universitaires et de spécialistes de l’industrie. Il s’agit d’un problème profond et nuancé qui dépend vraiment du problème que vous résolvez et de l’environnement dans lequel vous le résolvez.

Langues d'apprentissage machine

Je pense aux langages de programmation dans le contexte des activités d’apprentissage automatique que je veux effectuer.

MATLAB / Octave

Je pense que MATLAB est excellent pour représenter et travailler avec des matrices. En tant que tel, je pense que c’est un excellent langage ou une excellente plate-forme à utiliser pour remonter dans l’algèbre linéaire d’une méthode donnée. Je pense qu’il est approprié d’apprendre superficiellement sur les algorithmes la première fois et de manière approfondie lorsque vous essayez de comprendre quelque chose ou d’approfondir la méthode. Par exemple, il est populaire dans les cours universitaires pour débutants, comme le cours d’apprentissage automatique Coursera de Andrew Ng.

R

R est un bourreau de travail pour l'analyse statistique et, par extension, l'apprentissage automatique. On parle beaucoup de la courbe d’apprentissage, je ne voyais pas vraiment le problème. C'est la plateforme à utiliser pour comprendre et explorer vos données à l'aide de méthodes statistiques et de graphiques. Il dispose d'un nombre énorme d'algorithmes d'apprentissage machine et d'implémentations avancées également écrites par les développeurs de l'algorithme.

Je pense que vous pouvez explorer, modéliser et prototype avec R. Je pense que cela convient à des projets ponctuels avec un artefact comme un ensemble de prédictions, un rapport ou un document de recherche. Par exemple, il s’agit de la plate-forme la plus populaire pour les concurrents en apprentissage automatique tels que Kaggle.

Python

Python est un langage scientifique populaire et une étoile montante pour l'apprentissage automatique. Je serais surpris que cela prenne R sur le manteau d’analyse de données, mais la manipulation de la matrice dans NumPy peut défier MATLAB et les outils de communication tels que IPython sont très attrayants et représentent un pas en avant pour la reproductibilité.

Je pense que la pile SciPy pour l'apprentissage automatique et l'analyse de données peut être utilisée pour des projets ponctuels (comme des documents), et que les cadres tels que scikit-learn sont suffisamment matures pour être utilisés dans des systèmes de production.

Famille Java / famille C

L'implémentation d'un système utilisant l'apprentissage automatique est un défi d'ingénierie comme un autre. Vous avez besoin d'une bonne conception et d'exigences développées. L'apprentissage automatique est un algorithme, pas de la magie. Lorsqu'il s'agit d'implémentations de production sérieuses, vous avez besoin d'une bibliothèque robuste ou vous personnalisez une implémentation de l'algorithme en fonction de vos besoins.

Il existe des bibliothèques robustes, par exemple, Java a Weka et Mahout. Notez également que les implémentations plus profondes des algorithmes centraux tels que la régression (LIBLINEAR) et SVM (LIBSVM) sont écrites en C et exploitées par Python et d’autres toolkits. Je pense que vous êtes sérieux et que vous pouvez prototyper en R ou Python, mais vous implémenterez un langage plus lourd pour des raisons telles que la vitesse d'exécution et la fiabilité du système. Par exemple, le backend de BigML est implémenté dans Clojure.

Autres préoccupations

  • Pas un programmeur: Si vous n'êtes pas un programmeur (ou un programmeur confiant), je vous recommande de jouer à l'apprentissage automatique via une interface graphique telle que Weka.
  • Une langue pour la recherche et les opérations: Vous souhaiterez peut-être utiliser le même langage pour le prototypage et la production afin de réduire le risque de ne pas transférer efficacement les résultats.
  • Langue des animaux: Vous avez peut-être un langage favori pour votre animal de compagnie et vous souhaitez vous en tenir à cela. Vous pouvez implémenter vous-même des algorithmes ou utiliser des bibliothèques. La plupart des langues ont une forme de paquet d’apprentissage automatique, même primitive.

La question du langage de programmation d’apprentissage automatique est populaire sur les blogs et les sites de questions et réponses. Quelques discussions de choix incluent:

Quel langage de programmation utilisez-vous pour l'apprentissage automatique et l'analyse des données, pourquoi le recommandez-vous?

J'ai hâte d'entendre vos pensées, laissez un commentaire.

0519

You may also like

Leave a reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

More in Non classé