Apprentissage statistique: mini-projet "image" ============================================== Pour améliorer les performances de la classification au plus proche voisin pour les données US Postal (chiffres manuscrits), on propose de remplacer la distance L2 classique par une distance plus adaptée aux images. L'idée est de pondérer la distance de façon à minimiser l'importance des zones de transition dans l'image (zones de fort gradient), qui ont peu de chances de se correspondre exactement d'un échantillon à l'autre du même chiffre. 1. Rappeler les performances de la classification au plus proche voisin (module nn_image, voir séance n°6) dans le cas train set = digits1 (labels: digits1_labels) test set = digits2 (labels: digits2_labels) 2. Implémenter un nouveau module nn_image2.c, qui diffère de nn_image.c par les caractéristiques suivantes: - son nom (ne pas oublier de changer nn_image en nn_image2 partout !) - nn_image2 prend en entrée un argument supplémentaire (optionnel ou non, à votre guise): un nombre réel lambda (double) - cet argument est passé en paramètre à la fonction dist2 dans la fonction nn_image2 (fonction principale du module) - la fonction dist(u,v) est remplacée par une fonction dist2(u,v,lambda), qui renvoie le double d défini par d = somme (u(x,y)-v(x,y))^2 / ( lambda + g(x,y) ) avec g(x,y) = |v(x+1,y)-v(x,y)| + |v(x,y+1)-v(x,y)| la somme étant prise sur tous les pixels (x,y) de l'image u, hormis la denière ligne et la dernière colonne. 3. A l'aide d'une boucle en tcsh (ou à défaut par essais successifs), trouver la valeur de lambda qui minimise l'erreur de classification (on se limitera à des valeurs entières de lambda), avec les mêmes choix de bases que dans la question 1. 4. Commenter l'intérêt de cette modification de la distance entre images. Expliquer notamment le gain obtenu en termes de compromis biais-variance: le biais est-il plus fort pour la distance L2 ou pour la distance modifiée ? La variance est-elle plus forte pour la distance L2 ou pour la distance modifiée ? (on ne demande pas un calcul expérimental, mais un simple raisonnement argumenté) 5. Proposer une autre distance entre images (par exemple en combinant différemment les fonctions u, v et g, où même en utilisant une autre fonction intermédiaire que g), dépendant d'un paramètre lambda, et implémenter la classification au plus proche voisin associée dans un module nn_image3.c. Chercher comme à la question 3 la valeur de lambda la meilleure, et discuter les résulats obtenus.