Reconnaissance de caractères manuscrits (base de données US Postal) =================================================================== CORRECTION 1. cp nn_image.c select_miss.c ~/my_megawave2/src/ cmw2 -light -O nn_image.c cmw2 -light -O select_miss.c 2. ccmcollect -c 255 digits1 b1 ccmcollect -c 255 digits2 b2 cview b1 & cview b2 & 3. # train set=digits1 test set=digits2 nn_image digits1 digits1_labels digits2 classif digits2_labels . # train set=digits1 test set=digits1 (vérification) nn_image digits1 digits1_labels digits1 classif digits1_labels . # train set=digits2 test set=digits1 nn_image digits2 digits2_labels digits1 classif digits1_labels . L'erreur de classification est de 18.2 % dans le premier cas, de 15.4 % dans le dernier cas (échange des échantillons d'apprentissage et de test). Ces erreurs sont du même ordre de grandeur, la différence pouvant s'expliquer par la (relative) faible taille des échantillons. L'étape de vérification donne bien sûr une erreur nulle, puisque la méthode de classification au plus proche voisin ne commet par construction aucune erreur sur la base d'apprentissage. 4. nn_image digits1 digits1_labels digits2 classif digits2_labels . select_miss -w digits2 classif digits2_labels miss ccmcollect -c 255 miss miss_image ccview -z 2 miss_image & La visualisation des images mal classées permet d'appréhender la complexité du problème. Il y a en effet plusieurs sources d'erreur: - la ressemblance entre chiffres (ex: ligne 1, colonne 8) - l'insuffisance de la taille de la base d'apprentissage (critique pour la méthode du plus proche voisin) - la non-prise en compte de critères de forme géométrique (ex: ligne 2, colonne 6) - les images mal recadrées (ex: ligne 1, colonne 1) etc. 5. (le module knn_image est disponible sur le site web du cours) # vérification knn_image -k 1 digits1 digits1_labels digits2 classif digits2_labels . # classification pour des valeurs croissantes de k set k = 3 while ($k <= 30) echo k = $k knn_image -k $k digits1 digits1_labels digits2 classif digits2_labels . @ k ++ end Aucune valeur de k>1 ne semble permettre d'améliorer le taux d'erreur constaté pour k=1. Ceci s'explique par le fait que la dimension de l'espace (28x28) est trop élevée pour que l'on puisse espérer, compte tenu de la taille de la base d'apprentissage, obtenir une distance faible pour plusieurs éléments de la base. Même lorsque l'on augmente la taille de la base d'apprentissage, on n'améliore pas notablement la qualité de la classification en passant de k=1 à des valeurs supérieures