Les petites cases

Du problème de la qualité des données et de la manière de le résoudre...

Comme le rappelait très justement Dominique Cardon dans son interview du vendredi 6 janvier sur France Inter :

« [...]il faut faire attention, les algorithmes, c’est idiot, c’est une procédure statistique un peu bête qui utilise des données pour faire un grand calcul massif[...] »

Comme l'a expliqué Dominique Cardon malgré les coupures incessantes d'Ali Baddou (et comme je l'avais fait beaucoup plus modestement), l'algorithme n'est pas une entité en soi : ce n'est qu'un code source mis au point par un humain qui détermine la « procédure statistique » exécuté sur et grâce à des données. Ces dernières sont donc d'une importance fondamentale.

Il y a presque 10 ans, Christian Fauré faisait état sur son blog d’une certaine déception des organisations devant les résultats des outils de reporting et de Business Intelligence au regard de l’investissement effectué pour les déployer. Il revenait alors sur un point essentiel : ce genre d’outils ne donne leur plein potentiel que si les données sont propres, le fameux adage en traitement des données : « shit in, shit out ».

Dix ans plus tard, on sent souvent poindre la même déception concernant le Big data car rien a changé pour le traitement des données : les algorithmes ont plus que jamais besoin de données « propres » pour fonctionner. Par exemple, la pertinence des systèmes de catégorisation automatique dépend presque intégralement de la qualité du corpus utilisé pour effectuer l’entraînement du système.

Ainsi, on voit apparaître régulièrement des statistiques montrant que les « data scientists » passent presque 80% de leur temps à sélectionner, nettoyer et préparer les données (cf. ces articles du New York Times de 2014 et de Forbes en 2016). Vous y réfléchissez à deux fois avant de faire cet investissement quand vous savez le prix de ce genre de compétence. Or, ce travail n’est pas plus « sexy » aujourd’hui qu’il y a dix ans pour reprendre les termes employés par Christian. En revanche, étant donné la valeur (réelle ou supposée…) créée par ces algorithmes, des solutions commencement à émerger et la préparation des données (on parle aussi de data wrangling en anglais) est peu à peu devenue un enjeu jusqu’à devenir une des tendances annoncée du « Big Data » pour 2017.

Le constat qui prévaut en la matière est le suivant : les développeurs en général et les « data scientists » en particulier n’aiment pas s’occuper de cette tâche. J’irais plus loin : ils ne savent pas le faire et après tout, c’est logique, ce n’est pas leur travail. Peu à peu, on a donc tendance à s’orienter vers les utilisateurs eux-mêmes, car ce sont eux qui connaissent le mieux les données. Mais cette population ne sait pas coder et a besoin d’outil pour effectuer ce travail d’où l’émergence de logiciels spécialisés de « self service data preparation ».

La logique qui tend à laisser ce travail aux utilisateurs eux-mêmes va, à mon avis, rapidement trouver ces limites aussi bien en termes de temps que de compétences. Comme ces dernières sont celles des professionnels de l’information, ceux-ci auraient intérêt à s’intéresser à ce domaine. L’existence d’outils spécialisés rassurera ceux que le code source peut rebuter. Les professionnels de l’information ont là une chance (peut-être unique) de trouver une place dans l’écosystème de la donnée (pour ne pas dire du Big Data…) et de peu à peu s’affirmer comme des intermédiaires indispensables entre les développeurs/data scientists et le « métier ».

Pour les besoins de l’Ina et de mon cours sur les données en master 2 « Technologies numériques appliquées à l’histoire » à l’Ecole des chartes, j’ai été amené à m’intéresser aux différentes solutions en la matière. J’ai comparé quatre outils :

Cinq axes m’ont servi de base à cette comparaison :

  • l’interface et la prise en main de la solution ;
  • les fonctionnalités d’exploration du corpus de métadonnées ;
  • les fonctionnalités de manipulation de données ;
  • l’évolutivité (modules complémentaires, usage de langage de programmation) ;
  • l’intégration avec le système d’information et la reproductibilité.

Avant d'entrer dans le vif du sujet, il est à noter qu’Open Refine est open source et les trois autres proposent des versions gratuites déjà très complètes. Ils sont tous très facilement installables sous Windows, Mac et Linux.

Trifacta Wrangler

J’ai rapidement écarté Trifacta Wrangler. Je me suis arrêté au premier critère : je n’ai jamais réussi à entrer dans l’interface proposée et à en comprendre la logique. C’est d’autant plus surprenant qu’il s’agit a priori de la solution la plus mature en la matière, c’est son unique objectif et cela fait déjà plusieurs années qu’elle existe. Bref, je ne peux en dire plus…

Open Refine

Open Refine a une histoire mouvementée. Il a été mis au point au sein de la société Metaweb par David Huynh et Stefano Mazzocchi qui sont aussi à l’origine au sein du projet SIMILE du MIT des widgets Exhibit, Timeline et Timeplot (bref des supers références !!). Appelé « Gridworks », il visait alors à préparer et à faciliter le chargement de données structurées dans Freebase. Au rachat de MetaWeb par Google, le logiciel est devenu Google refine. A l’arrêt du support du projet par Google en 2012, ce dernier l’a libéré et une communauté le maintient sous le nom « Open Refine ».

Pionnier en la matière, son interface facile à prendre en main en a rapidement fait un logiciel très utilisé dans les domaines du patrimoine et des digital humanities. Son plus grand atout réside à mon avis dans son système de facettes qui permet d’explorer et de naviguer très facilement et efficacement dans le corpus de métadonnées. Il offre presque toutes les fonctionnalités qu’on est en droit d’attendre d’un tel logiciel au niveau de la manipulation des données. A noter les fonctionnalités de réconciliation qui permet d’enrichir très simplement un corpus de métadonnées. Il est possible d’écrire des modules complémentaires et d’utiliser du Jython si les fonctions de base ne suffisent pas à votre bonheur. Bref, il est resté pendant très longtemps un de mes outils privilégiés (et le reste pour certains comme le montre le tableau des ressources/outils en humanités numériques mis au point par Antoine Courtin). Mais (oui, il y en a…), quatre points le rendent peu à peu obsolètes face à ses concurrents :

  • Au-delà de 500 000 lignes, ils commencent à faire apparaître des signes d’essoufflement et au-delà de 1 million, il se prend sérieusement les pieds dans le tapis comme en a fait l’amère expérience Frédéric Clavert… Qu’est-ce-qu’un million de lignes à l’heure du Big Data… ?
  • En termes d’intégration avec le SI, il souffre à la fois de son origine porté vers le Web et de son ancienneté : ainsi, par défaut, il est uniquement possible de récupérer des données via le chargement d’un fichier CSV, XLS, XML ou RDF, c’est bien peu si on veut faire de cet outil une des briques du traitement de la donnée au sein du SI.
  • Même s'il s'agit d'une application Web, il n'a pas du tout été pensé pour le travail collaboratif, je dirais même que le travail à plusieurs en simultanée est fortement déconseillé, sans parler des problématiques d'identification et d'autorisation puisqu'il n'existe aucun système de gestion des utilisateurs.
  • Il faut bien avouer que la communauté n’est pas des plus actives, la dernière version stable date de 2011 (soit la dernière version stable mise au point sous la responsabilité de Google) et la dernière version proposée au téléchargement une release candidate date d’octobre 2015. On est forcément en droit de se poser des questions sur le maintien et l’évolution de l’outil, même si cela n’a pas empêché la société Ontotext d’en intégrer un fork dans la dernière version de son produit GraphDB.

Talend Data preparation

Lancé l’an dernier, Talend Data preparation a vocation à compléter l’offre de l’éditeur Talend dans le domaine de l’intégration de données. L’idée de l’éditeur est de parier sur l’interaction entre la DSI et le « métier » et la complémentarité des outils en matière de traitement des données. Ainsi, Talend Data preparation permet au « métier » de mettre au point une « recette », c'est-à-dire un ensemble de traitements pour nettoyer et préparer les données via une interface ad hoc. Cette recette peut être directement appliquée sur le jeu de données ou récupérée par la DSI pour l’intégrer au sein d’une chaîne de traitement mis au point au sein du logiciel Talend Open Studio pour assurer le passage à l’échelle et/ou automatiser la procédure. Fini les spécifications et les phases de test fastidieuses !

Cette complémentarité est une des grandes forces de cette solution, d’autant qu’elle ne s’arrête pas là. En effet, s’il est possible d’importer les jeux de données à la manière d’Open Refine, il est aussi possible d’en faire la sortie d’une chaîne de traitement (Job) Talend. Ainsi, ce logiciel peut s’intégrer parfaitement au système d’information aussi bien en amont qu’en aval. Autres point positif et essentiel pour l’intégration dans le SI : la version « payante » permet le travail collaboratif et l’identification des utilisateurs via les systèmes d’identification traditionnels (LDAP, Kerberos…). La montée en charge est assurée à deux niveaux. A la différence d’Open Refine, la mise au point de la « recette » et son exécution sur le jeu de données sont séparés, ainsi, on travaille sur un échantillon de données puis on exécute la recette sur l’ensemble du jeu de données. Par ailleurs, il est possible d’installer la solution dans un environnement clusterisé avec une distribution Hadoop.

En revanche, de par sa relative nouveauté, la solution manque encore de maturité sur différents points :

  • la partie « exploration » du corpus me semble un peu légère comparée au système de facettes d’Open Refine ou même au mode exploration de Dataiku, mais c’est là le prix à payer de l’échantillonnage ;
  • au niveau du traitement des données, on regrettera le choix de privilégier le « pousse bouton » et la simplicité et du coup l’absence de moyens d’écrire soi-même des traitements un peu plus complexes via du « pseudo code » comme cela est possible dans Open Refine et dans Dataiku ainsi que les errements de la fonctionnalité de clustering essentielle pour détecter les valeurs approchantes au sein d’une colonne.

Mais, je ne doute pas que ces quelques défauts de jeunesse seront rapidement corrigés et feront de Talend Data preparation une solution indispensable à la suite d’outils de Talend.

Dataiku DSS

DSS (pour Data Science Studio) mis au point par une société française Dataiku est bien plus qu’un logiciel de préparation de données, puisque ces fonctionnalités ne constituent qu’une partie du logiciel. En effet, DSS vise à l’origine à simplifier le déploiement des solutions de machine learning et plus généralement de la manipulation statistique des données au sein des organisations.

Ainsi, il propose tout un panel de fonctionnalités allant d’une offre très complète de connecteurs (des bases de données relationnelles au HDFS, en passant par le traditionnel chargement de fichiers CSV, XLS, XML ou JSON et les solutions NoSQL comme MongoDB, ElasticSearch voire l’API Twitter) à l’intégration des principaux algorithmes de machine learning supervisé (régression logistique, SVM, forêt d'arbres décisionnels, arbre de décisions…) et non supervisé (Kmeans, DBScan… ) et à l’exposition sous forme d’API REST des modèles calculés en passant par la visualisation de données et le workflow de données. Une superbe interface assez simple à prendre en main (passer les dix premières minutes où on tâtonne un peu) permet d’accéder et de piloter l’ensemble des fonctionnalités mais il est toujours possible de passer en mode « code » en python, R, SQL, Scala… Bref, c’est une solution très complète et même si la version gratuite ne donne pas accès à l’ensemble des fonctionnalités, elle offre déjà un panel d’outils amplement suffisant pour mener à bien des travaux très complets sur les données.

Au niveau de la préparation des données, mis à part la partie « exploration » peut-être un peu plus faible (je continue de regretter les facettes d’Open Refine…), il répond à toutes les exigences : facile à prendre en main sans pour autant verser dans le simplisme, très complet dans les différents traitements proposés, scalable grâce à un système d’échantillonnage séparant la mise au point des traitements et leur exécution, évolutif par l’intégration de modules complémentaires ou le basculement vers des notebooks Python ou R.

On en deviendrait presque exigeant…. Ainsi, on regrettera (parce qu’il faut trouver des défauts) le fait qu’il ne permet pas d’exposer via une API REST les données elles-mêmes nettoyées (même s’il est possible dans la version gratuite de les synchroniser avec une base MySQL ou postgreSQL et dans la version payante de les synchroniser avec MongoDB, ElasticSearch, Oracle SQL…) et l’absence de fonctionnalités de réconciliation générique avec des APIs externes (il faut en passer par l’écriture d’un module complémentaire ou importer le corpus). Dernier point : à la différence de Talend Data preparation, je pense qu’il n’est pas accessible au « métier », en revanche, avec une bonne montée en compétence, il pourrait faire le bonheur des professionnels de l’information ce que ne viendra pas démentir Frédéric Clavert si j'en crois ces tweets enthousiastes ;-)

Bref, c’est la vraie et belle surprise de cette comparaison et celui que j’ai choisi pour mes cours de Master 2, d’autant que, cerise sur le gâteau, Dataiku propose un programme pour en faciliter l’utilisation dans la recherche et l’enseignement…

Voilà, il ne vous reste plus qu'à télécharger un jeu de données sur data.gouv.fr et à vous lancer dans cette étape essentielle (et que je trouve passionnante à titre personnel) que sont l'analyse et la préparation des données.

Management de l'information Geekeries