Comprenez l'algorithme k-voisinage et essayez-le avec scicit-learn.
La méthode k-voisinage est un algorithme de classification supervisé qui n'acquiert pas de modèle discriminant et peut également être utilisé comme une régression supervisée ou une classification non supervisée.
L'algorithme de la méthode k-voisinage est le suivant.
La distance de Minkovsky est utilisée comme indice de distance. Ici, si les nouvelles données d'entrée sont $ x '$, les données d'entraînement sont $ x $, et le nombre d'entités est $ m $,
d(x', x) = \sqrt[p]{\sum^m_{j=1} |x'_j - x_j|^p }
C'est synonyme de distance de Manhattan quand $ p = 1 $ et de distance euclidienne quand $ p = 2 $.
Si l'augmentation de la valeur de k peut réduire les effets du bruit, il peut être difficile de déterminer la valeur de k car les limites des catégories peuvent ne pas être claires.
Dans le cas présenté ci-dessous, lors de la classification de nouveaux points de données noirs, lorsque $ k = 3 $, il est classé comme un cercle orange, mais lorsque $ k = 5 $, il est classé comme un carré bleu et $ k. Quand = 8 $, il est à nouveau classé comme un cercle orange.
En outre, s'il est mis en œuvre selon l'algorithme, il est nécessaire de calculer l'indice de distance pour toutes les données conservées lors de la prédiction de nouvelles données, de sorte que la quantité de calcul augmentera proportionnellement au nombre de données. Il y a des inconvénients.
En tant que sujet de la méthode k-voisinage, nous utiliserons le jeu de données iris, qui est un jeu de données de problèmes de classification scikit-learn.
Le nombre de données | Nombre de fonctionnalités | Nombre de catégories |
---|---|---|
150 | 4 | 3 |
・ Processeur Intel (R) Core (TM) i7-6700K 4,00 GHz
・ Windows 10 Professionnel 1909 ・ Python 3.6.6 ・ Matplotlib 3.1.1 ・ Numpy 1.19.2 ・ Scikit-learn 0.23.0
Le programme implémenté est publié sur GitHub.
nearest_neighbor.py
Le résultat de l'exécution lorsque $ k = 15 $ est le suivant.
La zone bleue est classée comme setosa, la zone verte comme versicolor et la zone orange comme virginica.
Les données du problème de régression ont été exécutées en ajoutant un nombre aléatoire à la sinusoïde et en définissant $ k = 5 $.
Dans un problème de classification, j'ai effectué une classification non supervisée avec $ k = 15 $ sans donner d'étiquette de catégorie.
Recommended Posts