Un modèle apprend ce que les données montrent
Un biais dans les données est une déformation : elles ne représentent pas bien la réalité. Un modèle d’intelligence artificielle qui apprend sur elles copie cette déformation, puis la répète à grande échelle.
Vous saurez repérer trois sources de biais : l’échantillon, les étiquettes et l’histoire. Vous saurez aussi mesurer la part de chaque groupe dans un jeu de données.
À la fin de cette leçon
Remarque
Je peux trouver par où un biais entre dans un jeu de données.
Mots clés
| Mot | Ce que ça veut dire |
|---|---|
| Biais | une déformation qui éloigne les données de la réalité |
| Échantillon | les lignes réellement recueillies |
| Population | toutes les personnes à qui le modèle servira |
| Représentatif | qui donne à chaque groupe le même poids que dans la population |
| Étiquette | la réponse connue que le modèle doit apprendre à retrouver |
| Groupe | des personnes qui partagent une caractéristique, ici A ou B |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un échantillon doit ressembler à la population
L’échantillon est l’ensemble des lignes recueillies. La population est l’ensemble des personnes à qui le modèle servira.
Si un groupe est rare dans l’échantillon, le modèle l’observe peu. Il apprend mal ses habitudes. Un échantillon est représentatif quand chaque groupe y pèse autant que dans la population.
Exemple travaillé : un organisme de prêts
| Groupe | Demandes dans les données | Part dans les données | Part dans la ville |
|---|---|---|---|
| A | 900 | 90 % | 60 % |
| B | 100 | 10 % | 40 % |
| Total | 1 000 | 100 % | 100 % |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Calculer la part d’un groupe
# Les demandes de prêt de l’an dernier, groupe par groupe.
demandes = ["A"] * 900 + ["B"] * 100
total = len(demandes)
nombre_b = 0
for groupe in demandes:
if groupe == "B":
nombre_b = nombre_b + 1
print("part du groupe B :", nombre_b * 100 / total, "%")
# Dans la ville, B pèse 40 %.
# Mettez 600 groupes A et 400 groupes B, puis relancez.
Compter les jours de semaine et de week-end
docker exec jupyter python3 steps/weekend.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Une étiquette peut déjà porter un jugement
L’étiquette est la réponse que le modèle doit retrouver. Elle vient souvent d’une décision humaine passée.
Prenons « prêt remboursé ». Elle n’existe que pour les prêts accordés. Un prêt refusé n’a jamais eu la chance d’être remboursé ou non. Le modèle ne voit donc qu’une partie de la réalité.
Les données gardent la trace de l’histoire
Un jeu de données décrit le passé. Si, dans le passé, un groupe a reçu moins de réponses favorables, les données le disent aussi.
Le modèle n’invente pas ce biais. Il l’apprend avec soin, puis le prolonge. Savoir d’où viennent les données est donc la première question à poser.
Une erreur fréquente
Attention
Beaucoup pensent qu’un énorme jeu de données est forcément juste. Un million de lignes qui oublient un groupe ne représentent toujours pas ce groupe. Posez d’abord la question : qui manque, et pourquoi ?
Dans votre carnet : la part de chaque jour
import pandas as pd
locations = pd.read_csv("hires.csv")
# La part de chaque jour de la semaine dans le fichier, en pourcentage.
(locations["weekday"].value_counts(normalize=True) * 100).round(1)
# Un jour pèse-t-il beaucoup plus que les autres ? Est-ce un biais, ou le calendrier ?
Pour aller plus loin
Choisissez un jeu de données que vous connaissez : les inscrits d’un club, les clients d’un petit commerce, les réponses à un sondage.
Écrivez trois phrases. Qui est dans les données ? Qui manque ? Qui a décidé de la réponse que le modèle doit apprendre ?