Menu
CoddyTech

Introduction à KNN

Leçon 6 sur 19 du cours Introduction à l’apprentissage automatique de Coddy.

Les K-plus proches voisins (KNN) est un algorithme d'apprentissage supervisé utilisé pour les problèmes de classification et de régression. Il est simple mais puissant et est souvent utilisé comme base de référence pour des modèles plus complexes.

L'algorithme KNN trouve la similitude des caractéristiques en utilisant des mesures de distance pour identifier les voisins les plus proches d'un point. Par exemple, il peut trier des vins en les comparant aux plus proches, comme regrouper des vins ayant des saveurs similaires. C'est comme avoir un guide qui vous aide à trouver quels vins se ressemblent en fonction de leurs traits les plus communs. 🍷
L'idée derrière KNN est assez simple :

  1. Calcul de la distance : Pour un point de test donné, l'algorithme calcule la distance entre ce point et tous les autres points de l'ensemble de données d'entraînement. La distance peut être calculée de différentes manières, comme la distance euclidienne ou de Manhattan.
  2. Trouver les plus proches voisins : L'algorithme sélectionne ensuite les k points des données d'entraînement qui sont les plus proches du point de test. k est une constante définie par l'utilisateur et peut être n'importe quel entier.
  3. Faire une prédiction : Pour la classification, l'algorithme attribue l'étiquette de classe la plus commune parmi les k plus proches voisins au point de test. Pour la régression, il attribue la moyenne des « k » plus proches voisins.

KNN est un algorithme d'apprentissage paresseux (lazy learning), ce qui signifie qu'il n'apprend pas réellement de modèle. Au lieu de cela, il mémorise les instances d'entraînement et les utilise pour la prédiction (la prochaine leçon couvrira la phase d'entraînement). Cela rend KNN coûteux en termes de calcul pendant la phase de test.

Malgré sa simplicité, KNN peut atteindre des performances étonnamment bonnes. Cependant, il est sensible au choix de k et au type de mesure de distance, et il ne fonctionne pas bien avec des données de grande dimension en raison du fléau de la dimensionnalité.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

challenge icon

Défi

Facile

Dans ce défi, nous allons apprendre différents calculs de distance.

Créez une fonction nommée distances_option_calculator qui reçoit trois variables : X, y, et distance_type. La fonction retournera la distance entre X et y selon le distance_type.

Voici une liste de calculs de distance courants :

La distance Euclidian (la plus courante) est la distance en ligne droite entre deux points. C'est la racine carrée de la somme des carrés des différences entre chaque coordonnée correspondante des points :

euclidian distance equation

La distance Manhattan est également connue sous le nom de distance Taxicab ou City Block. C'est la somme des différences absolues entre les points à travers toutes les dimensions. Pour deux points ( P ) et ( Q ), avec les coordonnées ( (p_1, p_2, …, p_n) ) et ( (q_1, q_2, …, q_n) ) respectivement :

manhattan distance
distance comparison

La distance Hamming : Le nombre de positions auxquelles les symboles correspondants sont différents. Elle est souvent utilisée pour les données catégorielles.
Par exemple, prenons deux chaînes binaires :

String 1: 1101
String 2: 1001

En les comparant position par position, nous voyons que la deuxième position a des bits différents (1 dans String 1 et 0 dans String 2). Toutes les autres positions sont identiques. Ainsi, la distance de Hamming entre ces deux chaînes est 1.

Le distance_type peut avoir les éléments suivants : hamming, manhattan, euclidian.

Essayez vous-même

def distances_option_calculator(X, y, distance_type):
    # Écrivez le code ici
    if distance_type == "euclidian":
        pass
    elif distance_type == "manhattan":
        pass
    elif distance_type == "hamming":
        pass

Toutes les leçons de Introduction à l’apprentissage automatique

Entraînez-vous par vous-même : Compilateur Python en ligne