XD blog

blog page

~technical


2018-07-10 DataFrame for C‡

Microsoft has recently released an open source machine learning library called ML.net. As opposed to scikit-learn, there is no dataframe in C# and the data are described as an array of instances specific to the data the learning pipeline has to handle : Get started with ML.NET in 10 minutes. I was wondering if there could be a way to skip that part even if it means to be a little bit slower. I finally ended up by implementing something similar to what a dataframe in Python with pandas which I called Scikit.ML.DataFrame. I modified the inital example:


more...

2018-07-06 echarts, pyecharts

C'est une librairie de visualisation qu'on m'a fait découvrir et qui mérite le détour : pyecharts + echarts.

2018-06-29 Le meilleur data scientist de France

C'est par un concours de circonstances pas si incroyable que ça d'ailleurs que le concours du meilleur datascientist de France s'est déroulé à station F avec les mêmes données que celles utilisées lors du hackathon de l'ENSAE Hackathon Ernst & Young / ENSAE / Genius / Latitudes / Label Emmaüs / 2017. La gagnant a partagé sa solution How I won Le Meilleur Data Scientist de France 2018, le dixième également Meilleur Data Scientist de France 2018. La vidéo de l'événement dans laquelle j'apparais très rapidement...

La présentation des solutions aura lieu le 4 juillet au meetup de FrenchData FrenchData Meetup #5 : les coulisses de 2 startups data et les solutions du MDSF.

2018-06-26 Data for Good #4

J'ai assisté à la quatrième session de Présentation des projets Data for Good (ou sur la page facebook) A noter, Cédric Villani faisait partie du jury. Il a partagé un peu de son expérience de la vie parlementaire, de la nécessité de convaincre qu'une idée est une bonne idée et que cette partie est au moins aussi importante que l'idée elle-même. C'était de mon point de vue une des sessions les plus réussies et pour la première fois les présentations ont été filmées et sont visibles sur le compte facebook.

Le premier projet hippocrate.tech a regroupé data scientist, philosophe et juriste pour traduire l'éthique sous la forme d'un code de bonne conduite pour les datascientist. Il n'est pas inutile d'y faire un détour.

J'ai découvert la base de données MIMIC qui contient les résultats de tests médicaux de 40.000 patients de services de réanimations. L'objectif d'un des projets était de construire un indicateur du caractère critique de l'état d'un patient. Après les présentations, la conversion m'a amené à Owkin, une startup qui construit des outils d'aide au diagnostique à partir d'intelligence artificielle. Elle a récemment effectué une levée de fond auprès de Otium : OWKIN, la pépite française spécialisée dans le machine learning lève 11 millions de dollars

Un dernier vers openfisca qui donne accès à de nombreuses données économiques et qui permet de faire des simulations pour mesurer l'impact d'une loi.

2018-05-30 The practice of reproducible research

Common rules, common formats, documentation, small steps, unit tests, it seems obvious to many and not that obvious for every who tried to put that in practice. Some inspiration: The Practice of Reproducible Research (or the PDF). To my opinion, reproducible research is not a goal, it is a need.

2018-05-29 Aveu de médiocrité

Toujours pas de date de sortie du glyphosate : Rejet à l’Assemblée de l’inscription dans la loi de la date de sortie du glyphosate. D'après l'article, la solution doit d'abord exister avant de pouvoir inscrire cette date. J'interprète ce renoncement comme un aveu : l'assemblée pense que c'est impossible, que nous n'en sommes pas capables. Les oiseaux meurent, les abeilles disparaissent, les insectes sont au musée. C'est quand même un terrible aveu de médiocrité que de penser que nous n'en sommes pas capables.


more...

2018-05-26 Democracy - La ruée vers les datas

Je vous recommande le visionnage du documentaire Democracy - La ruée vers les datas sur Arte qui relate l'histoire de la création de la loi sur le Règlement général sur la protection des données, un peu comme Villani l'avait fait avec sa médialle Fields dans Théorème vivant. Il relate le temps de la réflexion qui a précédé le vote de la loi en 2016 pour une entrée en vigueur le 25 mai 2018. Le documentaire insiste peu sur les amendements proposés par les lobbyistes ni la pression qu'ils ont exercée - un seul a apparemment accepté d'être filmé -, elle n'est qu'esquissée, au contraire, il insiste sur l'immense travail de réflexion et de discussion fournis par les auteurs du texte qui a été adopté. Il faut remercier son auteur opiniâtre Jan Philipp Albrecht, forçat du RGPD.

Un des interlocuteur donne un exemple de ce qu'on peut trouver comme enseignements dans les données. Je suppose qu'il a trouvé un accueil favorable dans l'oreille du réalisateur puisqu'il a conservé. Je la transcris également car elle traduit à mon sens ce que l'école oublie parfois d'être, un endroit où on doit rêver : Students who took creative litterature course in 9th grade have a better chance to pass algebra in the 10th grade. Ce n'est pas moi qui le dit, ce sont les données. (9th = troisième).

Je termine par une métaphore initiée par Albrecht lui-même. Si les données étaient du pétrole, la loi RGPD serait une loi de protection de l'environnement. On attend la suivante.

La loi s'applique à toute donnée transitant par l'Europe. Ceci explique pourquoi Facebook déplace les données des utilisateurs non Européens Données personnelles : Facebook met 1,5 milliard d‘utilisateurs hors de portée du droit européen.

La loi RGPD est sortie mais pas la loi sur les voitures ou les pesticides. Il faut croire que les lobby des GAFA ne sont pas aussi méchants que ça en tout cas moins persistants. On a plus de contrôle sur ce qui est fait de nos données et pas encore ce qui arrive dans notre assiette La fabrique du silence : retour à Glomel.

2018-05-23 Un livre à lire sur le Big Data

Big Data, penser l'homme et le monde autrement, de Gilles Babinet de Gilles Babinet. Les données sont peut-être dangereuses mais on peut faire un grand nombre de choses utiles avec. Le livre cite de nombeux exemples, évoque aussi le passage d'une société au numérique. Quelques extraits...


more...

2018-05-03 Régression logistique et diagramme de Voronoï

Je retombe régulièrement sur le jeu de données Iris très souvent utilisé pour illustrer car il marche bien. J'aime bien aussi cette image :

Elle me fait penser à un diagramme de Voronoï, le graphe qui dessine les zones d'influences de points dans un plan et plus généralement dans un espace vectoriel. Je me suis alors demandé s'il n'y avait pas d'équivalence entre les deux... La réponse est non dans le cas général mais cela n'empêche pas une petite promenade pour comprendre deux ou trois petites choses sur les problèmes que peut modéliser une régression logistique : Régression logistique, diagramme de Voronoï, k-Means. Vous y verrez une image comme celle-ci :

2018-03-31 Mettre un modèle de machine learning en production

J'écrivais un article il y a peu sur le sujet ONNX : apprendre et prédire sur différentes machines où j'évoquais deux pistes pour mettre en production un modèle de machine learning, essentiellement via une application web. Il n'y a pas d'ordre de préférence, certaines sont plus abouties que d'autres. La première tensorflow-serving propose tout clé en main mais elle repose sur l'utilisation de tensorflow. La seconde ONNX, onnxmltools, winmltools convertit un modèle dans un format commun. Il est ensuite exploité là où une librairie de prédiction (un runtime) existe (liste des runtime disponibles). Ce format commun n'est pas encore exploitable en C++ ou javascript mais ces options envisageable également. Tensorflow encore propose une façon d'exploiter les modèles en javascript directement avec tensorflow.js (voir https://js.tensorflow.org/tutorials/import-keras.html). ONNX réfléchit à une extension pour le langage C/C++ ONNX in C/C++ qu'il est possible de faire pour le moment pour un modèle de deep learning en convertissant un modèle appris pour la librairie caffe2 avec ONNX : ONNX: deploying a trained model in a C++ project. C'est une direction choisie par le module sklearn-porter qui propose des codes en Java, C++, Go, PhP, Ruby, Javascript pour certains des modèles implémenté par scikit-learn. Cela couvre nettement plus de modèles que ce que j'avais commencé à faire avec mlprodict. Il existe d'autres options comme Seldon, à moitié open source, à moitié tourné vers une proposition de services.

2018-03-19 ONNX : apprendre et prédire sur différentes machines

J'écrivais sur onnx il y a peu de temps. onnx, onnxmltools sont deux librairies qui permettent de convertir des modèles de deep learning mais aussi des modèles entraînés avec scikit-learn en un format unique. Lorsque cela est possible, cela permet d'utiliser avec une librairie un modèle appris avec une autre. C'est pratique si vous trouvez un modèle de deep learning appris avec Caffe et que vous souhaitez l'associé avec un autre appris avec pytorch. La suite n'a pas tardé, il est maintenant possible d'utilser ce format unique sur une machine qui dispose de l'algorithme de prédiction associé. Concrètement, on peut maintenant apprendre un modèle avec scikit-learn et l'utiliser depuis un programme écrit en C# sans faire appel à Python : How Three Lines of Code and Windows Machine Learning Empower .NET Developers to Run AI Locally on Windows 10 Devices. Quelques informations techniques supplémentaires : Windows Machine Learning overview.

On ne se pose plus la question de savoir s'il faut utiliser du deep learning mais plutôt comment le mettre en production. TensorFlow-Serving est une solution assez aboutie qui implémente certains besoins : prédiction temps réel, adaptation à un trafic élevé, capables de conserver de vieilles versions de modèles, de le comparer, de faire de l'A/B testing. Certains ont partagé leur expérience How Zendesk Serves TensorFlow Models in Production/ L'inconvénient est d'être plus ou moins lié à TensorFlow et personnellement je préfère PyTorch. La librairie est plus intuitive et séduit beaucoup les chercheurs : PyTorch or TensorFlow?. Elle est aussi rapide que TensorFlow voire un peu plus : Deep Learning Framework Examples. Il reste le problème de la mise en production. C'est là que le projet ONNX intervient en proposant de séparer l'apprentissage et l'exploitation en production. D'un côté l'apprentissage avec une librairie, une de celle supportée par ONNX, de l'autre une autre librairie ou runtime spécifique au la machine qui fera tourner les prédictions. Le reste du site web est composée de briques classiques. C'est une approche plus modulaire est moins dépendante d'un composant en particulier.

2018-03-13 Visualiser un arbre de décision

Je me suis amusé à essayer des libraires javascript pour représenter un arbre de décision. Amuser n'est pas vraiment le bon mot. C'est le genre de trucs que je n'aime pas faire plusieurs fois. Je l'ai emballé dans une fonction : Visualiser un arbre de décision. Le seul truc est que cela ne marche pas dans jupyterlab car l'exécution de javascript customisé est désactivée à moins d'en faire une extension ert mon courage s'est arrêté là.

2018-03-12 OpenFoodFacts et Google Summer of Code

La belle aventure de OpenFoodFacts continue. Elle fait partie des élus de Google Summer of Code. C'est un beau projet qui a permis de construire une base de données sur de nombreux produits alimentaires dans le monde entier. Si vous souhaitez connaître la qualité de ce que vous achetez, les produits équivalents mais sans additifs, c'est là qu'il faut aller. Les données sont accessibles et chacun peut imaginer une application. Et OpenFoodFacts cherche à automatiser la collecte et l'enrichissement de cette base. Vous trouverez de nombreux défis à résoudre : Student projects/GSOC/Proposals et certains requièrent l'utilisation du deep learning. Parfait pour un stage.

2018-03-03 onnx

onnx est un outil qui permet de convertir des modèles de deep learning venant de plusieurs librairies différentes dans un format commun. Cela d'une certaine façon de passer d'une librairie à l'autre mais aussi de pouvoir exécuter des prédictions sur un système différent de celui ayant servi à l'apprentissage. Ordinateur, tablettes, téléphones, objets connectés... C'est l'idée. Apprendre sur un ordinateur dédié à cette usage et optimisé pour cela et prédire sur une machine de moindre puissance mais plus adaptée. onnxmltools étend la liste des librairies à celle du machine learning classique, comme bien évidemment scikit-learn. Et il se trouve que j'y ai contribué.

Cela m'a permis de redécouvrir le site de chainer qui a récemment évolué et casser quelques-uns de mes tests vérifiant mes supports de cours. Le design est similaire à celui de pytorch mais la partie GPU a été placée dans un module séparé cupy qui s'apparente à un numpy pour GPU. Je garde malgré tout une préférence pour le premier même si l'installation sous Windows est encore assez confuse et repose soit sur votre propre compilation soit sur celle disponible ici : anaconda/peterjc123. cupy est disponible quant à lui sur le site Unofficial Windows Binaries for Python Extension Packages.

03/07 : les modèles convertis par ONNX deviendra très bientôt facilement utilisables sur Windows 10 : ONNX Models to be Runnable Natively on 100s of Millions of Windows Devices.

2018-02-17 Machine learning sans diagonale

La plupart de mes cours se font sous la forme de notebooks, plus ou moins indépendant, des exercices en pagaille qui manquent de cohérence et de continuité. Pour l'instant, ça s'appelle Petit voyage au pays du machine learning, ça n'est pas parfait mais ça a un début et une fin.


-->

Xavier Dupré