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

Règles d’association : confiance et lift

Après cette leçon: Je peux calculer la confiance et le lift d’une règle pour dire si elle est utile.

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

Une règle d’association, c’est quoi ?

Une règle d’association dit que les clients qui achètent un article A achètent aussi un article B, par exemple pain → beurre. On la juge avec deux mesures : la confiance et le lift.

Le lift évite de croire une règle qui reflète seulement la popularité des articles.

À la fin de cette leçon

Remarque

Je peux calculer la confiance et le lift d’une règle pour dire si elle est utile.

Mots clés

MotCe que ça veut direExemple
Règle d’associationune phrase « si A, alors souvent B » tirée des panierspain → beurre
Antécédentl’article A, à gauche de la flèche
Conséquentl’article B, à droite de la flèche
Confiancela part des paniers avec A qui contiennent aussi B
Liftla confiance divisée par le support de B

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

La confiance part des paniers avec A

Dans la règle pain → beurre, pain est l’antécédent et beurre le conséquent. La flèche ne veut pas dire « cause » : elle veut dire « souvent accompagné de ».

La confiance répond à une question : parmi les paniers qui contiennent le pain, quelle part contient aussi le beurre ? On ne regarde que ces paniers-là.

Exemple travaillé : pain vers beurre

Ce qu’on comptePaniersCalcul
Total des paniers8donné
Paniers avec pain5les paniers 1, 2, 4, 5 et 7
Paniers avec pain et beurre4les paniers 1, 2, 4 et 7
Confiance de pain → beurre0,84 divisé par 5

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

Le lift compare au hasard

Le beurre est dans 5 paniers sur 8 : son support est 0,625. Même sans le pain, un panier choisi au hasard le contient donc 6 fois sur 10 environ.

Le lift divise la confiance par ce support. Au-dessus de 1, A et B vont plus souvent ensemble que le hasard. Près de 1, ils n’ont pas de lien. Sous 1, ils s’évitent.

Exemple travaillé : trois règles

RègleConfianceSupport du conséquentLiftLecture
pain → beurre0,80,6251,28un peu plus que le hasard
confiture → beurre10,6251,6nettement plus que le hasard
pain → lait0,60,6250,96aucun lien

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

Calculer la confiance et le lift

Code: python
paniers = [
    ["pain", "beurre", "lait"],
    ["pain", "beurre", "confiture"],
    ["lait", "yaourt"],
    ["pain", "beurre", "lait", "confiture"],
    ["pain", "lait"],
    ["beurre", "confiture"],
    ["pain", "beurre"],
    ["lait", "yaourt", "sucre"],
]
a = "pain"
b = "beurre"
avec_a = 0
avec_b = 0
avec_les_deux = 0
for panier in paniers:
    if a in panier:
        avec_a = avec_a + 1
    if b in panier:
        avec_b = avec_b + 1
    if a in panier and b in panier:
        avec_les_deux = avec_les_deux + 1
confiance = avec_les_deux / avec_a
support_b = avec_b / len(paniers)
print("confiance", round(confiance, 2))
print("lift", round(confiance / support_b, 2))
# Changez a et b : essayez confiture puis beurre, puis pain et lait.

Une erreur fréquente

Attention

Beaucoup pensent qu’une confiance de 0,9 fait une bonne règle. Mais si 90 % de tous les paniers contiennent déjà B, la règle A → B n’apprend rien : son lift vaut 1. Regardez toujours la confiance et le lift ensemble.

Dans le labo, deux règles sur les jours

Reprenons le fichier hires.csv, où un jour est « plein » à 300 locations ou plus. La commande suivante juge deux règles : week-end → plein et pluie → plein.

Pour chaque règle, elle affiche quatre nombres entre parenthèses. D’abord le nombre de jours de l’antécédent, puis combien de ces jours sont pleins. Viennent ensuite la confiance et le lift. Elle ne modifie aucun fichier.

Juger deux règles sur les jours

Commande
docker exec jupyter python3 -c "import csv; L = list(csv.DictReader(open('hires.csv'))); n = len(L); P = sum(1 for r in L if int(r['hires']) >= 300); W = [r for r in L if r['weekday'] in ('Sat', 'Sun')]; R = [r for r in L if r['weather'] == 'rainy']; print([(len(g), k, round(k / len(g), 3), round(k / len(g) / (P / n), 2)) for g in (W, R) for k in [sum(1 for r in g if int(r['hires']) >= 300)]])"

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.

Pour aller plus loin

Dans votre carnet, jugez la règle soleil → plein sur hires.csv. Calculez sa confiance et son lift.

Comparez avec week-end → plein, puis dites quelle règle aide le plus un loueur à décider d’ouvrir un second guichet.

À 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.