Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

Classification et prédiction par boosting adaptatif

[new:30/04/2014]Apprendre des données que l’on possède est essentiel depuis toujours et pas seulement depuis la mode du Big Data. Générer automatiquement des heuristiques capable de fournir des prédictions justes permet de valoriser les données acquises. Mais comment le faire ?

Valoriser les données

imageClassifier les données permet d’apprendre de celles-ci. D’un grand fichier patients un hôpital ou un ensemble d’hôpitaux pourront apprendre à “deviner” les signes précoces de telle ou telle maladie par exemple.

Dans les années 80, lorsque j’étais spécialisé en informatique dite “médicale” (aujourd’hui on parlerait d’informatique de Santé) j’ai participé à l’écriture de nombreux logiciels basés sur la prédiction de maladies en fonction de l’analyse de nombreux dossiers patients archivés. Par exemple être capable de poser rapidement un diagnostic sur des patients admis aux urgences pour des douleurs abdominales pour améliorer leur prise en charge en faisant rapidement le tri entre les patients qui pouvaient “attendre” et les cas rares mais graves réclamant des soins rapides. Dans d’autres cas il s’agissait de partir non plus de données réelles archivées (dans le cadre d’analyses prospectives ou rétrospectives) mais “d’extraire” le savoir d’un ou plusieurs experts dans un domaine pointu. C’était le cas par exemple en hématologie où la reconnaissance de formes de certaines cellules du sang permettait d’améliorer le diagnostic précoce de certaines formes de cancer.

La valorisation des données s’écarte de ce dernier cas qui ressemble plus à la création d’un système expert qu’à une analyse de données, même si le savoir de plusieurs experts peut être vu comme une masse de données à trier et catégoriser. Mais cela était le travail du logicien, de l’analyste et non d’un programme informatique.

L’exemple du système d’aide à la décision sur les douleurs abdominales est plus proche de la valorisation des données tel que je l’entends ici puisque pour créer les règles, la sélection et l’ordre des “questions” à poser (à se poser pour l’urgentiste) le logiciel se basait sur des études prospectives regroupant plusieurs hôpitaux appartenant à un même réseau de recherche en chirurgie.

On pourrait dire pour paraphraser une publicité récente “mais çà, c’était avant”.

Non pas que la médecine ait moins besoin aujourd’hui qu’il y a trente ans de systèmes experts ou de capitaliser le savoir de quelques rares experts, mais dans le sens où à cette époque seuls de tels domaines donnaient lieu à la conception d’outils d’aide à la décision.

Depuis, les “systèmes experts”, les “moteurs d’inférence” et toutes ces stratégies informatiques bien particulières ont connu un destin très paradoxal: d’un côté les espoirs placés dans ces systèmes se sont grandement émoussés et d’autre part les véritables besoins ont explosé… D’un côté les données sont devenues de plus en plus nombreuses, de l’autre on a beaucoup plus investi dans la recherche pour en stocker toujours plus que pour savoir quoi en faire…

Le défi des années 2000 c’était le Data Mining. Farfouiller dans les données pour en sortir quelque chose, être capable principalement de retrouver une information qu’elle soit unique ou sous la forme de listes. C’est vers la fin des années 90 que j’ai créé un produit qui sera connu plus tard sous le nom de “MK Query Builder”, un composant pour l’environnement Delphi qui offrait à l’utilisateur du logiciel qui l’intégrait des fonctions complexes d’interrogation des données sans avoir à connaitre SQL.

Etre capable d’interroger les données était une étape essentielle sur le chemin de la valorisation de celles-ci. Tout comme les systèmes d’aide à la décision ont permis de montrer quelles méthodes permettaient de tirer le maximum d’information de données brutes. Moteurs d’inférence, heuristiques diverses et variées, réseaux de neurones, les techniques se sont multipliées en silence et se sont affinées au cours du temps.

Le temps est venu pour les entreprises de valoriser leurs données, leurs giga ou tera octets stockés pour en sortir quelque chose :  des tendances d’achat des clients, des indications sur l’efficacité de campagnes publicitaires, jusqu’à découvrir de nouvelles informations sans qu’on est besoin de poser une question précise (ce que permettait le data mining),

La valorisation des données est ainsi une croisée des chemins entre ces travaux parfois anciens en informatique et le fait que monsieur Tout-le-monde (ou une entreprise) peut être générateur d’une quantité énorme de données dont il y a forcément quelque chose à apprendre. Une sorte de champ libre dans lequel il s’agit de percer au bon endroit pour faire jaillir un pétrole immatériel : de la connaissance.

Comment valoriser les données

Il existe de nombreuses techniques même si aujourd’hui encore elles sont plus destinées aux chercheurs et aux doctorants en informatique qu’aux développeurs de base il faut bien le dire…

La classification des données est une stratégie possible d’apprentissage automatique qui utilise un stock de données existant pour produire un modèle prédictif qui sera appliqué ensuite à des données nouvelles pour en tirer enseignement (comportement d’achat d’un internaute pour faire apparaitre une publicité ciblée par exemple).

Si je prends en exemple les publicités ciblées c’est que pour l’instant c’est surtout ce domaine qui a attiré à lui la recherche et les théoriciens compétents car il y a une conséquence facilement palpable et quantifiable à courts termes : l’argent…

Soyons convaincu que le profit sera aussi le moteur de l’adoption de la valorisation des données par les entreprises. Notre monde tourne ainsi, pour l’instant au moins, dans une recherche permanente de croissance infinie dans un monde aux limites finies. Une course folle vers le mur… L’informatique en manipulant des objets virtuels vivant dans des espaces sans bornes peut être un moyen de concilier cette expansionnisme sans trop nuire au devenir de la planète – quoi que la consommation des data center et le recyclage très imparfait des ordinateurs et de leurs périphériques commencent à poser des problèmes écologiques…  Seul le cerveau humain est aujourd’hui capable de fournir de l’intelligence de façon écologique tout en étant biodégradable sans dommage pour la planète !

Bref, le problème c’est de valoriser les données. D’en tirer des leçons, du savoir, des prédictions. Les modèles qui sont créés à partir de l’analyse de données nombreuses peuvent produire des équations complexes qui serviront un tel but. Il existe des méthodes plus simples, comme la classification bayésienne (utilisée d’ailleurs dans le système expert sur les douleurs abdominales évoqués plus haut), ou plus “SF” comme les réseaux de neurones et bien d’autres techniques dont la complexité les écarte de ce billet.

Mais il existe aussi une stratégie mêlant une certaine simplicité à une efficacité étonnante. Il s’agit de la méthode de classification et prédiction par boosting adaptatif.

Le boosting adaptatif

Dans la classification par boosting adaptatif on ne cherche pas à produire une unique équation complexe ni même à générer une poignée de règles très pointues. Au contraire, les données sont utilisées pour produire une grande quantité de règles rudimentaires. Un mécanisme de pondération permet ensuite d’affiner ce traitement avant de pouvoir utiliser les règles produites pour aider à prendre des décisions sur des données nouvelles.

Le système ainsi “réglé” peut alors produire une prédiction pour une donnée nouvelle en combinant toutes les règles simples et en appliquant une pondération. Le résultat est dit consensuel puisque de nombreuses “voix” (les règles simples) sont “écoutées” et pondérées pour produire un “avis”. La qualification de “boosting” provient de ce que chaque règle simple est “boostée” par le procédé au point de devenir utile dans le processus global de décision.

Le boosting adaptatif n’est pas directement utilisable en tant que tel, c’est plutôt une métaheuristique, un outil générique, permettant de créer des algorithmes spécifiques (des heuristiques particulières). 

Dans la pratique ?

C’est un sujet bien aride… Il faut du code pour le concrétiser et même d’autres explications plus poussées pour en comprendre les mécanismes.

Je ne vais pas me lancer ici dans ces étapes car le Dr James McCaffrey l’a déjà fait dans les colonnes de MSDN Magazine et que cet article dispose d’une traduction en français tout à fait convenable (certainement révisée par un humain au lieu des traductions automatiques habituelles assez peu fiables).

En suivant cet article vous en apprendrez plus sur le boosting adaptatif, et sur la façon (assez simple) de le mettre en œuvre en C#.

Pour une lecture de ce papier suivez ce lien : Classification par boosting adaptatif

Conclusion

Ecrire de beaux logiciels offrant une UX de luxe c’est bien. Faire en sorte que le code soit fiable, maintenable, respectueux de la plateforme c’est encore mieux. Que ce même code soit portable et cross-plateforme est aujourd’hui indispensable.

Mais quid de ce que produit le logiciel ? de son “intelligence” ? de sa capacité à aider les humains que nous sommes en exploitant des quantités énormes de données que seul un ordinateur peut manipuler ?

Intégrer à ses logiciels de quoi permettre d’exploiter les données engrangées, et au-delà de la simple création de listings (!) apparait tout à fait indispensable aujourd’hui. Produire du savoir, extraire du prédictif, c’est créer de la valeur, c’est là qu’un bon logiciel peut être “monétisé” car il fait à son tour gagner de l’argent à celui qui le possède !

La classification et la prédiction par boosting adaptatif est une méthode à connaitre, une technique à “oser” dans une application pour la rendre vraiment unique.

Produire du savoir, prévoir des comportements, le tout en se basant sur une mine d’or souvent inexploitée – les données de l’entreprise – est autrement plus excitant que de se demander si Windows 8 est mieux avec ses tuiles ou sans… Peu importe l’OS-flacon, c’est l’ivresse des données qui compte !

Stay tuned !

blog comments powered by Disqus