Quels colis arriveront en retard ?
Un transporteur livre 4 000 colis par jour en Île-de-France. Chaque soir, le service client veut prévenir les clients dont le colis risque d’arriver en retard.
Personne n’a écrit de règle pour cela. L’équipe a seulement l’historique : des milliers de livraisons passées, avec leur distance et leur résultat.
À partir de ces cas passés, un programme peut trouver la règle lui-même.
À la fin de cette leçon
Remarque
Je peux expliquer comment un modèle apprend à partir d’exemples.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Apprentissage automatique | un programme qui trouve une règle à partir d’exemples | |
| Exemple | un cas passé dont on connaît la réponse | |
| Caractéristique | une information qui décrit un exemple | distance : 18 km |
| Étiquette | la bonne réponse d’un exemple | en retard |
| Modèle | la règle trouvée par l’apprentissage | |
| Prédiction | la réponse du modèle pour un cas nouveau |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Deux façons d’obtenir une règle
En programmation classique, un développeur écrit la règle. Par exemple : « si la distance dépasse 30 km, prévenir le client ».
En apprentissage automatique, on ne donne pas la règle. On donne des exemples avec leur bonne réponse. Le programme cherche la règle qui colle le mieux à ces exemples.
Le résultat s’appelle un modèle.
Programmer une règle ou l’apprendre
| Question | Programmation classique | Apprentissage automatique |
|---|---|---|
| Qui fixe la règle ? | Un développeur | Le programme, à partir des exemples |
| Que faut-il fournir ? | La règle | Beaucoup d’exemples avec leur réponse |
| Si la situation change ? | On réécrit le code | On réentraîne avec de nouveaux exemples |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un exemple a des caractéristiques et une étiquette
Chaque livraison passée est un exemple. Ses informations, comme la distance, sont ses caractéristiques. Sa bonne réponse, « en retard » ou « à l’heure », est son étiquette.
Le modèle lit les caractéristiques et doit retrouver l’étiquette. Pour un colis de demain, l’étiquette n’existe pas encore. La réponse du modèle est alors une prédiction.
Huit livraisons passées
| Livraison | Distance (caractéristique) | En retard ? (étiquette) |
|---|---|---|
| 1 | 8 km | Non |
| 2 | 14 km | Non |
| 3 | 19 km | Non |
| 4 | 21 km | Non |
| 5 | 23 km | Oui |
| 6 | 26 km | Non |
| 7 | 30 km | Oui |
| 8 | 35 km | Oui |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Apprendre, c’est chercher la règle la plus juste
Comment le programme trouve-t-il la règle ? Il en essaie beaucoup.
Prenons la règle « en retard si la distance dépasse un seuil ». Pour chaque seuil possible, le programme compte ses erreurs sur les exemples. Il garde le seuil qui fait le moins d’erreurs.
Cette recherche s’appelle l’entraînement. Les vrais modèles essaient des millions de réglages, mais l’idée reste la même.
Les erreurs de chaque seuil
| Seuil | Prévus en retard | Erreurs | Lesquelles |
|---|---|---|---|
| 10 km | Livraisons 2 à 8 | 4 | 2, 3, 4 et 6 annoncées en retard à tort |
| 20 km | Livraisons 4 à 8 | 2 | 4 et 6 annoncées en retard à tort |
| 28 km | Livraisons 7 et 8 | 1 | Le retard de la livraison 5 n’est pas vu |
| 32 km | Livraison 8 | 2 | Les retards 5 et 7 ne sont pas vus |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Essayez plusieurs seuils en Python
# Livraisons passées : distance en km, et retard (True) ou non (False)
exemples = [
{"km": 8, "en_retard": False},
{"km": 14, "en_retard": False},
{"km": 19, "en_retard": False},
{"km": 21, "en_retard": False},
{"km": 23, "en_retard": True},
{"km": 26, "en_retard": False},
{"km": 30, "en_retard": True},
{"km": 35, "en_retard": True},
]
# Chaque seuil est une règle possible : en retard si la distance le dépasse
seuils = [10, 20, 28, 32]
for seuil in seuils:
erreurs = 0
for exemple in exemples:
prediction = exemple["km"] > seuil
if prediction != exemple["en_retard"]:
erreurs = erreurs + 1
print("Seuil", seuil, "km :", erreurs, "erreur(s)")
# Ajoutez 25 à la liste des seuils, puis relancez le programme.
Une erreur fréquente
Attention
Beaucoup pensent que le modèle comprend les livraisons. Il ne comprend rien. Il a seulement gardé la règle qui collait le mieux aux exemples. Si les exemples sont faux ou trop peu nombreux, la règle le sera aussi. Un modèle vaut ce que valent ses exemples.