Depuis plusieurs années, de nombreux Data Scientists ont été amenés à privilégier des outils de type « langage » en ligne de commande pour faire du « Big Data », tels R et Python. Mais peut-on vraiment se lancer dans un projet DataScience uniquement armé de ces deux technologies ?
L’évolution des outils de Data Science
Si on regarde avec un peu de recul l’évolution de ce qu’on appelle aujourd’hui la Data Science, (qui je le rappelle est une discipline hybride englobant la statistique, le machine learning, et l’intelligence artificielle), on se rend compte que les outils n’ont jamais cessé d’alterner entre des outils de type « ligne de commande » et des outils de type « GUI » (interfaces utilisateur graphiques).
En général, l’arrivée d’une nouvelle technologie rend les outils sophistiqués existants disposant d’interfaces de type GUI obsolètes. Cela ne laisse que la ligne de commande avec des logiciels relativement basiques en termes d’interaction homme-machine, le temps que les éditeurs mettent au point une nouvelle interface qui fonctionne avec les nouvelles technologies, ce qui peut prendre plusieurs années.
Le Big Data n’a pas fait exception dans le domaine de la Data Science, et a mis à mal une grande partie des logiciels dits de « Data Mining » existants du marché, poussant finalement les Data Scientists à se rabattre sur des outils basiques en ligne de commande pour pouvoir faire du « Big Data ».
Que vous preniez Spark, Scala, R, Python, Jupyter, etc., toutes ces technologies très en vogue actuellement en Data Science sont au format ligne de commande.
L’arrivée de l’open source
Cette dernière alternance GUI / ligne de commande coïncide avec une arrivée massive de l’open source dans le domaine de la Data Science. D’ailleurs, ce n’est pas un hasard si les technologies citées plus haut sont toutes open source. Ce phénomène trouve notamment sa source dans l’enseignement où les universités font de plus en plus la part belle à l’open source pour des raisons soit économiques soit d’indépendance vis-à-vis des éditeurs.
L’open source a également été indéniablement boosté par le phénomène des cours en ligne et des Mooc, qui a explosé en DataScience ces dernières années, porté par de nouveaux acteurs spécialisés comme Coursera, Udemy, Udacity, etc.
Nombre de Data Scientists d’aujourd’hui sont d’ailleurs des statisticiens et des « data miners » qui ont évolués à l’aide de ces Moocs et d’une bonne dose de motivation personnelle.
Bref, le constat est que ce soit par le biais de l’Université ou par les Moocs, l’open source s’est imposé massivement en Data Science ces dernières années.
La montée irrésistible de R et Python
Ce qui précède nous amène à la question centrale de l’article : « peut-on tout faire en DataScience avec R et Python ? »
R et Python ne sont pas des langages nouveaux. R est lui-même dérivé du langage S, développé par John Chambers au sein des laboratoires Bell en 1975. Le langage Python a quant à lui été créé à la fin des années 1980 à l’Institut national de recherches mathématiques et informatiques d’Amsterdam par Guido van Rossum.
De nombreux Data Scientists ayant été principalement formés sur l’un des deux environnements nous demandent souvent s’ils peuvent faire l’intégralité de leur projet Data Science en R ou en Python. Nos clients nous posent du coup souvent la même question.
Plutôt R ou plutôt Python ?
Posé comme cela la question peut paraître étrange d’autant qu’en général, les Data Scientists se sont orientés soit plutôt vers R ou soit plutôt vers Python mais rarement les deux à la fois.
Il faut préciser toute de suite qu’avec seulement R et Python, comme langage de programmation sans bibliothèque externe, on ne va pas bien loin en Data Science. Les deux langages doivent en effet utiliser des librairies externes pour faire fonctionner la plupart des algorithmes nécessaires. Ces librairies indispensables existent en très grandes quantités dans les deux langages et ne sont bien sûr pas interchangeables d’un langage à l’autre. Certaines d’entre elles sont même liées en plus à l’environnement de travail Big Data sur lequel vous travaillez, comme par exemple la Mllib de Spark.
L’objet de l’article n’est pas de se lancer dans une comparaison R versus Python. Cependant, on retiendra, très globalement et avec des exceptions, que R est un peu plus à l’aise dans l’exploration des données et les statistiques, tandis que Python est plus adapté quand il s’agit d’industrialiser des algorithmes ou des modèles, surtout sur des environnements Big Data.
Plus important, le propos est de rappeler que pour faire fonctionner ces langages (et les librairies qui y sont associées), vous avez besoin d’un outil que l’on appelle un I.D.E. (Integrated Development Environment, ou E.D.I. en Français).
Cet IDE contient notamment au moins un interpréteur, indispensable au fonctionnement du langage, et souvent un éditeur de texte spécialisé intégré avec détection de la syntaxe.
Rien n’empêche bien sûr d’utiliser pour travailler un éditeur de texte traditionnel, voire plusieurs outils complémentaires séparés, mais la tendance actuelle est plutôt d’ajouter à ces IDE les utilitaires additionnels nécessaires pour la DataScience. On citera simplement à titre d’exemple Anaconda pour Python et R-Studio pour le langage R.
L’I.D.E. comme nouvel outil de base de la DataScience
Cette tendance à enrichir l’I.D.E. avec des fonctions facilitant l’utilisation du langage a bien été repérée par les grands éditeurs de logiciels du secteur et certains s’y sont engouffrés comme sur une autoroute. A tel point que les dernières versions des logiciels de Data Science que nous avons pu tester ressemblent en tous points à des I.D.E. super-vitaminés.
Cela est particulièrement visible si vous regardez notamment les dernières versions des éditeurs de renommée mondiale en Data Science, pour n’en citer que quelques-uns : SAS Viya, IBM Watson DSX, KNIME, Microsoft Azure, ou même Dataiku DSS.
Un gain de productivité énorme
Ces logiciels ont un avantage indéniable sur un I.D.E. basique, ils apportent une interface utilisateur, mais surtout ils apportent un système de Workflow. Le Workflow est une représentation graphique sophistiquée et éditable d’une suite de traitements algorithmiques appelés nœuds, chaque nœud représentant un algorithme ou un traitement de base avec des paramètres d’entrées et de sortie. Les nœuds sont reliés entre eux par des flux qui sont représentés graphiquement par des flèches.
Outre son extrême lisibilité, le workflow est aussi très pratique en Data Science car il ne fait ce qu’aucun langage n’est capable de faire : sauvegarder l’état de votre jeu de données entre chaque étape du traitement. Généralement le Workflow vous propose également un jeu de traitements tout prêt à l’emploi qui peut faire gagner énormément de temps. C’est notamment le cas dans la phase de préparation et de recodage des données.
Le gain en productivité apporté par un workflow (par rapport à une interface ligne de commande de base) est énorme. Il sera vite rentabilisé par rapport à de la programmation linéaire uniquement en mode ligne. De plus, lorsque vous avez besoin d’une fonction qui n’existe pas nativement, vous pouvez toujours la programmer en R ou en Python. Celle-ci devient alors un nœud de votre workflow qui, s’il est bien conçu, est réutilisable par la suite, un peu comme une macro. Le workflow vient donc en complément idéal du langage.
Le meilleur des deux mondes
Les logiciels de Data Science « nouvelle génération » sont maintenant nativement basés sur un langage (soit R, soit Python, plus rarement les deux), et sont conçus comme des environnements complets de développement de type I.D.E.
Les meilleurs apportent en général, en plus du support complet du langage, la notion de Workflow très utile en DataScience, le meilleur des deux mondes en quelque sorte.
Je conclurai en disant que R et Python sont de très bonnes bases en Data Science. Mais ces langages doivent être complétés par un logiciel de type I.D.E. capable d’implémenter un Workflow graphique si vous voulez que la productivité soit au rendez-vous dans vos projets.
Ces nouveaux I.D.E. (certains sont seulement à peine en train de sortir chez les éditeurs au moment où vous lirez ces lignes), représentent l’environnement moderne de travail idéal en Data Science. Ils vont vite devenir indispensables dès lors qu’on veut mettre les algorithmes et les modèles en production dans des environnements Big Data avec un minimum d’obstacles et de perte de temps.
Commentaires (4)
Votre adresse de messagerie est uniquement utilisée par Business & Decision, responsable de traitement, aux fins de traitement de votre demande et d’envoi de toute communication de Business & Decision en relation avec votre demande uniquement. En savoir plus sur la gestion de vos données et vos droits.
Il n'y aucunement besoin d'un IDE pour faire fonctionner Python, un simple éditeur de texte dédié suffit. Les IDE existent depuis des années et pour Python, on peut en dénombrer des dizaines. Il n'y a rien de nouveau là-dedans.
Si vous avez de gros projets, cela se gérera par scripts, le développement de vos propres modules et classes et éventuellement la mise au point d'une interface idoine (via le GUI de votre choix) pour vous lancer dans l'exploration de vos données une fois le développement fonctionnel.
Je comprends le sens de votre remarque, cependant, prenez s'il vous plait un instant le point de vue que tout ce que vous venez de décrire est parfaitement gérable par un I.D.E. adéquat, le tout dans une seule interface.
Si on considère de surcroit qu'un simple interpréteur associé à un éditeur de texte constitue un I.D.E. extrêmement sommaire, certes, vous voyiez que l'I.D.E. est en train de devenir plus important que le langage lui-même.
Après, c'est aussi une question de choix et de point de vue : vous pouvez parfaitement décider de faire un Paris-Nice en voiture, mais vous pouvez aussi prendre l'avion : les deux méthodes peuvent toutes les deux marcher.
D'abord je vous remercie pour l'article très intéressant. Je faisais justement une recherche sur le meilleur langage à utiliser pour mon projet de master en géophysique. Il s'agit d'analyser des données satellites puis générer des courbes en utilisant une interface graphique. Tout ceci sous forme d'un logiciel complet avec barre de menus.... J'ai commencé un peu avec Python puis j'ai découvert le langage R.
Je me demandais justement si le langage R convient ou encore Python est meilleur.
Je vous remercie pour votre aide.