Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Mesurer l’équité d’un modèle

Après cette leçon: Je peux mesurer si un modèle traite deux groupes de la même façon.

Leçon de 60 min1 commandeLab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Juste en moyenne, injuste pour un groupe

L’équité d’un modèle se mesure en comparant ce qu’il fait pour chaque groupe. Un modèle qui trie des candidatures peut être bon en moyenne et injuste pour un groupe.

Vous calculerez les taux de chaque groupe. Vous verrez aussi pourquoi deux définitions de l’équité ne s’accordent pas toujours.

À la fin de cette leçon

Remarque

Je peux mesurer si un modèle traite deux groupes de la même façon.

Mots clés

MotCe que ça veut dire
Équitéun traitement jugé juste entre des groupes, qu’on peut mesurer
Taux de sélectionla part des personnes d’un groupe que le modèle choisit
Vrai positifune personne qualifiée que le modèle choisit
Taux de vrais positifsla part des personnes qualifiées que le modèle choisit
Faux positifune personne non qualifiée que le modèle choisit
Matrice de confusionun tableau des bonnes et des mauvaises réponses du modèle

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

On compare des taux, jamais des nombres bruts

Un groupe de 200 personnes a plus de personnes choisies qu’un groupe de 50. Comparer les nombres bruts ne dit rien.

Le taux de sélection divise le nombre de personnes choisies par la taille du groupe. C’est lui qu’on compare entre A et B.

Exemple travaillé : un tri de candidatures

GroupeCandidatsQualifiésChoisisChoisis et qualifiés
A100505040
B100255015

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Les deux taux du même tri

GroupeTaux de sélectionTaux de vrais positifs
A50 sur 100, soit 50 %40 sur 50, soit 80 %
B50 sur 100, soit 50 %15 sur 25, soit 60 %

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Calculer les deux taux d’un groupe

Code: python
# Le tri des candidatures du groupe A.
candidats = 100
qualifies = 50
choisis = 50
choisis_qualifies = 40
print("taux de sélection :", choisis * 100 / candidats, "%")
print("taux de vrais positifs :", choisis_qualifies * 100 / qualifies, "%")
# Changez les quatre nombres pour le groupe B : 100, 25, 50 et 15.

Deux définitions de l’équité peuvent se contredire

Première définition : le même taux de sélection pour chaque groupe. Seconde définition : le même taux de vrais positifs, donc la même chance pour une personne qualifiée.

Dans notre exemple, la première est respectée et la seconde ne l’est pas. Une personne qualifiée du groupe B est moins souvent choisie que sa pareille du groupe A.

Le choix est humain

Important

Aucun calcul ne dit quelle définition est la bonne. Ici, A compte 50 qualifiés pour 100 et B seulement 25. Quand les groupes n’ont pas la même part de qualifiés, on ne respecte pas toujours les deux définitions. Il faut choisir, puis expliquer pourquoi.

La matrice de confusion donne tous les taux

Une matrice de confusion range les réponses d’un modèle dans quatre cases : vrais positifs, faux négatifs, faux positifs et vrais négatifs.

Le labo contient un petit modèle qui prévoit si un jour de location sera plein, c’est-à-dire 300 locations ou plus. Les lignes de la matrice sont la vérité, les colonnes sont la réponse du modèle, les jours pleins d’abord.

Lire une vraie matrice de confusion

Commande
docker exec jupyter python3 steps/knn.py

Affiché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 erreur fréquente

Attention

Beaucoup pensent qu’une exactitude élevée prouve l’équité. L’exactitude moyenne cache les écarts. Un modèle exact à 90 % peut se tromper bien plus souvent sur un petit groupe. Calculez toujours les taux groupe par groupe.

Un écart se compare à un seuil

Un petit écart peut venir du hasard, surtout dans un petit groupe. Fixez à l’avance l’écart que vous acceptez, par exemple 5 points de pourcentage.

Si l’écart dépasse le seuil, ne cachez pas le chiffre. Dites quelle définition vous avez mesurée, sur combien de personnes, et ce que vous proposez de faire.

Dans votre carnet : deux types de jour

Code: python
import pandas as pd

locations = pd.read_csv("hires.csv")
locations["plein"] = locations["hires"] >= 300
# Le taux de jours pleins pour chaque jour de la semaine.
locations.groupby("weekday")["plein"].mean().round(2)
# Quels jours ont le taux le plus haut et le plus bas ? Quel écart ?

Pour aller plus loin

Dans votre carnet, séparez les jours de semaine et de week-end avec locations["weekday"].isin(["Sat", "Sun"]).

Calculez pour chaque type de jour le taux de jours pleins. Dites en deux phrases si un modèle qui prévoit les jours pleins traiterait les deux types de la même façon.

À propos de ce labo et de sa source: Lab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.