Méthode des KNN (k nearest neighbours, ou k plus proches voisins) Nicolas Turenne [email protected] INRA 2006 ● ● Faire une classification sans faire d'hypothèse sur la fonction y=f(x1,x2,...,xp) qui relie la variable dépendante y aux variables indépendantes x1,x2,...,xp Méthode de classification non-paramétrique puisqu'aucune estimation de paramètres n'est nécessaire comme pour la régression linéaire. ● ● ● ● On dispose de données d'apprentissage (training data) pour lesquelles chaque observation dispose d'une classe y. Si le problème est à 2 classes, y est binaire. L'idée de l'algorithme des knn est pour une nouvelle observation (u1, u2,..., up) de prédire les k observations lui étant les plus similaires dans les données d'apprentissage. ...et utiliser ces observations pour classer l'observation dans une classe v . Si on connaissait la fonction f, on aurait juste qu'à calculer v = f u 1 , u 2 , ... , u p En pratique on peut identifier les observations des données d'apprentissage, collecter les valeurs y associées à ces observations (et procéder à une sorte d'interpolation) ● ● Quand on parle de voisin cela implique la notion de distance ou de dissimilarité. La distance la plus populaire est la distance euclidienne : D x 1 , ... , x p ,u 1 , ... , u p = x 1−u 1 2 x 2−u 2 2 ... x p −u p 2 Le cas le plus simple est k=1 (cas 1-NN) . On cherche l'observation la plus proche et on fixe ● ● v = y On peut montrer que si on disposait d'un très gros volume de données d'apprentissage, et en utilisant une règle de classification arbitrairement sophistiquée, on ne diminuerait l'erreur de mauvaise classification que d'un facteur 2 par rapport à une méthode 1-NN. ● L'extension de 1-NN à k-NN se fait comme suit : (1) Trouver les k plus proches observations (2) Utiliser une règle de décision à la majorité pour classer une nouvelle observation ● ● ● L'avantage est que de grandes valeurs de k produisent un lissage qui réduit le risque de surapprentissage du au bruit dans les données d'apprentissage. Typiquement les valeurs de k sont choisies dans des échelles de quelques unités à quelques dizaines plutôt que quelques milliers. Si on choisit k = n (nombre d'observations dans l'ensemble d'apprentissage) la classe retenue sera celle qui a la majorité dans les données d'apprentissage, indépendamment de l'observation inconnue (u1, u2,..., up) ● L'extension de 1-NN à k-NN se fait comme suit : (1) Trouver les k plus proches observations (2) Utiliser une règle de décision à la majorité pour classer une nouvelle observation ● ● ● L'avantage est que de grandes valeurs de k produisent un lissage qui réduit le risque de surapprentissage du au bruit dans les données d'apprentissage. Typiquement les valeurs de k sont choisies dans des échelles de quelques unités à quelques dizaines plutôt que quelques milliers. Si on choisit k = n (nombre d'observations dans l'ensemble d'apprentissage) la classe retenue sera celle qui a la majorité dans les données d'apprentissage, indépendamment de l'observation inconnue (u1, u2,..., up) Exemple: Un fabricant de moisseuneuse aimerait trouver une façon de classifier les familles dans une ville en celles qui sont capables d'acquérir une moisseuneuse et celles qui ne sont pas capables d'en acheter une. Un échantillon pilote de 12 propriétaires et 12 non-propriétaires dans la ville est choisi. ● ● ● Comment choisir k ? Tout d'abord partitionner l'échantillon en ensemble d'apprentissage et ensemble de validation. On choisit aléatoirement 18 cas pour constituer l'ensemble d'apprentissage. Les cas 6, 7, 12, 14, 19, 20 serviront à la validation. Dans un jeu de données plus réalistes on disposerait de plus d'information. Si nous choisissons k=1 on classifiera d'une manière sujète aux caractéristiques locales de nos variables. Si nous choisissons k=18 on prédira juste la classe la plus fréquente dans les données. La prédiction est stable mais ne tient pas compte des informations des variables indépendantes. Distribution des données en fonction de 2 attributs : surface à cultiver (lot size) et niveau de revenu (income) Calcul de l'erreur de classification en fonction de k. L'erreur est stable entre k=1 et k=10 ensuite elle baisse entre k=11 et k=13 et ensuite elle remonte. On choisira très probablement k=13 Ce choix fait un compromis entre la variabilité associée à une faible valeur de k contre un « oversmoothing » ou surlissage (i.e. gommage des détails) pour une forte valeur de k. Sur la prédiction L'idée des k-NN peut facilement être étendue à la prédiction de valeurs continues (comme dans le cas de la régression linéaire multiple) en faisant une prédiction sur la valeur moyenne de la variable dépendante sur les k plus proches voisins. Souvent cette moyenne est pondérée par un poids décroissant en fonction de la distance croissante à partir du point à partir duquel la prédiction est requise. Défauts des k-NN Bien qu'il n'y ait pas besoin de temps pour estimer les paramètres, le temps pour calculer les k voisins peut etre prohibitif. Un certain nombre d'idée ont été imaginées pour palier ce problème : (1) diminuer le coût en calcul de la distance en travaillant sur un espace de dimension plus petit (en utilisant une méthode de réduction de dimension du type analyse en composante principale) (2) utiliser une technique de représentation sophistiquée de type arbre de recherche pour accélerer le processus d'identificaiton d'un voisin. Ces méthodes permettent de tomber sur un « presque voisin » pour aller plus vite. (3) Editer les données d'apprentissage pour éliminer les observations redondantes. Parfois autour d'une observation on trouve des observations ressemblantes qui appartiennent à la même classe.