Skip to the content.

Bases d’exemples

Problèmes liés aux bases

Dans cette section, rien de mathématique, mais seulement un peu de réflexion plus philosophique. Nous aborderons trois points principalement. Le premier, le plus philosophique, est celui de biais dans les bases, qui a des répercussions sociétales très importantes.

Biais dans les bases, et implications.

Comme nous l’avons vu longuement depuis le début de ce cours, nos algorithmes d’apprentissage automatique supervisé apprennent à prendre une décision en imitant les décisions fournies par la base d’exemples.

Ce comportement, certes génial la plupart du temps, comporte néanmoins de gros risques que la base ait tendance à présenter des décisions fortement contestables.

Prenons un exemple, extrêmement clair. Imaginez un problème dans lequel nous devons définir si une personne est un locataire à sélectionner pour un appartement donné. Notre base contient 400 000 exemples récents, présentant chacun des caractéristiques concernant :

Le label est simplement l’indication que le candidat a été retenu pour cet appartement ou non.

C’est un problème de classification on ne peut plus simple. La taille de la base nous garantit que nous avons de la marge pour utiliser un modèle complexe, sans trop risquer de sur-apprentissage.

Si vous faites cela, vous allez vraisemblablement créer une IA raciste, qui défavorise très clairement les noms à consonance étrangère.

Simplement parce que, toutes les enquêtes s’accordent sur ce point, les locataires d’origine étrangère ou issus de l’immigration sont en moyenne bien plus souvent écartés que les autres. Or les seules choses qui devraient intéresser un propriétaire sont que le locataire paye son loyer et rende le lieu loué en bon état.

On parle de « biais dans une base » lorsque les labels associés aux exemples sont influencés par un paramètre masqué. Ces biais peuvent conduire à une décision injuste, ou à des performances réduites en conditions réelles.

Dans la partie suivante, je vous présenterai un autre biais qui réduirait franchement les performances. Mais retenez surtout ceci :

Une IA en apprentissage automatique va extraire des corrélations entre les caractéristiques et la décision souhaitée. Elle reproduit donc, par nature, tous les biais présents dans la base. Croyez bien que c’est un problème extrêmement répandu, dans toutes sortes de domaines. Ce problème est d’autant plus sensible dans certains algorithmes (comme les réseaux de neurones), pour lesquels la décision finale n’est pas explicitée, donc modifiable. Un arbre de décision, en revanche, pourrait être corrigé a posteriori relativement facilement.

Pour éviter ce phénomène de reproduction des biais dans les bases, on peut :

Voyons maintenant un autre biais, beaucoup moins évident, qui donne lieu à des résultats surprenants.

Paradoxe de Simpson

Ici, il s’agit de comprendre un piège majeur et souvent indétectable, qui porte le nom de paradoxe de Simpson.

Exemple

Pour le comprendre, voici un exemple. Nous verrons plus loin ce qu’il implique pour le Machine Learning.

Imaginons un médicament, pour l’asthme. (En fait, ce que je décris a été observé pour les cancers, mais ma femme trouve que c’est anxiogène, alors je vais vous parler de l’asthme). Vous avez le choix entre 2 traitements, \(A\) ou \(B\). Vous regardez donc la biblio, qui présente deux études, dont les conclusions sont décrites ci-dessous.

Étude 1 - Les données sont très claires. Sur l’ensemble des cas, en moyenne, \(A\) fonctionne mieux que \(B\). Quel traitement choisiriez-vous ? (Ben, oui, \(A\)…)

Étude 2 - Cette étude a séparé les cas d’asthme en deux catégories : les cas graves / les cas bénins. Les données sont également très claires :

Combinaison des deux études : Wait, What ? Je reprends : vous êtes atteint d’asthme, de la forme que vous voulez (grave ou pas).

Pourtant, les chiffres de ces deux études sont corrects et elles travaillent sur la même base d’exemples. Si vous êtes comme moi, vous pensez a priori que ca n’est pas possible … ben, si ! Nous allons voir comment, pourquoi, et comment l’éviter.

Quelques chiffres pour notre démonstration

Prenez ces chiffres. Notre base est composée de 1000 cas, dont 200 graves et 800 bénins.

Voici par ailleurs les résultats obtenus.

Traitement Réussite Échec Taux de succès
\(A\) 580 + 25 = 605 20 + 25 = 45 \(605 / 650 = 0.93\)
\(B\) 198 + 100 = 298 2 + 50 = 52 \(298 / 350 = 0.85\)

Étude A : on conclue immédiatement que \(A\) est meilleur.

De fait, l’étude B a utilisé les mêmes données, mais en prenant en compte les différences entre cas bénins ou graves. Revoici nos données selon cette séparation.

Traitement Réussite Échec Taux de succès  
\(A\) bénin 580 20 \(580 / 600 = 0.97\)
\(B\) bénin 198 2 \(198 / 200 = 0.99\)
\(A\) grave 25 25 \(25 / 50 = 0.5\)
\(B\) grave 100 50 \(100 / 150 = 0.67\)

Étude B : à chaque fois, \(B\) donne de meilleurs résultats.

Ce n’est possible que si la base présente un biais majeur d’un type tout autre que celui présenté précédemment.

Cette situation n’est possible à la base que parce qu’on administre plus facilement le traitement \(A\) aux cas bénins (600 sur 800), lesquels sont de beaucoup les plus nombreux (800 sur 1000).

De fait, nous évaluons deux traitements qui n’ont pas eu des conditions équitables lors de la constitution de la base.

Cela pourrait être le cas dans la pratique, si, par exemple, le traitement \(A\) était relativement facile à mettre en œuvre (un comprimé matin et soir), alors que le traitement \(B\) était très lourd à mettre en œuvre (disons 2h de bloc chirurgical. Oui, pour de l’asthme, ce serait lourd).

Formuler ce qui pose problème de façon précise est assez délicat. Tenons-nous en à cette phrase que j’essayerais plus loin d’appliquer aux problèmes de machine Learning : la base peut être également biaisée si la prédiction obtenue est basée sur des paramètres dont les exemples ont été choisis en fonction de la valeur de la prédiction vraisemblable.

Qu’en conclure ?

Vous pouvez remplacer mes catégories (bénin ou grave) par une séparation sur les formes que pourrait prendre la maladie ; disons par exemple « forme commune » et « forme enzymatique immuno-déprimée » (j’ai inventé ce terme, il ne veut rien dire). Disons que seul un spécialiste du domaine pourrait penser que séparer ces deux catégories pourrait être important. Sans aller plus loin dans l’analyse de ce cas (très simple), on peut déjà tirer quelques conclusions.

Pour se prémunir de cela, les méthodologistes insistent sur une préparation de la base d’exemple rigoureuse, qui, par exemple, administre le traitement A et le traitement B à des patients dans des conditions identiques. En médecine, c’est par exemple du double aveugle, avec séparation des patients par catégories similaires de pathologie, type de vie… Cette préparation rigoureuse garantirait d’éviter ce type de problèmes.

J’aurais donc quelques conseils à formuler :

Prenez avec énormément de pincettes toute étude et tout résultat d’algorithme dont la base n’a pas été préparée rigoureusement. Mais aussi : si vous travaillez en machine learning avec une base donnée, assurez-vous de disposer d’un expert du domaine. Il pourra vous signaler si la composition de la base est sujette à caution mais aussi si les résultats que vous obtenez ont une quelconque pertinence dans la pratique.

Pour parler de choses qui ont été plus actuelles au moment de la rédaction de ce cours (2020-2022)…

Cas du Coronavirus

Par exemple, si on ne parle plus de l’asthme, mais du coronavirus. Et que le traitement A est « nommez celui que vous voulez » et que le traitement B est « ne rien prendre du tout » et qu’on dispose de quelques études incomplètes. Dans ce cas :

Qui a raison ? Le méthodologiste et votre praticien. (Maurice a tort). Ah, mince (et je suis poli), ca ne nous arrangeait pas à l’époque. Pourtant, c’est vrai et c’est la seule réponse acceptable selon moi. Vous pouvez tourner ça comme vous voulez, je crois que ca reste vrai.

Voici quelques derniers conseils, qui, je pense, sont complètement corrects.

Voilà. Je ne sais pas trop comment cette section vieillira avec le temps, je la laisse là en témoignage de ces batailles homériques ayant divisées la population française à cette époque. Retenons surtout ceci :

En apprentissage automatique, si nous utilisons ces bases (mal fichues) pour prendre une décision (choisir un traitement pour un patient), il en découlera que nos performances dans la pratique n’auront rien à voir avec les performances observées sur cette base.

Autres Problèmes liés aux bases

Au-delà de tout ce qui a été dit, il existe de nombreux problèmes que l’on rencontre dans la pratique. J’en citerais ici deux principaux : les erreurs de saisie et une base trop petite.

Erreurs de saisie

Le premier problème que vous rencontrerez souvent est celui de bases contenant des données erronées, ou des données incomplètes. Il est dans ce cas intéressant de procéder à un nettoyage des données incomplètes, et une suppression de données aberrantes. C’est souvent manuel, assez long et pénible, mais nécessaire.

Base trop petite

Enfin, et c’est le problème le plus important pour nous : disposer de suffisamment d’exemples pour pouvoir utiliser des modèles complexes. Si vous participez à l’élaboration de la base, pensez à prévoir un nombre d’exemples conséquent. Si vous prenez une base déjà construite, les personnes l’ayant réunie ne pourront le plus souvent pas ajouter de nouveaux exemples. Il pourra être intéressant de recourir à l’augmentation de données, que nous allons voir maintenant.