La «malédiction de la dimension»
Exercice supplémentaire · niveau 3 (difficile) · NSI (première), chapitre 8 — Dichotomie, voisins et gloutons · Aux frontières
Énoncé
La « malédiction de la dimension ». Tirer des points au hasard dans le cube unité en dimension , , , , , et regarder l'écart entre la plus petite et la plus grande distance, rapporté à la distance moyenne. Que devient la notion de « plus proche voisin » ?
Corrigé
def distances_moyennes(d, n=500):
pts = [[random.random() for _ in range(d)] for _ in range(n)]
ech = [distance(tuple(pts[i]), tuple(pts[j]))
for i in range(0, n, 7) for j in range(i + 1, n, 11)]
return min(ech), max(ech), sum(ech) / len(ech)
| dimension | min | max | moyenne | |
|---|---|---|---|---|
En grande dimension, tous les points sont à peu près à la même distance les uns des autres. L'écart relatif s'effondre de à : en dimension mille, le voisin le plus proche est à et le plus lointain à — treize pour cent de différence. La notion de « plus proche » perd tout contenu : le premier voisin n'est plus significativement plus proche que le dernier.
La conséquence pour l'algorithme. Les plus proches voisins, qui reposent entièrement sur le fait que « proche » veut dire quelque chose, se dégradent quand le nombre de descripteurs augmente. Ajouter des colonnes à un jeu de données n'améliore donc pas mécaniquement la prédiction — au-delà d'un certain point, cela la détruit. C'est contre-intuitif, et c'est mesurable.
Pourquoi cela se produit. La distance est une somme de carrés ; en additionnant beaucoup de contributions aléatoires indépendantes, les écarts se compensent et la somme se concentre autour de sa moyenne. Le phénomène porte un nom en probabilités, et il sera revu bien plus tard — ici, on le constate.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.