Apprentissage KNN
Introduction
k-NN (k-Nearest Neighbor), l'un des algorithmes d'apprentissage automatique les plus simples, est non paramétrique et paresseux par nature. Non paramétrique signifie qu'il n'y a aucune hypothèse sur la distribution sous-jacente des données, c'est-à-dire que la structure du modèle est déterminée à partir de l'ensemble des données. L'apprentissage paresseux ou basé sur les instances signifie qu'aux fins de la génération du modèle, il ne nécessite aucun point de données d'apprentissage et que l'ensemble des données d'apprentissage est utilisé dans la phase de test.
L'algorithme k-NN se compose des deux étapes suivantes :
- Étape 1 - Dans cette étape, il calcule et stocke les k voisins les plus proches pour chaque échantillon de l'ensemble d'apprentissage.
- Étape 2 - Dans cette étape, pour un échantillon non étiqueté, il récupère les k plus proches voisins de l'ensemble de données. Ensuite, parmi ces k plus proches voisins, il prédit la classe par vote (la classe avec la majorité des votes gagne).
Le module sklearn.neighbors, qui met en œuvre l'algorithme des k-plus proches voisins, fournit la fonctionnalité pour les méthodes d'apprentissage non supervisées et supervisées basées sur les voisins.
Les plus proches voisins non supervisés mettent en œuvre différents algorithmes (BallTree, KDTree ou Brute Force) pour trouver le ou les plus proches voisins pour chaque échantillon. Cette version non supervisée n'est en fait que l'étape 1, qui est discutée ci-dessus, et la base de nombreux algorithmes (KNN et K-means étant les plus connus) qui nécessitent la recherche de voisins. En d'autres termes, il s'agit d'un apprenant non supervisé qui met en œuvre la recherche de voisins.
D'autre part, l'apprentissage supervisé basé sur les voisins est utilisé pour la classification et la régression.
Unsupervised KNN Learning
Comme nous l'avons vu, il existe de nombreux algorithmes, tels que KNN et K-Means, qui nécessitent des recherches sur les voisins les plus proches. C'est pourquoi Scikit-learn a décidé d'implémenter la partie recherche de voisins comme son propre "apprenant". La raison pour laquelle la recherche de voisins fait l'objet d'un apprentissage distinct est que le calcul de toutes les distances par paire pour trouver un voisin le plus proche n'est évidemment pas très efficace. Voyons le module utilisé par Sklearn pour implémenter l'apprentissage non supervisé du plus proche voisin avec un exemple.
Scikit-learn module
sklearn.neighbors.NearestNeighbors est le module utilisé pour implémenter l'apprentissage non supervisé du plus proche voisin. Il utilise des algorithmes spécifiques de plus proche voisin nommés BallTree, KDTree ou Brute Force. En d'autres termes, il agit comme une interface uniforme pour ces trois algorithmes.
Besoin d'aide ?
Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !