Le machine learning en partant de zéro · Leçon 1.1 · 2 sur 33 leçons prêtes · 10 min
Qu’est-ce que l’apprentissage automatique ?
En bref
En apprentissage automatique, un programme trouve sa règle dans des exemples au lieu qu’on l’écrive pour lui. La leçon le montre sur de vraies tumeurs.
Comment écririez-vous un programme qui distingue une tumeur dangereuse d’une tumeur bénigne ? Vous pourriez vous asseoir avec une médecin et traduire son expérience en règles : « si les cellules dépassent telle taille, donner l’alerte ». Ou vous pourriez montrer à l’ordinateur des centaines de cas passés dont on connaît l’issue, et le laisser trouver la règle tout seul. La seconde approche, c’est l’apprentissage automatique (machine learning), et ce cours explique pourquoi elle fonctionne, quand elle échoue et comment faire la différence.
Choisissez une réponse et votre degré de certitude.
Répondez pour débloquer le labo.
Labo interactif
Ce labo interactif fonctionne dans un navigateur avec JavaScript activé. Le texte qui l’entoure décrit ce qu’il montre.
Voir la réponse
Bonne réponse : Moins bien que sur l’entraînement
Le seuil appris a une exactitude de 89,7 % à l’entraînement mais de 86,0 % au test (171 biopsies) : une règle ajustée à un jeu de données fait en général moins bien sur de nouvelles données. Un seuil fixé à la main à 15,0 obtient même 88,3 % au test. Le meilleur à l’entraînement n’est pas forcément le meilleur ailleurs.
À vous de jouer
- Déplacez lentement le curseur du seuil de gauche à droite et observez l’exactitude sur les données d’entraînement. Arrêtez-vous là où la règle vous semble la meilleure.
- Cliquez sur Apprendre et comparez le seuil choisi par l’algorithme avec le vôtre. Regardez les deux nombres : l’exactitude sur les données d’entraînement et sur les données de test.
- Poussez le curseur du seuil jusqu’au bout. La règle donne maintenant la même réponse à presque toutes les tumeurs – et pourtant l’exactitude ne tombe pas à zéro. Cherchez pourquoi avant de lire la suite.
- Après avoir cliqué sur « Apprendre », regardez quel score est le plus élevé, entraînement ou test, et décidez auquel vous feriez confiance pour une vraie patiente.
L’idée en quelques mots
Voyons maintenant ce que vous venez de manipuler, en termes simples.
En programmation classique, une personne écrit la règle et l’ordinateur l’applique. En apprentissage automatique, une personne fournit des exemples – des entrées accompagnées des bonnes réponses – et un algorithme cherche une règle qui reproduit ces réponses. La règle trouvée s’appelle un modèle. Une fois trouvé, le modèle s’utilise exactement comme une règle écrite à la main : une nouvelle entrée, une prédiction en sortie.
Pensez à la façon dont on apprend à savoir si un avocat est mûr. Personne ne vous donne de formule. Vous en pressez quelques-uns, vous les ouvrez, vous notez lesquels étaient bons, et au bout d’une douzaine d’essais votre pouce « sait ». Vous n’avez jamais écrit la règle, mais vous en avez une, construite à partir d’exemples dont vous connaissiez le résultat. Un algorithme d’apprentissage fait la même chose, avec des nombres et beaucoup plus de patience.
Pourquoi ça marche
Les exemples de cette leçon viennent d’un vrai jeu de données médical : 569 tumeurs du sein, chacune décrite par des mesures de noyaux cellulaires observés au microscope, et chacune classée par une pathologiste comme maligne (212 cas) ou bénigne (357 cas). Pour commencer, nous n’utilisons qu’une seule de ces mesures et la règle la plus simple qui soit : « au-dessus du seuil → maligne, en dessous → bénigne ».
Choisir le seuil à la main, c’est deviner. Apprendre le seuil, c’est essayer chaque valeur possible sur les exemples et garder celle qui fait le moins d’erreurs. Voilà tout ce qu’« apprendre » veut dire ici : une recherche, guidée par les données, du réglage qui fonctionne le mieux sur des cas déjà connus. Tous les modèles que vous rencontrerez ensuite, de la droite au modèle de langage à plusieurs milliards de paramètres, suivent la même recette : une famille de règles possibles, une façon de les noter et la recherche de la meilleure note.
Il y a un piège, et c’est l’idée la plus importante de tout le domaine. Une règle qui colle bien aux cas connus n’est pas forcément bonne. Ce qui nous intéresse, ce sont les cas que nous n’avons pas encore vus : la prochaine patiente. Alors, avant l’apprentissage, on met de côté une partie des données. Le modèle apprend sur le jeu d’entraînement, puis il est noté sur le jeu de test, qu’il n’a jamais vu. La note est généralement l’exactitude (accuracy), c’est-à-dire la part des cas que la règle classe correctement :
exactitude = prédictions correctes / toutes les prédictions
Une règle apprise sur le jeu d’entraînement obtient souvent un score un peu plus bas sur le jeu de test. Cet écart est le prix honnête de la rencontre avec des données nouvelles, et c’est le score de test que vous donneriez à un médecin.
Erreur fréquente
L’erreur classique du débutant consiste à juger un modèle sur les données dont il a appris. Sur ces cas, l’algorithme a eu toutes les chances de s’ajuster, donc le score le flatte. Le second piège est d’oublier la référence (baseline). La plupart des tumeurs de ce jeu de données sont bénignes, donc une « règle » qui répond toujours « bénigne » a déjà raison dans 357 cas sur 569, près des deux tiers. Voilà pourquoi, même quand une règle donne presque à chaque tumeur la même réponse, son exactitude ne tombe pas à zéro. Tout modèle appris doit battre cette réponse triviale avant de mériter l’attention, et en médecine il doit en plus faire le bon type d’erreurs – un thème que nous retrouverons dans la leçon 6.
L’apprentissage automatique n’est donc ni magique ni une forme de compréhension. C’est une recherche méthodique d’une règle, suivie d’un examen honnête sur des données que la recherche n’a jamais touchées. Dans la prochaine leçon, nous regardons de plus près la matière première – données, variables et étiquettes – et pourquoi la façon de découper les données change le score obtenu.
Quiz
Trois questions pour vérifier vos acquis. Choisissez une réponse ou dépliez la solution sous chaque question. Au clavier : les flèches choisissent, Entrée ou Espace valide.
À retenir
- En apprentissage automatique, la règle vient d’exemples étiquetés, pas de la tête d’un programmeur.
- Apprendre est une recherche : une famille de règles, une note et le réglage qui obtient la meilleure note.
- Un modèle est noté sur un jeu de test qu’il n’a jamais vu ; le score d’entraînement le flatte.
- Comparez toujours avec une référence triviale, par exemple prédire toujours la réponse la plus fréquente.
Pour aller plus loin : formule, code, pratique
Les maths
L’exactitude est accuracy = correct / n. Une règle à seuil dit « maligne » quand x > t. L’apprentissage choisit le t qui fait le moins d’erreurs sur les lignes d’entraînement : t* = argmin over t of (mistakes on the training set). Seuls les milieux entre valeurs triées voisines peuvent différer, donc la recherche est finie et exacte.
- Le score sur le jeu d’entraînement est biaisé vers le haut :
t*a été choisi pour rendre ce nombre aussi élevé que possible. - Le score sur le jeu de test est une estimation non biaisée de l’exactitude future, car aucun choix n’a été fait avec lui.
- La référence est la part de la plus grande classe,
max(n₀, n₁) / n. Une règle apprise ne mérite d’être gardée que si elle la dépasse nettement.
En code (Python)
Les effectifs et la référence « toujours bénigne » pour tout le jeu de données (le lab n’utilise que le rayon moyen et un découpage, donc ses 89,7 % et 86,0 % ne sont pas reproduits ici) :
from sklearn.datasets import load_breast_cancer
from sklearn.dummy import DummyClassifier
X, y = load_breast_cancer(return_X_y=True, as_frame=True)
print("tumours:", len(y))
print("malignant:", (y == 0).sum(), "benign:", (y == 1).sum()) # dans sklearn, 0 = maligne
always_benign = DummyClassifier(strategy="most_frequent").fit(X, y)
print(f"always 'benign': {always_benign.score(X, y):.1%}")
Sortie
tumours: 569
malignant: 212 benign: 357
always 'benign': 62.7%
Une règle qui ne regarde jamais la tumeur a raison dans 62,7 % des cas. C’est la barre que toute règle apprise doit franchir.
Télécharger le notebook (.ipynb). Ouvrez-le dans Jupyter ou importez-le dans Google Colab ; il télécharge lui-même les données manquantes.
Pour les praticiens
- Calculez d’abord la référence.
DummyClassifier(strategy="most_frequent")tient en une ligne et vous dit ce que « bon » doit signifier pour ces données. - Découpez avant d’apprendre quoi que ce soit, y compris un seuil. Tout choix fait sur les lignes de test, même petit, rend le score de test optimiste.
- Utilisez
stratify=ydanstrain_test_splitpour la classification, afin que l’entraînement et le test gardent la même part de tumeurs malignes. - L’exactitude compte toutes les erreurs de la même façon. Une tumeur maligne manquée et une fausse alerte n’ont pas le même coût : regardez donc aussi les deux types d’erreur séparément (leçon 6).
- Un jeu de test de 171 lignes donne un score qui oscille de deux ou trois points (leçon 2 : l’erreur standard est d’environ 2,7 points à 86 %). Ne lisez pas un écart aussi petit comme la preuve qu’une règle est meilleure.
Cela vous a-t-il aidé ?
Merci ! Cela nous aide à nous améliorer.
Aller plus loin dans l’Atlas
Articles de l’encyclopédie sur les notions de cette leçon :