Cette année, j’ai la chance de suivre un groupe de seulement 9 élèves de Terminale S en DNL Maths Anglais. Du coup, j’ai avancé plus vite en classe de Première et cela m’a conduit à contruire de nouvelles activités. En voici une première, inspirée par le programme de la spécialité NSI en Première, qui est une approche du machine learning à travers l’algorithme des k plus proches voisins.
Voyons un peu de quoi il retourne, partie par partie.
Introduction: la distance de Manhattan
Je relance ici les élèves sur une activité qu’ils ont déjà travaillées en classe de 2de pour réintroduire la distance de Manhattan (notre bonne vieille norme 1 !). L’activité est basée sur celle d’Arnaud Moragues (The shortest way), proposée sur le site Emilangues.

From OpenStreetMap, route from the Flatiron building to the Empire State Building for a car, in the streets of Manhattan
Les bases du machine learning
A partir d’une vidéo, les élèves découvrent les bases du machine learning, avec un script à compléter pour leur faire travailler leur compréhension orale. C’est une vidéo d’un développeur de Google, certes, mais je l’ai trouvée : brève, complète, claire. Et j’aime beaucoup le résumé de ce qu’est le machine learning en cinq mots :
using data to answer questions
La vidéo en question :
Découvrir l’algorithme k-NN avec Game of Thrones
En me basant sur les articles Learning Machine Learning (at Hogwarts) et An Introduction to KNN (K Nearest Neighbours). The Game of Thrones way, une activité très basique pour une première approche de l’algorithme, avec uniquement l’utilisation d’une distance euclidienne.
Première application : trouver le type d’un Pokémon mystère
Pour cette partie, on consolide la compréhension de l’algorithme en version graphique (donc toujours avec deux critères de classification seulement), et toujours avec deux catégories possibles. Davantage de données également, pour classifier un Pokémon mystère, connaissant ses caractéristiques. J’ai adapté cet exemple de très bon ouvrage de Céline Adobet, Guillaume Connan, Gérard Rozsavolgyi, Laurent Signac, dans la collection Prépabac en NSI, publié l’an passé chez Hatier. La dernière application est elle aussi adaptée de ce livre.
Dans cette partie, on effectue les recherches d’abord avec la distance euclidienne, puis avec la distance de Manhattan.
Pour le retour d’utilisation en classe, je dois reconnaître que j’avais bouclé cette partie un peu juste par rapport au moment où j’en ai eu besoin. On a traité cette application sans que je l’aie testée auparavant et forcément, ça n’a pas marché : j’avais choisi à chaque fois une valeur paire pour k et en plus il me manquait un point sur le graphique. Bref, on tombait systématiquement sur des égalités entre les plus proches voisins du Pokémon mystère à classifier… et on ne pouvait donc pas le classifier ! Là, le problème est réglé.
Deuxième application : aider le Choixpeau à trouver la Maison d’un nouvel élève de Poudlard
Pour finir l’activité, j’invite les élèves à aider le Choixpeau (le groupe est quasi intégralement composé de fans, ce que j’ai découvert en traitant l’application). Ici, on travaille uniquement en distance de Manhattan, et en dimension 4 (l’occasion de l’évoquer avec les élèves, d’autant plus que l’on n’avait pas encore traité la géométrie dans l’espace à ce moment de l’année).
Spécificité du programme actuel oblige, je n’ai pas traité la partie programmation en langage Python puisque les élèves n’en ont fait qu’un tout petit peu en 2de et ne sont donc pas au point sur son utilisation (de toute façon, Python n’était officiellement pas au programme des épreuves du bac 2020). Du coup, on a programmé sur la calculatrice et les élèves se sont partagés par groupes les calculs pour chacun des quatre nouveaux élèves à classifier. Naturellement, le tableau final a soulevé pas mal de remarques sur les caractéristiques des différents élèves (mais qui peut bien être cette Nymphadora avec 2 en courage ?). Je reconnais avoir repris le tableau proposé dans le Prépabac sans chercher à le modifier (surtout qu’il donne les bonnes maisons pour Hermione, Drago, Cho et Cédric).
En conclusion
L’activité globale semble avoir plu aux élèves. J’imagine qu’avec une classe à effectif plus élevé, elle serait difficile à traiter dans son intégralité telle quelle. Là je travaillais avec 1h30 par semaine et on a passé 5 ou 6 heures en tout dessus.
L’an prochain, je vais la reprendre aussi bien en 1re qu’en Terminale, mais cette fois-ci avec l’utilisation de Python. Ce sera l’occasion de travailler sur les listes notamment. Tout en prenant en compte que j’aurais certainement des élèves qui ne suivront pas la spécialité maths (on n’a pas NSI au lycée). Et puis en Terminale, ça se couplerait bien avec le programme d’enseignement scientifique qui traite notamment de l’intelligence artificielle et de l’apprentissage machine dans sa dernière partie !
Pour télécharger la fiche d’activité, c’est juste en-dessous :
The k-nearest neighbours algorithm [Télécharger]