Le choix d’un langage de programmation en data science
Quel langage choisir ? Est-ce que le choix de R est automatique ? Faut-il préférer un langage propriétaire ou un langage libre ? Est-ce qu’il faut choisir un langage générique ou un langage orienté pour le calcul scientifique ? Autant de questions que tout data scientist se pose lors de la mise en place d’un projet ou lors de l’apprentissage de nouvelles techniques.
Comme vous l’imaginez, il n’y a pas une réponse unique à toutes ces questions. Voici quelques éléments de réponse.
Quel type de langage choisir ?
La première question qui se pose reste votre objectif. En fonction de cet objectif, le choix d’un langage (ou d’une famille de langage) se fait naturellement. Si vous êtes en train de lire ces lignes, cela signifie que vous portez un intérêt à la data science au sens large. Dans ce cas, préférez l’utilisation d’un langage adapté à ce domaine. Si néanmoins vous voulez rester généraliste, le C++ est toujours une bonne solution mais soyez prêt à recoder les méthodes dont vous aurez besoin.
Quel langage spécifique choisir ?
Je vais vous présenter 4 langages de programmation créés ou adaptés à la science des données.
Ces langages illustrent bien les différentes approches de la programmation en data science. Ainsi R, Python, Matlab et Julia seront développés dans cet article. Il existe bien d’autres langages et vos suggestions sont les bienvenues. SAS ou STATA ne seront pas développés en tant que langages car ils ont souvent des caractéristiques proches de Matlab (à voir dans un futur article). Par ailleurs, SQL est fréquemment utilisé mais il sort du contexte de cet article.
Intéressé par des formations ?
Vous désirez découvrir R, Python et bien d'autres logiciels pour la data sciecne ?
Je propose aussi quelques évaluations sur différentes facettes du langage :
- apprentissage sur la difficulté d’apprentissage du langage,
- méthodes analytics sur la qualité et la quantité de méthodes de data mining et de statistique disponibles,
- vitesse sur les possibilités d’optimisation et de calculs distribués,
- communauté sur l’activité de la communauté des développeurs et des utilisateurs.
Résumé
Points forts :
- Si vous cherchez une méthode statistique, c’est dans R que vous la trouverez.
- Vous voulez vous former rapidement.
- Vous voulez un logiciel libre et gratuit.
Points faibles :
- Les performances ne sont pas votre priorité.
- Vous ne désirez pas intégrer vos analyses dans un projet plus large.
Apprentissage
méthodes analytics
Vitesse
Communauté
Points forts :
- Vous voulez un langage polyvalent.
- Vous cherchez un langage bien construit pour la manipulation et le nettoyage des données.
- Vous voulez un logiciel libre et gratuit.
Points faibles :
- Vous ne cherchez pas les méthodes statistiques les plus novatrices.
- Les performances ne sont pas votre priorité la plus importante.
Apprentissage
méthodes analytics
Vitesse
Communauté
Points forts :
- Vous cherchez un support actif et rassurant.
- Des performances optimisées.
- Vous voulez des outils périphériques permettant de gérer des projets efficacement.
Points faibles :
- Le prix.
- L’utilisation d’un langage propriétaire
- La difficulté d’intégration dans un projet plus général.
Apprentissage
méthodes analytics
Vitesse
Communauté
Points forts :
- Vous cherchez un langage optimisé pour les calculs massivement parallèles.
- Le challenge de se lancer dans une aventure en pleine expansion.
- Vous voulez un logiciel libre et gratuit.
Points faibles :
- La faible quantité de méthodes disponibles.
- Les risques de se lancer dans une aventure en pleine expansion.
Apprentissage
méthodes analytics
Vitesse
Communauté
R est souvent considéré comme un logiciel mais il s’agit bel et bien d’un langage (ce qui freine pas mal de statisticiens). Le langage R est un langage pour les statisticiens par des statisticiens, c’est à la fois sa force et sa faiblesse. La syntaxe de R est parfaitement adaptée à des applications en statistique, elle peut néanmoins être problématique lorsque des nécessités d’optimisation ou d’intégration sont nécessaires.
Le langage R est un langage pour les statisticiens par des statisticiens, c’est à la fois sa force et sa faiblesse.
Une chose est sûre, R a pour lui deux avantages : le nombre de méthodes statistiques disponibles et une communauté de chercheurs qui développe sans cesse le langage et l’étendue fonctionnelle. Vous avez lu récemment un développement méthodologique dans une revue scientifique, vous avez beaucoup de chance de trouver un package pour l’appliquer. Un signe de plus qui montre l’intérêt porté à R est la création du R consortium dans lequel Microsoft occupe une place de choix (voir notre article sur le R consortium). Une autre force de R réside dans ses outils graphiques avec des packages bien construits permettant une extrême souplesse en terme de visualisation.
La critique récurrente envers R concerne l’optimisation de ses calculs et il est vrai que sur des benchmarks classiques, R est bien souvent en-deçà de ses concurrents. Néanmoins, les passionnés de R vous expliqueront qu’on peut rendre R beaucoup plus rapide grâce à des packages qui permettent des calculs massivement parallèles. Une autre faiblesse de R réside dans sa complexité d’intégration. Le langage R reste un langage adapté à la statistique et au data-mining et il faudra l’interfacer avec d’autres langages pour un projet plus large. Une faiblesse que Python n’a pas.
Python a acquis ces dernières années une réelle légitimité en data science. Ceci s’explique par les bibliothèques spécialisées apparues et par la simplicité d’apprentissage du langage. En effet, il est très bien adapté pour apprendre les bases de la programmation.
Python est un langage complet qui s’est tourné naturellement vers la data science
Python s’appuie sur des librairies très complètes (NumPy, SciPy, pandas, matplotlib, IPython) et sur une facilité de prototypage pour mettre en place des process plus ou moins complexes.
La force de Python est la possibilité d’intégrer des algorithmes de data science dans un programme plus général. On pourra donc créer un programme complet avec seulement une partie dédiée aux modèles et ceci rapidement. S’il s’agit d’un programme pour la production, on optimisera dans un second temps les parties du code ayant des faiblesses en utilisant un langage de plus bas niveau (C++…).
On est donc encore loin d’un langage optimisé pour les calculs massivement parallèles. Néanmoins, on voit en Python le langage qui pourrait rassembler les data scientists plus orientés informatique (qui ont plus le réflexe C++) et les data scientists plus orientés data mining (qui s’orientent naturellement vers R).
Matlab reste une référence pour la programmation scientifique avec des objets bien construits et des fonctions déjà définies pour la data science. Les nouvelles versions de Matlab sont agréables d’utilisation et intègrent des outils originaux (génération automatique d’exécutable pour automatiser des commandes Matlab complexes, traduction automatique en C++ du code Matlab…).
Le langage Matlab a évolué d’un langage orienté vers le calcul numérique vers un langage adapté à la data science.
La question qui se pose avec Matlab est de savoir si vous êtes prêt à investir dans un logiciel payant et un code propriétaire. Ceci paraît assez peu cohérent avec le monde actuel de la data science qui se base avant tout sur des outils ouverts. Cependant, les équipes de MathWorks peuvent apporter un réel plus à vos projets avec des webinars gratuits et un support technique à votre écoute. Une chose est sûre : Matlab ne s’avoue pas vaincu face à la concurrence libre et leurs équipes multiplient les initiatives pour améliorer le langage.
Au niveau de l’optimisation, la Parallel Computing Toolbox permet de prendre en compte le calcul parallèle et des fonctions MapReduce sont disponibles afin de travailler sur des clusters Hadoop. Même si beaucoup de ces fonctions sont disponibles sous R et Python, Matlab reste un bon produit qui a sa place dans ce comparatif.
Avec un début de développement en 2009 au MIT et une première version officielle en 2012, le langage Julia est un langage jeune.
Le langage Julia est né du manque d’optimisation de R et de Python.
Julia est né d’un besoin d’éviter de devoir combiner plusieurs langages pour développer des applications en data science. En effet, lorsqu’on veut créer ce genre d’application, on commence par un prototypage en Python (ou en R). On étudie ensuite les faiblesses de ce prototype en terme d’optimisation et on a recours à des langages de plus bas niveau (souvent du C++ ou même de l’assembleur). On peut aussi utiliser des langages de bas niveau spécifiques (par exemple du CUDA pour paralléliser…).
Avec Julia, toute l’optimisation est faite dans le langage et il s’agit en plus d’un langage qui ne se compile pas (à la différence des langages de bas niveau du type C++). Julia se compile mais à la volée en intégrant de l’optimisation. Les résultats sont assez impressionnants et sont souvent bien meilleurs que les langages R et python. Néanmoins, la jeunesse de ce langage vous obligera à recoder un certain nombre de fonctions si vous voulez utiliser des algorithmes récents.
Que faire ?
Toujours pas décidé ? Si les éléments développés ne vous ont pas permis de choisir, il ne vous reste qu’à vous plonger dans la documentation large et fournie de chaque langage. Mais un conseil : ne vous perdez pas dans les détails et si votre objectif est clairement défini, le choix du langage se fera naturellement ! Donc à vous de jouer… et n’hésitez pas à nous contacter si vous avez besoin de conseils et de formations.
En savoir plus
- Un outil pour faire du R dans votre navigateur : http://www.r-fiddle.org/
- La librairie Panda de Python : http://pandas.pydata.org/
- Quelques caractéristiques novatrices du langage Matlab pour le big data : http://fr.mathworks.com/discovery/big-data-matlab.html
- Un article intéressant sur Julia et son utilisation : https://zestedesavoir.com/articles/141/a-la-decouverte-de-julia/
- JuliaBox pour tester Julia dans votre navigateur : http://www.juliabox.org/
Vous voulez devenir data scientist ?
Vous désirez découvrir R, Python et bien d'autres logiciels pour la data sciecne ?
Partager cet article
Comments 3
Pingback: Liste des bibliothèques Python pour la data science - STAT4DECISION
Pingback: Faire une régression linéaire avec R et avec python - STAT4DECISION
Pingback: IBM-SPSS, SAS, RapidMiner et KNIME toujours leaders parmi les data science platforms