From 586bced89aaae6c8971e60c017592262b4df809a Mon Sep 17 00:00:00 2001 From: Florian Mathieu Date: Wed, 27 Mar 2024 16:59:58 +0100 Subject: [PATCH] ajout cours knn et distance --- knn/DISTANCE.md | 30 +++++++++++++++++++ knn/README.md | 76 ++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 89 insertions(+), 17 deletions(-) create mode 100644 knn/DISTANCE.md diff --git a/knn/DISTANCE.md b/knn/DISTANCE.md new file mode 100644 index 0000000..db8a741 --- /dev/null +++ b/knn/DISTANCE.md @@ -0,0 +1,30 @@ +> Dans un repère à deux dimensions, si les coordonnées de deux points sont connues alors il est possible de calculer la longueur du segment qu'ils définissent, qu'on appellera ***distance*** + +D'ordre général, on parle de distance ***euclidienne*** que l'on peut noter comme ceci : + +Distance AB de deux points A (xa, ya) et B (xb,yb) = +$$ +AB = \sqrt{(xa - xb)^2 + (ya - yb)^2} +$$ + + +il s'agit de la mesure de distance la plus couramment utilisée, et elle est limitée aux vecteurs à valeurs réelles. + +Il existe également d'autres types de distance : + +- Distance de Manhattan + +il s'agit également d'une autre mesure de distance populaire, qui mesure la valeur absolue entre deux points. + +​ +$$ +Distance (AB) = |xa - xb| + |ya - yb| +$$ + + + + +- Distance de Hamming + +Ici, il s'agit de compter le nombre de bits qui diffèrent entre deux mots binaires. +Exemple : si a = 0001 et b = 1101, alors d(a,b) = 2. \ No newline at end of file diff --git a/knn/README.md b/knn/README.md index c9873e8..0c0ea06 100644 --- a/knn/README.md +++ b/knn/README.md @@ -1,4 +1,4 @@ -> Dans le domaine de l'apprentissage automatique des machines "Machine Learning", l'algorithme des k plus proches voisins est l'un des plus utilisé. +> Dans le domaine de l'apprentissage automatique dit "Machine Learning", l'algorithme des k plus proches voisins est l'un des plus utilisés. ### Le programme @@ -6,11 +6,53 @@ ------ -### Exemple de Problème de classification +### Un peu d'histoire... -L'algorithme des *k plus proches voisins* permet de résoudre certains problème, notamment ceux qui proposent de classer des données et élèments. +Même si les [Large Language Models (LLM)](https://datascientest.com/large-language-models-tout-savoir) ont démocratisé ce genre d'outil, l'apprentissage automatique ne date pas d’hier, puisque le terme de *machine learning* a été utilisé pour la première fois par l’informaticien américain *Arthur Samuel* en 1959. Puis, début 2000, l'arrivée des *Big Datas* va contribuer à l'explosion de ce genre de modèle. -Par exemple, le Professeur Chen, inventeur du Pokédex, utilise cet algorithme afin que son appereil puisse prédire quel pokémon se trouve devant lui. +------------- + +### Classification + +- Permet de prédire si un élèment est membre d'un groupe ou d'une catégorie donnée +- Une classe permet une identification de groupes avec des profils particuliers +- Offre une possibilité de décider de l'appartenance d'une entitié à une classe +- Dans notre exemple, on parlera de classification ***supervisée*** c'est à dire que l'on connait déjà les différentes classes à l'avance + +Parmi les modèles et méthodes de classification, on peut citer : + +- K-NN Voisins +- Arbres de décision +- Réseaux de neuronnes + +---------- + +### Exemple de Problème de classification avec K-NN + +L'algorithme des *k plus proches voisins* permet de résoudre certains problèmes, notamment ceux qui proposent de classer des données et élèments. + +Il s'agit d'une méthode de raisonnement à partir de cas connus : ce modèle va aider à prendre des décisions en recherchant un ou des cas similaires déjà résolus. + +Attention, ici, il n'y a pas d’étape d ’apprentissage: uniquement une construction d ’un ***modèle*** à partir d’un échantillon d'apprentissage. + +### Qu'est ce qu'un modèle ? + +Il s'agit d'une représentation simplifiée de la réalité en vue de réaliser un traitement avec un ordinateur. + +***Dans ce cas, notre modèle = échantillon d’apprentissage + fonction de distance + fonction de choix de la classe en fonction des classes des voisins les plus proches.*** + + + +### Pour quels types de variables ? + +- Qualitatives +- Quantitatives + +------------ + +### Exemple de l'implémentation de l'algorithme des k plus proches voisins + +Le Professeur Chen, inventeur du Pokédex, utilise cet algorithme afin que son appereil puisse prédire quel pokémon se trouve devant lui. chen @@ -24,9 +66,7 @@ Pour simplifier, imaginons que les Pokemons ne possèdent que deux caractéristi ------------ -- Nous pouvons utiliser cet échantillon afin de prédire la classification d'un Pokémon mystère, selon ses points de vie et sa valeur d'attaque. - - +- Nous pouvons utiliser cet échantillon afin de prédire la classification d'un Pokémon mystère, selon ses points de vie et sa valeur d'attaque, en représentant ces données sous la forme d'un graphique. ![echantillon](assets/echantillon_pokemon.png) @@ -43,25 +83,27 @@ Il devrait donc se trouver dans zone. On peut alors trouver ses cinq ou six plus - Parmi ces voisins se trouvent deux Pokémons de type Eau, et trois de types Psy. - Le Pokémon mystère sera donc probablement de type Psy ! - +------- ### Formulation de l'algorithme +Pour rendre cette classification automatique, nous allons utiliser un algorithme python. +D'après vous, que faut-il pour pouvoir prédire la classe d'un Pokemon donné ? +- ? ||Test|| +- ? +- ? +Une fois ces données modélisées, on peut formuler notre algorithme: +- ? +- ? +- ? +### Pour résumer... - - - - - - - - - +L'algorithme des k plus proches voisins a pour objectif d'identifier les voisins les plus proches d'un point de requête donné, afin d'attribuer une classe à ce point --------------