Pydata Paris Avril 2015 : le compte rendu scikit learn

PyData Paris 2015

Pydata est un évènement tourné autour de l’écosystème python et de ses applications à la data science. La première édition a eu lieu en 2012 à New York. Depuis, les pydata-geeks ont pu se retrouver à la Silicon Valley, Boston, Dallas, Berlin ou encore Londres.Cette année, c’était au tour de Paris d’accueillir pour la première fois le pydata au sein de l’école Telecom ParisTech le 3 avril dernier. Le succès était au rendez-vous puisque pas moins de 300 participants se sont présentés à l’évènement avec une trentaine de speakers sur des sujets allant du data processing à la data-visualization en passant par des questions plus techniques comme l’optimisation et la parallélisation du calcul. L’usage business aura eu toute sa place durant cette journée, notamment avec la table ronde animée par Olivier Grisel autour de la question l’usage industriel de la désormais célèbre bibliothèque scikit-learn.

Scikit-learn, ou scikit pour les intimes, était au centre de la conférence. En effet, tous les sujets ont gravité de près ou de loin autour de cette bibliothèque. Il est donc naturel de faire ce compte rendu sous le prisme de scikit. La conférence a pu mettre en lumière, les constituants de scikit-learn, comme plateforme de référence pour le datamining aux côtés de R et de SAS, sa communauté d’experts et de chercheurs et les usages qui en sont faits dans le e-commerce, l’aéronautique ou encore le trading de matières premières.

Scikit-learn, LA librairie de machine learning

Soyons clair, l’évènement aurait aussi bien pu s’appeler scikit-day tant il a été question de cette bibliothèque. Néanmoins, rendons à Python ce qui est à Python car c’est bien ce langage de programmation qui fédère tout ce monde et constitue une des principales raisons du succès de scikit. Tous les speakers sont d’accords ! Python c’est : la facilité d’apprentissage, d’écriture et relecture du code pour certains, l’interactivité poussée à ses limites avec ipython notebook et l’optimisation via cython pour d’autres, tout le monde y trouve son compte. Tout cela, des acteurs majeurs comme Microsoft l’on bien compris et Benjamin Guinebertière en a profité pour rappeler l’intégration de python à Azure, la plateforme cloud de Microsoft.

Python, c’est aussi un nombre impressionnant de bibliothèques de traitements numériques et de calcul scientifique sur lesquelles s’appuie scikit.

 

C’est ainsi que Joris Van den Bossche a consacré sa présentation a Pandas, sorte de couteau suisse du data analyst. Pandas permet d’importer des données structurées, de procéder aux étapes de prétraitement, de faire des requêtes SQL ou encore de faire de l’analyse exploratoire et même de la data-visualization. Pandas permet d’apporter dans l’univers python les outils de base de R (l’autre langage plébiscité par les data scientists) comme les dataframes (tables pouvant contenir plusieurs type de données), les séries temporelles et tous les outils qui permettent de les manipuler de la manière la plus intuitive possible.

 

Sans numpy pas de scikit ! En effet, comme tout utilisateur chevronné (ou pas) de scikit le sait, les données doivent impérativement être formatées dans des array numpy préalablement à toute analyse statistique. Numpy est une bibliothèque très puissante de calcul numérique qui permet d’optimiser la vitesse de calcul et l’utilisation de la mémoire, tout ceci sans que l’utilisateur ait à s’en soucier. La façon la plus simple de comprendre les arrays est de les considérer comme des matrices que l’on peut manipuler très simplement. Scikit s’appuie largement sur cette simplicité pour à son tour fournir une interface intuitive dans les phases de transformation, de sélection et de fitting[1] des données par exemple. Numpy a également l’avantage d’être très utilisé dans la communauté scientifique python (pandas, scikit-image, scipy etc…) ce qui simplifie grandement l’utilisation conjointe des différentes bibliothèques.

 

Scikit-image est une bibliothèque de traitement d’image facile d’accès, et qui peut prendre en charge divers formats, selon Emmanuelle Gouillart, chercheur au CNRS. Elle permet de mettre des fichiers image au format numpy par exemple, afin de procéder à leur analyse grâce à scikit.

 

Scikit-learn, une communauté d’experts

Quelques-uns des développeurs les plus actifs de scikit étaient également présents. Ces acteurs se sont évertués à montrer l’efficacité et la simplicité d’accès de scikit. Aussi, quoi de plus naturel que de commencer par une keynote de très bonne qualité de Gael Varoquaux, chercheur à l’INRIA et porteur du projet. Pour lui, il existe deux types de machine learners : les scientifiques dont l’objectif est d’améliorer des modèles à partir de méthodes complexes alors que les «  business » accordent plus d’importance à l’accès à des modèles testés et éprouvés, notamment avec des API. Autrement dit, ceux pour qui « boring is good », selon Gael.

Le parti pris de Scikit veut qu’il soit orienté vers un public large et les afficionados du big data seront inconsolables en apprenant qu’en pratique, la plupart des traitements de données se font in-memory, sur une machine, très souvent « un macbook air » selon Gael Varoquaux. Il n’en reste pas moins que les volumes de données ayant tendance à augmenter rapidement, il n’est pas question d’écarter les problématiques du big data du revers de la main. Scikit intègre plusieurs solutions partiels :

  • le principe des algorithmes en ligne, qui consistent à ajuster les modèles au fur et à mesure que de nouvelles donnée arrivent via la commande partial_fit par exemple
  • l’intégration de plusieurs méthodes de réduction de données à la volée.

Si scikit a pour objectif majeur la simplicité et l’accessibilité au plus grand nombre dans son utilisation, son approche du développement suit une ligne de conduite similaire : une communauté croissante de plus de 200 contributeurs et une ouverture et une écoute pour les éventuels nouveaux arrivant la tête pleine de nouvelles améliorations. En effet, les gourous de scikit prennent le temps de répondre et de discuter les propositions arrivant sur la mailing list. Toutes les bonnes pratiques de programmation sont mises en œuvre : documentation claire et illustrations, fort taux de unit-testing et… utilisation de gitHub.

 

Gilles Louppe, chercheur au CERN et contributeur majeur, notamment sur les arbres de décisions, est plus entré dans les détails techniques des algorithmes des forêts aléatoires. D’une manière générale les arbres de décisions sont une catégorie d’algorithmes qui ont comme avantage leur consistance, la prise en charge de données hétérogènes, la rapidité en fitting et en prévision. Gilles Louppe a également illustré la possibilité qui nous est offerte d’interpréter les résultats de ce type d’algorithmes et le peu d’hypothèses qu’ils nécessitent. Ces modèles sont aussi réputés peu biaisés (au sens statistique). Le principe des forêts aléatoires est relativement simple à comprendre. Ils consistent à entraîner beaucoup d’arbres aléatoires (une forêt) puis à combiner leurs résultats. On apporte ainsi un gain substantiel aux prévisions et on profite de leur nature intrinsèquement parallélisable (possibilité d’entraîner plusieurs arbres à la fois). Ils ont également comme avantage de ne pas nécessiter beaucoup d’efforts d’ajustement des paramètres pour des résultats satisfaisants.

Pour terminer cette présentation plutôt technique, nous avons eu droit à une rapide description des modèles de boosting et de leurs caractéristiques : meilleurs résultats, contrôle possible du sur-apprentissage (phénomène de qui consiste à obtenir de bon résultats sur le jeu de données d’apprentissage mais relativement limités sur de nouvelles données) mais beaucoup de soin à apporter au choix des paramètres et nature intrinsèquement non parallélisable.

 

Scikit-learn, de très nombreux utilisateurs « business »

L’un des aspects les plus intéressants du pydata fut probablement l’ensemble des témoignages d’utilisation à l’échelle industrielle de l’écosystème python pour la data. Ainsi, startups, cabinets de conseils, multinationales ont tous répondu à l’appel du pydata, pour montrer quels usages incroyables ils avaient réussi à faire de scikit et plus généralement de la data science.

Jean Paul Smets (Nexedi) a présenté la plateforme big datafull python de Wendelin comme alternative aux solutions hybrides basées sur l’environnement hadoop/spark grâce notamment à l’augmentation du format numpy par la persistance des données et le calcul distribué sur mariaDB.

La société Kpler, représentée par Jean Maynier opère dans les commodities market et se présente comme le premier système de cargo-tracking à mettre en relation le trading et le shipping des gaz liquides, le tout basé sur l’analyse prédictive.

Vincent Feuillard (Airbus Group Innovations) a expliqué comment scikit était actuellement testé en maintenance prédictive des A380. Avant d’opter pour cette solutions, les ingénieurs d’AGI ont procédé à un benchmark des bibliothèques de machine learning basée sur des critères comme la stabilité, la fiabilité, la compatibilité et la pérennité, estimant néanmoins que les deux derniers prérequis ne sont pas assuré de manière évidente.

 

Point culminant de cette conférence, la table ronde qui a suivi, animée par Olivier Grisel et en présence de Benjamin Guinebertière (Evangilste Azure chez Microsoft), Samuel Charron (Data Sergeant chez Data Publica), Julien Sananikone (Product Manager chez PriceMinister) et Kenji Lefebvre (Product Manager chez Dataiku) a permis d’avoir un panorama des impressions de différents acteurs sur différents aspects de l’analyse de données. Si le sujet de la table ronde était l’utilisation industrielle de scikit, les acteurs ont discuté de questions plus larges comme l’état de l’art du NLP[2] face au machine learning et la formation des data scientists. Sur cette dernière question, KL souligne la nécessité de la data-intuition pour être un bon data scientist alors que BG insiste sur l’apprendre à apprendre là où SC évoque un aspect plus technique comme le data processing.

Des sociétés que représentaient les participants à cette table ronde, toutes ont pu traiter des questions classiques de machines learning (classification, moteur de recommandation, clustering etc…) en utilisant scikit. KL souligne notamment que « le tout est de se lancer ». Aussi, chacun des acteurs estime révolutionner un peu son marché, que ce soit par l’automatisation de process chez data publica, le device to service de Parkeon pour Dataiku ou les natural UIs pour Microsoft.

Quand arrive la question des limites actuelles de l’usage de l’analyse prédictive, des causes comme le fonctionnement des entreprises d’une part (processus de décisions, communication interservices etc), et l’opacité et la difficulté d’interprétation des modèles d’autre part, sont évoquées. CS considère que ce sont les données en elles-mêmes qui n’ont pas encore montré leur plein potentiel en prenant pour exemple la jeunesse de l’open data.

 

Au final tous s’accordent sur les raisons qui font le succès de scikit : facilité d’accès et d’utilisation, ubiquité et qualité de la documentation des bibliothèques python. Pas de débat non plus concernant les inconvénients : manque de structuration de l’écosystème et difficulté d’interaction/intégration avec la JVM et notamment l’environnement spark/scala.

 

Conclusion

Python est incontestablement un des langages de programmation les plus plébiscité pour l’analyse de données et le machine learning dans le monde de l’entreprise. Ceci grâce à sa facilité d’apprentissage et son interactivité mais aussi grâce à l’effort fourni par des développeurs plus spécialisés qui permettent de rendre la data science plus accessible par des outils comme scikit mais aussi très efficaces et optimisé par le biais de cython par exemple.

Néanmoins, beaucoup d’infrastructures reposent sur la JVM en entreprise et malgré quelques efforts, python reste limité sur les gros volumes de données. En réponse à cela, Wendelin tente une solution full-python présentée comme très concurrentielle et Microsoft vient d’intégrer python à Azure.

Aujourd’hui, le passage au paradigme Hadoop semble l’alternative la plus viable pour passer à un niveau supérieur de volumétrie de données. Dans ce domaine l’écosystème Python a encore beaucoup de progrès à faire et l’interactivité n’est pas une qualité suffisante pour s’imposer. Dans le même temps, scala offre des possibilités d’interactivité similaires à Python tout en étant compatible à 100% avec la JVM. Tout ceci fait que scala semble aujourd’hui le meilleur compromis pour répondre au mieux à l’ensemble des enjeux des entreprises souhaitant franchir la seconde étape de la révolution de l’analytics.

Aujourd’hui les deux mondes coexistent (interactivité de Python et capacité d’industrialisation sur la JVM) parfois même au service d’un même produit. Une comparaison avec le développement web laisse à penser que python peut venir apporter des solutions pertinentes dans un domaine où la JVM est bien implanté.

 

[1] Phase d’apprentissage des algorithmes de datamining

[2] Le Natural Langage Processing est la science qui automatise le traitement de données intelligible naturellement par l’Homme (comme la reconnaissance de caractères ou l’interprétation d’un discours)

Laisser un commentaire