Adloun

Apprentissage automatique

Cours · informatique (MP2I/MPI), chapitre 26 · MP2I et MPI · le début du chapitre, la suite sur Adloun

L'algorithme des k plus proches voisins : un nouveau point prend la classe majoritaire parmi ses voisins.

26.1 Ce que le programme demande, et ce qu'il n'attend pas

Ce chapitre est le plus jeune du livre, et le programme y met une mise en garde qu'il faut lire avant tout le reste : « la connaissance des théories sous-jacentes aux algorithmes de cette section n'est pas un attendu du programme. Les étudiants acquièrent une familiarité avec les idées qu'ils peuvent réinvestir dans des situations où les modélisations et les recommandations d'implémentation sont guidées. »

Autrement dit : on apprend ce que font ces algorithmes, on sait les écrire quand on est guidé, et l'on ne démontre ni leur convergence ni leurs garanties statistiques. Le programme écarte d'ailleurs explicitement la démonstration de convergence des -moyennes.

Définition 26.1Supervisé, non supervisé
  • Supervisé : les données d'apprentissage portent une étiquette — une réponse connue — et l'on veut prédire celle de données nouvelles.
  • Non supervisé : aucune étiquette ; on cherche une structure dans les données, typiquement des paquets.

26.2 Apprentissage supervisé

26.2.1 Les plus proches voisins

Méthode : L'algorithme le plus simple qui soit

Pour classer un point nouveau : trouver ses plus proches voisins parmi les données étiquetées, et lui donner l'étiquette majoritaire. Le programme fixe la distance : euclidienne.


(* Étiquette prédite pour x par les k plus proches voisins.
   Précondition : k >= 1, donnees non vide. Complexité : O(n·d + n log n). *)
let knn donnees k x =
  let d2 (p, _) =
    Array.fold_left (+.) 0.0
      (Array.mapi (fun i xi -> (xi -. p.(i)) ** 2.0) x)
  in
  let triees = List.sort (fun a b -> compare (d2 a) (d2 b)) donnees in
  let voisins = prendre k triees in
  majoritaire (List.map snd voisins)
ImportantUn algorithme sans apprentissage

Il n'y a pas de phase d'entraînement : le modèle est l'ensemble des données. Tout le coût est reporté sur la prédiction, qui parcourt les points à chaque requête. C'est l'inverse des méthodes suivantes, longues à entraîner et instantanées à interroger.

Le choix de arbitre entre deux défauts : recopie le bruit des données ; trop grand lisse jusqu'à ignorer les structures fines. Aucune règle ne le fixe — on l'évalue.

Définition 26.2Arbre dimensionnel

Le programme cite les arbres dimensionnels (-d trees), qui accélèrent la recherche des voisins. L'idée est celle de la dichotomie du chapitre chap:diviser, portée en dimension : on découpe l'espace par un hyperplan perpendiculaire à un axe, en alternant les axes à chaque niveau, et l'on construit ainsi un arbre binaire.

La recherche descend vers la région du point, puis ne remonte explorer la région voisine que si la distance à l'hyperplan est inférieure au meilleur candidat trouvé — c'est un élagage, exactement au sens du chapitre chap:exploration. On passe de à en moyenne, en petite dimension.

26.2.2 Les arbres de décision et l'algorithme ID3

Définition 26.3Arbre de décision

Un arbre de décision pose une question à chaque nœud interne et porte une étiquette à chaque feuille. Classer un exemple, c'est descendre selon ses réponses. Le programme restreint « au cas d'arbres binaires » : chaque question est un test à deux issues.

Exercices du chapitre

La suite du cours · Tous les exercices du chapitre