L’apprentissage automatique, ou comment les ordinateurs apprennent à partir des données


Rédigé par Simon Keith, Actinvision le 26 Janvier 2016

Ce billet s’inscrit dans une série d’articles de vulgarisation sur la data science. Les liens vers les autres histoires seront ajoutés ici au fur et à mesure de leur publication.



Data Science et apprentissage automatique

Simon Keith, Actinvision
La Data Science est un vaste champ d’étude interdisciplinaire dont le but fondamental est d’extraire de la connaissance à partir des données. On y emploie principalement des techniques et des théories issues des mathématiques appliquées et de l’informatique. La Data Science étend ces techniques au contexte de l’entreprise par la création de systèmes capables de valoriser cette connaissance des données ; par exemple en construisant des outils d’aide à la décision, ou encore en créant de nouveaux modèles d’affaire.

L’apprentissage automatique, ou machine learning en anglais, est le moteur de la Data Science. En fait c’est avant tout un champ d’étude de l’intelligence artificielle. La discipline est d’ailleurs relativement ancienne puisqu’elle voit ses origines dans les années 1950. Si le terme est aujourd'hui un Buzz Word, c’est parce que les récents progrès technologiques liés au Big Data accélèrent le développement d’outils permettant l’industrialisation de la Data Science.

Nous discuterons de l’histoire de l’apprentissage automatique dans un prochain billet de blog, mais notons déjà que de nombreux spécialistes attribuent en grande partie la paternité de la discipline à Arthur Samuel. En 1956, cet ingénieur en informatique travaillant chez IBM se lança comme défi d’apprendre au IBM 701, premier ordinateur commercial de la société, à le battre au jeu de dames.

Bien que les règles du jeu soient relativement simples, il n’existe pas moins de 500 milliards de milliards de positions possibles (5 x 10 puissance 20). Impossible donc de programmer explicitement l’ordinateur en lui disant quoi faire dans chaque situation. L’idée de génie de Samuel fut de faire jouer l’ordinateur contre lui-même un très grand nombre de fois, et d’utiliser le résultat de ces parties (victoire ou défaite) pour évaluer la probabilité de gagner en jouant un coup donné.

En 1962, le programme battait le champion du Connecticut. C’était une nouvelle d’une importance majeure : pour la première fois, un ordinateur, une simple machine électronique, était capable de challenger la supériorité intellectuelle de l’être humain. Évidemment, pour le public non averti de l’époque, on n'était pas loin de la paranoïa.

Un changement de paradigme

Nous reviendrons sur l’impact de l’apprentissage automatique sur notre société. Mais avant tout, essayons de comprendre de quoi il s’agit. Arthur Samuel propose la définition suivante : “champ d'étude qui donne aux ordinateurs la capacité d'apprendre sans être explicitement programmés”. Cette définition est résolument orientée vers le concept d’intelligence artificielle, cadre dans lequel le machine learning s’est développé. Si l’on prend un peu de recul et que l’on se place dans le contexte de ce qu’est la data science aujourd’hui, j’y ajouterais une dimension plus axée sur les données : c’est également un changement de paradigme dans la façon dont nous essayons de modéliser des phénomènes, une alternative à la méthode scientifique.

Pour comprendre cette idée, faisons l’analogie avec Google. Pour développer leur moteur de recherche les ingénieurs de Google ne se sont pas basés sur un modèle qui aurait été construit grâce à une étude empirique du comportement des internautes. En effet, ils n’ont pas essayé de comprendre par l’expérience pourquoi un utilisateur clique sur un lien, mais ont plutôt analysé la structure du web ainsi qu’une grande quantité de données de navigation pour trouver, à partir d’une liste de mots clés, la page web la plus pertinente. On n’essaye pas de comprendre le lien de causalité entre le fait de chercher une information (les mots clés) et de sélectionner une page web, on se contente de mettre en évidence la corrélation entre ces deux éléments. Ainsi lorsque je rencontre cette liste de mots clés, je sais qu’il y a telle probabilité que l’utilisateur préfère cette page web : je vais donc l’afficher en telle position sur la page des résultats. L’utilisateur est satisfait, et peu importe si l’on ne sait pas pourquoi il a préféré telle page à une autre.

En résumé, on s’éloigne d’une méthode scientifique éprouvée (observation d’un comportement, formulation d’hypothèses, tests empiriques et généralisation d’un modèle). Avec l’apprentissage automatique on renonce à expliquer le pourquoi : le résultat n’est plus une équation bien définie dont on connaît toutes les variables, comme celles que l’on retrouve dans les manuels de physique. L’avantage est de se débarrasser de modèles figés pour une approche plus évolutive qui s’adapte aux données. En revanche, on perd la capacité d’expliquer la relation de causalité entre un comportement et les variables qui l’expliquent. En effet, mettre en évidence une corrélation entre plusieurs variables n’implique pas forcément un lien de causalité.

Pour en savoir plus sur ce sujet, je vous oriente vers cet excellent article de Chris Anderson.

Mais concrètement, comment ça marche ?

Il existe de nombreux types de problèmes en machine learning : classification, régression, détection d’anomalies, moteurs de recommandation (cf. Amazon, Netflix), etc. Pour le moment, nous allons nous intéresser à deux catégories : l’apprentissage supervisé et l’apprentissage non supervisé. Pour faire court :
- Apprentissage supervisé → on a des observations qui produisent un résultat connu (une valeur numérique ou un classement dans une catégorie). On veut pouvoir prédire le résultat de futures observations. Dans un cadre business on parle souvent d’analyse prédictive.
- Apprentissage non supervisé → on a des observations et on veut pouvoir les segmenter de manière pertinente en un certain nombre de catégories bien distinctes.

L’apprentissage supervisé

En apprentissage supervisé, on dispose d’un ensemble d’observations : les exemples. Ces observations se présentent sous la forme d’un jeu de données contenant un certain nombre de variables explicatives, et le plus souvent une seule variable expliquée, ou résultat. On veut pouvoir prédire ce résultat pour de futures observations.

La détection du churn a été un cas d’usage récurrent ces dernières années. Dans cet exemple on a une variable expliquée binaire qui va simplement nous dire si un client est toujours chez nous ou s’il est parti chez la concurrence. Parallèlement pour chaque client on va recueillir tout un tas de mesures susceptibles d’expliquer ce churn : ce sont nos variables explicatives. Ces variables vont par exemple provenir du mining de texte sur les réseaux sociaux, de données de consommation, d’enquêtes de satisfaction client, ou encore de l’analyse des données de navigation. A partir d’une base de clients dont on connaît le comportement (on sait s’ils sont restés ou partis à la fin d’une certaine période), on va modéliser la relation entre le churn et nos variables explicatives. Plus précisément, c’est un algorithme qui, en se basant sur un certain nombre de paramètres et sur cette base d’exemple, va construire une fonction capable de prédire le résultat. Voilà pour l’idée générale derrière l’apprentissage supervisé.

Régression vs classification supervisée

Lorsque la variable expliquée est une valeur dans un ensemble continu de réels, on parle alors de régression. Par exemple, on peut vouloir prédire le revenu de clients et de prospects en fonction de données comme leur catégorie socio-professionnelle, leur métier, leur adresse, leur âge, ou encore leur sexe. On pourra recueillir nos observations en faisant une enquête sur un panel de clients. Ensuite, on utilisera une partie de ces observations pour entraîner un modèle capable de calculer ce revenu. Le reste du panel servira à mesurer la précision de l’algorithme en comparant valeur réelle et valeur prédite. Enfin, on pourra estimer le revenu des clients et prospects qui ne sont pas dans le panel.

Autre exemple, la Figure 1 représente deux modèles simples et faciles à visualiser exprimant une consommation électrique par habitant en fonction de la température moyenne. Le modèle est représenté par les courbes, les observations par les points.
Figure 1 : courbes de régression (consommation électrique selon la température)

En opposition aux problèmes de régression, lorsque la variable expliquée est une valeur dans un ensemble fini on parle d’un problème de classification supervisée. Cela revient à assigner un label à chaque observation. C’est le cas de l’exemple du churn où l’on cherche à classer les clients dans deux classes : ceux qui restent et ceux qui s’en vont.

Pour illustrer la classification supervisée nous allons prendre un exemple plus simple mais facile à visualiser. Imaginons que nous souhaitons implémenter un mécanisme de reconnaissance des pièces de monnaie pour une machine à café. Celle-ci est capable de mesurer le poids et le diamètre des pièces. Lorsqu’une pièce est insérée dans la machine on souhaite créditer l’utilisateur du montant correspondant, sans se tromper. On trouve sur Wikipédia la masse et les dimensions des pièces de la monnaie européenne. Si on aspire ces données, que l’on génère un certain nombre de pièces pour chaque valeur, et que l’on y ajoute un peu de bruit pour simuler (grossièrement) l’usure, on obtient le nuage de points ci-dessous (Figure 2). En fait on peut imaginer que l’on récupère un gros sac de pièces, pour ensuite les classer par valeur et les mesurer.
Figure 2 : jeu de données (50 pièces par valeur)

On s’aperçoit tout de suite que, si certains groupes de pièces sont facilement reconnaissables (1 centime, 20 centimes), d’autres peuvent facilement être confondus en cas de présence d’usure et si on se base uniquement sur la masse et le diamètre (par exemple, les pièces de 1 euro et de 50 centimes). Le travail de l’algorithme d’apprentissage sera de séparer ces groupes en faisant le moins d’erreurs possible. La quantité et la qualité de données, les variables utilisées (ici masse et diamètre), ou encore le choix de l’algorithme et le réglage de ses paramètres sont autant de facteurs qui vont jouer dans la précision du modèle.

Pour simplifier encore un peu la visualisation, nous allons nous concentrer sur les 4 types de pièces ayant la plus haute valeur. Les pièces de 20 centimes et de deux euros sont relativement facile à distinguer, en revanche celles de 50 centimes et de 1 euro se ressemblent beaucoup. Nous allons tester deux algorithmes et observer comment ils se comportent. Dans les deux cas, la démarche est la suivante : dans un premier temps nous fournissons une partie des données (soit les pièces) à l’algorithme, sur la base desquelles il va apprendre un modèle. Ensuite nous prenons les pièces restantes et demandons au modèle d’essayer de les reconnaître. Ainsi le test se fait avec des données qui n’ont pas été observées pendant la phase d’apprentissage.

Le premier algorithme fait partie de la famille des SVM (Support Vector Machine, Figure 3). Les formes représentent les données réelles (ou données observées), et les zones de couleur marquent les limitent du classifieur. Ainsi toute nouvelle pièce qui tomberait dans la zone rouge serait considérée comme une pièce de 20 centimes. Notons que certaines formes sont entourées de blanc : ce sont des erreurs de classification. On remarque donc que ce modèle a du mal a faire la différence entre certaines pièces de 50 centimes et de 1 euro.
Figure 3: SVM (noyau radial)

Le classifieur de la Figure 4 se base sur l’algorithme k-NN (k-Nearest Neighbors). Cet algorithme utilise une autre approche qui semble ici plus performante ( les lecteurs les plus avertis remarqueront qu’en réalité nous sommes dans une situation d’overfitting). On voit qu’il a su isoler les pièces difficiles à identifier. Cependant il pourrait toujours se tromper face à de nouvelles pièces, qui par exemple présenteraient une forme d’usure inhabituelle. Recueillir davantage de données, ajouter d’autres mesures (comme l’épaisseur de la pièce), ou encore modifier les paramètres de l’algorithme permettrait de construire un modèle plus robuste.
Figure 4 : k-NN

L’apprentissage non supervisé

La différence majeure quand on parle d’apprentissage non supervisé, c’est que l’on ne dispose plus d’exemples. Il n’est donc plus possible d’évaluer la performance de l’algorithme en comparant le résultat avec des valeurs observées. Les problèmes d’apprentissage non supervisé les plus populaires sont les analyses de clustering.

En cluster analysis, ou classification non supervisée, on essaye de séparer les données en k groupes, ou classes. Pour faire ce classement on va optimiser deux choses :
maximiser l’homogénéité des données au sein des groupes, c’est à dire faire en sorte que les observations contenues dans un même groupe se ressemblent le plus possible ;
maximiser l’hétérogénéité entre les groupes, c’est à dire faire en sorte que des observations appartenant à des groupes distincts soient les plus différentes possible.

Imaginons que nous gérons une grande surface. Grâce à notre programme de fidélité, nous récoltons des données sur les habitudes de consommation de nos clients. Nous avons classé les produits de nos rayons en différentes catégories et nous sommes en mesure de calculer deux indicateurs :
le taux de fidélité aux marques, qui nous permet de savoir si un client achète régulièrement les produits des mêmes marques ou si au contraire il n’est pas regardant sur ce critère ;
la sensibilité au prix, qui nous permet de savoir si un client préfère choisir les plus petits prix ou si au contraire il n’hésite pas à payer plus cher pour certains produits.

Notre programme de fidélité compte 400 clients actifs. Nous souhaitons les classer en plusieurs groupes afin d’adapter notre stratégie marketing. La Figure 5 nous permet de visualiser le comportement d’achat de nos clients selon ces deux axes d’analyse. Plus l’axe des ordonnées tend vers 100, plus le client est loyal à ses marques favorites. Plus l’axes des abscisses tend vers 100, plus le client est attentif au prix des produits.
Figure 5 : sensibilité au prix et fidélité aux marques

Il semble que la concentration des clients soit plus dense à certains endroits de ce graphique. Notamment, on voit un cluster se dessiner en bas à droite, ainsi qu’un ou deux autres dans la partie supérieure. On remarque aussi que certains clients semblent avoir un comportement assez différent du reste de la masse, puisqu’ils sont relativement isolés.

Nous allons analyser ces données en deux temps. Commençons par essayer de séparer les individus qui ont un comportement isolé, les outliers. Cela nous permettra de déterminer plus facilement le nombre de groupes que nous voulons constituer. Pour cela, nous utilisons l'algorithme LOF qui se base sur la densité locale des observations. Nous affichons le résultat de cette première classification sur la Figure 6 (les outliers sont en rouge). Nous y ajoutons également le gradient de densité : le relief qui se dessine permet de visualiser où se concentrent les données.
Figure 6 : densité des observations et détection des outliers

Voilà, nous y voyons déjà plus clair. Le gradient de densité nous permet de constater qu’il serait pertinent de séparer les données en trois classes. Nous allons assigner ces classes aux données restantes (hors outliers) en utilisant l'algorithme des K-Means. Celui-ci cherche à créer k clusters (ici k = 3) en regroupant les données de chaque cluster autour d’un point central. Le résultat est le suivant (Figure 7).
Figure 7 : K-Means clustering

On peut maintenant interpréter ces classes en les confrontant à nos indicateurs. La classe -1 représente les outliers : ces clients ont tous un comportement assez singulier, ils ne rentrent dans aucune “case”. En revanche la classe 3 correspond à un comportement assez clair : ces clients sont très fidèles à certaines marques et sont prêts à payer le prix de la qualité. Par opposition, les individus de la classe 1 sont beaucoup plus attentifs au prix, tandis que la marque n’est pas pour eux un critère d’achat. Enfin, le groupe 2 correspond probablement à des clients fidèles à certaines marques “petits prix”, peut être même à la marque de distributeur de notre grande surface.

Ici nous avons utilisé un outil de visualisation pour déterminer le nombre de clusters. Lorsque le jeu de données comporte beaucoup de variables, il est bien plus difficile de visualiser l’information. On peut alors utiliser des outils mathématiques pour trouver le nombre de classes optimal, mais c’est souvent l’analyse des données combinées à la connaissance du contexte métier qui permet de faire les choix les plus pertinents.

A suivre…

J’espère que ces exemples vous ont permis de voir plus clair sur ce qu’est l’apprentissage automatique. Dans un prochain article nous nous intéresserons à l’histoire de ce champs d’étude, que nous agrémenterons de nombreux cas d’usages réels.




Dans la même rubrique :