Les produits secs | usage kNN de fantaisie

Technologie AI Revue de presse , Auteur rire Wei Yi, nous savons presque colonnes à partir de code simple (zhuanlan.zhihu.com/skywind3000),AI Technology Review sa réimpression autorisée. Ce qui suit est le texte:

kNN (k-plus proches voisins) comme un modèle d'entrée de gamme, car à la fois simple et fiable, un bon soutien pour le problème non linéaire, bien que la nécessité de sauvegarder tous les échantillons, mais encore actifs dans divers domaines, et de fournir un résultat de reconnaissance plus robustes.

Vous pourriez dire, je sais kNN ah, ne pas est de trouver les k plus proches des échantillons de formation à des échantillons de test dans l'espace de fonction, puis déterminer la plupart appartiennent à une catégorie, il reconnaîtra cette catégorie.

Ceci est un livre / présentation sur le réseau le plus rhétorique kNN, si seulement pour que je ne vous écris pas l'article. En fait, avec une bonne kNN, il peut vraiment être une fleur, plus les choses plus fondamentales et nous devons jouer, est-ce pas?

La première: Classification

Évitez les gens ne savent pas, ou simplement prendre l'idée de base pour la prochaine classification kNN.

Pour l'échantillon de test Xu, nous voulons savoir quelle catégorie il appartient, au premier cycle pour tous Des échantillons de formation Identifier à partir de Xu K plus proches voisins (k = 5), et détermine ensuite les voisins K, dont la plupart appartiennent à la catégorie, la catégorie en tant que résultat de prédiction des échantillons d'essai, tel que décrit dans. La figure 4 est un voisin rouge, 1 il est vert, le juge Xu catégorie pour « rouge ».

Le deuxième: Retour

Le point échantillon, tracer une courbe, les points d'échantillonnage obtenus pour minimiser l'erreur, puis donnés coordonnées arbitraires, la courbe de la valeur de retour, appelé la régression. Alors, comment ne kNN le retourner?

Vous avez une série d'échantillons les coordonnées (xi, yi), puis étant donné un point de coordonnées test de valeurs x, y qui correspondent à trouver la courbe de régression. KNN avec elle, la meilleure façon est d'enlever la k coordonnée x de l'échantillon le plus proche, et leurs valeurs y sont en moyenne:

Le vert est la courbe ajustée, en utilisant sklearn à l'intérieur KNeighborsRegressor, vous pouvez voir la régression non linéaire bonne affaire, mais il peut aussi être re-optimisation, les voisins k, en fonction de leur test à partir du point de coordonnées x traitement pondéré la distance réciproque d 1 / d:

w = <1 d  for i in range (k)>

y = somme (<(w  * Y ) Pour i in range (k)>) / somme (w)

Si x et d'un échantillon coïncident exactement, di = 0, alors, 1 / d ne parvient pas à l'infini, la valeur y est de prendre directement l'échantillon, sans tenir compte d'autres points de (sklearn pratique), la valeur Y ainsi obtenue est relativement plus fiables a:

Une telle erreur est beaucoup plus petite, la méthode de calcul de la moyenne avant ne considère pas la valeur de la distance y en uniforme visé sklearn, la dernière distance est appelée poids lourds à distance font.

Ici, l'effet d'ajustement de courbe est très belle, vous faites baisse avec un gradient ou adaptation par moindres carrés impossible à réaliser un tel effet, même si la régression vecteur de soutien SVR ne peut pas faire une telle méthode à faible taux d'erreur. Si vous vous sentez un peu plus ajusté, vous pouvez ajuster la valeur de K, tels que l'augmentation de la valeur de K, peut rendre la courbe plus lisse nombre.

approche Wi mieux est d'exp (-d), de sorte que d = 0 lorsque la valeur 1, d infini lorsque près de 0:

w  = Math.exp (-d )

Donc, même si x et un échantillon de formation ne coïncidera pas ou sont très proches de l'infini infligé wi, alors le droit d'ignorer d'autres échantillons de poids, afin d'éviter le genre de problèmes de sklearn rencontrés qui sont des valeurs aberrantes doivent au-delà du périmètre, courbe sera plus lisse.

Troisième: identification d'une seule classe

mais le classement d'une classe / identification: Outliers / détection des valeurs aberrantes, ce qui est très utile. Nous partons du principe que l'application a besoin d'identifier cinq geste d'utilisateur différent, le classement général ne vous dira quel type d'une action appartiennent à 1-5, mais si l'utilisateur est de faire un geste de fonctionnement non normal, nous devons identifier « ne appartiennent tout type « et ne nécessitent aucun traitement est effectué dans le module geste directement ignoré.

La chose la classification traditionnelle est difficile en raison des échantillons négatifs sont infiniment beaucoup, beaucoup à impossible d'énumérer tout le geste supplémentaire, nous ne pouvons prélever un échantillon positif. Ceci est 0-9 et la reconnaissance de l'écriture manuscrite sont les mêmes, par exemple, un utilisateur a écrit une lettre A, nous devons juger une d'une image d'entrée est pas dans le 0-9, mais en plus nous ne pouvons pas énumérer tous les échantillons 0-9 Exceptions possible.

Cette fois-ci identifiant une classe a joué un rôle de premier plan, nous allons tous les échantillons 0-9 comme entrée « échantillon positif », si le test lors de la détection des valeurs de test de détection également appartiennent à la même catégorie, ou appartenant à une catégorie négative illégale. kNN de le faire est très facile, nous utilisons la méthode d'estimation locale densité NN-d:

Le procédé consiste à traiter l'échantillon de test z, d'abord trouvé dans l'échantillon d'apprentissage dans un le plus proche B, calculer z à la distance du point B d1 voisin, puis trouvé de B sur le point le plus proche C dans l'échantillon de formation, calculée distance BC d2, si:

d1 < = Alpha * d2 # alpha prennent généralement 1

Z échantillon a ensuite accepté (identifié comme catégorie positif), ou la rejeter (catégorie de reconnaissance négatif). Cette méthode est relativement simple, mais si l'échantillon local trop dense, puis, d2 est très petit, facile à identifier la catégorie négative a été rejetée. Par conséquent, une approche plus sophistiquée est de trouver le plus récent k échantillon du point B dans les échantillons de formation C1 - Ck et d2 agencé de manière à la C1 - à la distance moyenne B est Ck. Cette méthode est appelée kNN-d, seulement un résultat de reconnaissance est choisi parmi C, NN-d sera beaucoup mieux qu'avant.

D'autres extensions, vous pouvez également choisir le point B jeme le plus proche z, les résultats j obtenus en utilisant la méthode ci-dessus, le vote final si z est acceptée, appelée méthode j-kNN-d, la méthode ci-dessus mentionné est j = 1 est un cas particulier.

Procédé de détection de contraste ONE_CLASS de SVM, (j) kNN-d près de résultat de reconnaissance, mais augmente lorsque les dimensions de caractéristique, la précision de détection du SVM ONE_CLASS diminue considérablement, et (j) modèle kNN-d peut être mieux résultats.

LIBSVM en trois utilisation: la classification, la régression, ONE_CLASS (détection des valeurs aberrantes), mais aussi la supervision des trois principaux types de problèmes d'apprentissage, ici nous avons tous réalisé avec kNN encore, si vous échantillon était pas très grande, ne veulent pas introduire chaque espèces dépendances de package, puis kNN est l'un des plus simples et des alternatives fiables.

Quatrième: Avec le noyau

Communément appelé kNN basé sur le noyau, la raison MVB est d'atteindre un plus grand développement après l'introduction de la fonction du noyau, alors que la fonction SVM n'est pas unique, d'autres modèles peuvent également être greffées noyau, cette méthode est appelée « méthodes nucléaires ».

kNN est l'étape la plus critique est de calculer la distance d (xi, xj), cette méthode pour trouver la distance il y a beaucoup, comme la distance euclidienne traditionnelle:

Ou Manhattan distance:

En fait, la fonction de distance pour faire toute une histoire, donc après l'introduction de la méthode kNN nucléaire est également un problème dans la fonction de la distance.

L'idée de base est de vecteur caractéristique de faible dimension est cartographié de façon linéaire indissociable linéairement séparables dans l'espace caractéristique dimensionnelle (il peut y avoir une dimension infinie), le vecteur x est associé à un espace de grande dimension appelé (x), la fonction du noyau [Phi] K ( xi, xj) représentent le produit de deux vecteurs espace de grande dimension interne, ou un point produit:

K (xi, xj) = (xi). (xj)

fonctions du noyau populaire et comme SVM il y a si peu, comme le noyau gaussien couramment utilisé (RBF):

noyau polynomiale (POLY):

Et un noyau linéaire (correspondant aux coordonnées de points traditionnels européens):

Ensuite, l'espace de grande dimension, la distance entre deux points, après la place de nucléation de la distance peut être exprimée comme:

Après une transformation, nous mettons (xi) et (xj) éliminé et complet par rapport à xi, xj fonction du noyau pour exprimer la distance, n'a pas besoin directement xi, xj transformé en espace de grande dimension que rechercher la distance, mais calculé directement avec la fonction du noyau.

Si vous n'êtes pas familier avec les méthodes nucléaires, vous pouvez sauter choisir au hasard une fonction noyau, dans la formule de distance peut être utilisée pour résoudre deux échantillons du point de kNN.

Kai Yu a fait valoir une meilleure classificateur kNN basé sur la méthode du noyau que la performance du classificateur kNN traditionnel « noyau algorithme du plus proche voisin » (https://link.springer.com/article/10.1023/A:1015244902967) parce que il suffit de changer la mesure de distance pour un moment, de sorte que le temps global et classificateur kNN traditionnel toujours similaire, mais l'effet est beaucoup mieux:

Sur différents ensembles de données, la technologie nucléaire que la performance traditionnelle kNN kNN peut être plus précis et stable, ils utilisent les données US Postal Service et BUPA les données en direct de trouble est validé, les résultats montrent que la nucléation avait une précision de classificateur kNN nettement mieux que kNN traditionnelle, et SVM gagner un combat:

De même, Shehroz Khan et al., « Noyaux pour une classe la plus proche Classification Neighbour » vérifier la nucléation kNN atteint mieux que SVM capacité de reconnaissance d'une seule classe sur le problème de la classification d'une seule classe sur plusieurs ensembles de données atteint 87% --95% de précision.

Cinquième: avec la division des technologies spatiales

Pour l'échantillon à grande échelle la performance kNN est pas élevé, il a introduit un grand nombre de techniques de segmentation de l'espace, comme kdtree:

Une données spatiales est la structure binaire, est très simple à construire ou de sélectionner un des axes de coupe (les axes de tous les échantillons de la variance maximale) et les valeurs d'échantillons sont classés par l'axe de coordonnées, qui est découpée en parties de deux bits gauche et droite, puis continuer coupe recursive jusqu'à ce que le noeud courant est seulement un échantillon jusqu'à présent.

Rechercher des mots sur la première recherche récursive les nuds feuilles du point cible z se trouve, un échantillon du nud contient x comme le « point le plus proche courant », puis x à la distance z d est le rayon, la portée récursive z de l'arbre entier comme la recherche de centre (Si une sphère sous-arbre ne coupe pas la portée et la récursivité n'est pas vers le bas), le point le plus proche doit se situer dans la plage, une fois le point plus proche de trouver instantanément plage étroite.

kdtree Il y a beaucoup d'articles en ligne et problème d'espace de code ne va pas entrer dans les détails, je veux juste souligner que la plupart des kdtree en ligne est de vous aider à trouver le voisin le plus proche, mais récents voisins k comment trouver? La plupart des articles ne pas dire une petite partie a dit que c'était faux (juste une approximation).

Vous devez maintenir une longueur de la file d'attente prioritaire de K (ou tas maximum), trouver les voisins les plus proches sur la base de l'échantillon de frères et soeurs adjacent est rempli dans la file d'attente jusqu'à ce que la file d'attente est des échantillons complets k, cette fois à z est centre, échantillon file d'attente k-ième le plus proche z est le rayon de l'arbre kd pour faire une plage de recherche (premier point de k doit être comprise dans l'intervalle), le processus de recherche continuellement mise à jour et la file d'attente de priorité en temps voulu en fonction de la dernière k-th échantillonner le réglage de la distance z du rayon.

Ainsi, vous pouvez localiser avec précision le premier k z de l'échantillon le plus proche. arbre kd et dimensions liées, lorsque la dimension de l'échantillon est peu élevé, arbre kd rapidement, mais après les dimensions d'échantillonnage élevées, la performance arbre kd Commencerons diminué. Alors que l'arbre kd à calculer que les axes de coordonnées, il ne convient que pour la coupe dans l'espace euclidien.

Si nous utilisons une méthode kNN nucléaire, puis, arbre kd ne serait pas en mesure d'utiliser, parce que les caractéristiques du temps sont mis en correspondance avec l'espace de Hilbert-dimensionnelle passé, il peut y avoir une dimension infinie, les arbres kd ont mis à l'écart.

Nous avons donc besoin méthode super espace rondelle fendue.

Sixième: Super espace sphère divisée

En fait sklearn l'intérieur du ballon-arbre, l'espace est aussi une dichotomie, mais il ne dépend pas des axes de coordonnées, la distance entre la solution ne nécessite que deux échantillons peuvent être construits, ce qui est naturel pour l'introduction de techniques nucléaires:

Tous les échantillons commencent à mettre la balle dans un super départ, trouver un échantillon lorsque le centre de X0 sphère, de sorte que tous les autres échantillons à sa plus courte distance maximale. Ensuite, trouver un point le plus éloigné de x1 x0, x1 pour trouver le point le plus éloigné de x2, puis la sphère de tous les échantillons en fonction du nouveau attribué x1 x1, x2 de la récente assignée à x2, et deux sphères sous-Construct, puis la méthode ci-dessus pour ré-ajuster le centre de la sphère, puis récursion, jusqu'à et y compris seulement un échantillon, il ne coupe plus, kdtree similaire.

Une autre approche consiste à échantillonner tout au fond des nuds feuilles, chaque nud feuille contient beaucoup d'échantillons, chemin de coupe pour déterminer un noeud est le nombre d'échantillons contenant moins si le seuil est pas coupé, procéder autrement coupe.

Quand une plage de recherche et kdtree comme le noeud de début détermine d'abord si le point cible sphère hypersphère z centrée intersection cible (si l'ajout de deux rayon sphérique > = La distance entre les deux balles coeur), sauté si aucune intersection, l'intersection, puis continuer à gauche et à droite du nud est déterminé à prendre en charge les deux sous-sphères se croisent, l'intersection, puis l'étape ci-dessus est récursive répété, jusqu'à atteindre le nud feuille.

Depuis la plage de recherche repose uniquement sur le calcul de la distance, et à la fin il y a plusieurs dimensions du vecteur n'a pas d'importance, il ne faut pas que kdtree comme axes logarithmiques. Ainsi, en plus de la configuration bille arbre point long temps, l'efficacité globale de plus de kdtree et à vecteur de dimension supérieure, la même dégradation des performances que kdtree prend également en charge la version de nucléation kNN.

Kai Yu, qui a mené une données postales par l'essai, l'augmentation du nombre d'échantillons, l'irrégularité augmente, même cartographié dans un espace de noyau de grande dimension, la situation se produit de façon linéaire inséparable, la précision du SVM baissera, alors que équipé sera en mesure de carottage kNN cette fois-ball arbre pour présenter une grande précision, alors que les deux bonnes performances des requêtes.

Septième: échantillon redondant retiré

la performance kNN peut également réduire l'impact en cas de résultats de la classification des échantillons redondants supprimer pour améliorer les performances, comme le condensé classique algorithme le plus proche Neighbours Réduction des données:

En bref premier point d'échantillonnage est supprimé, puis déterminer ce point avec d'autres échantillons, si le résultat est correct, qui est un point redondant peut être supprimé, si cela réservé incorrect.

Après l'échantillon après la réduction et les données d'origine ne sont pas les mêmes, le résultat est une solution approchée pour résoudre, tant que l'erreur contrôlée, peut grandement améliorer les performances de recherche kNN, l'effet est suit comme:

Le point de cercle est enlevé dans l'échantillon, de gauche à droite peut être vu qu'un nombre limité d'échantillons sensiblement au niveau des parties de bord sont retenues, le résultat est très attrayant.

Comme le devant de la division de la technologie spatiale n'affectera pas les résultats de la solution, si grande échelle kNN généralement la première sur une boule-arbre, pas assez sur l'échantillon rapide redondant enlevé. La seule mise en garde est d'éliminer la redondance affectera la reconnaissance d'une classe ou d'autres choses de calcul de densité dépendante, besoin de faire un peu de traitement supplémentaire.

résumé du sujet

Il y a beaucoup d'utilisation prolongée, comme la recherche avant d'ajouter k plus proches voisins quand une distance d, ne rechercher que des échantillons dans la distance cible d, qui peut résoudre un problème d'une classe indirecte, si les deux sont très loin de tous les échantillons, vous pouvez Retour « rien », la sélection peut être multipliée par un alpha D est calculée en fonction de la densité moyenne du même échantillon.

Dans la classification, sélectionner simultanément une pluralité de voisins des résultats peut également être basée sur les résultats de vote pondéré en distance, comme la distance réciproque mentionné ci-dessus, ou exp (-D) quand le poids avant le vote.

kNN à cause d'une simple erreur contrôlée (il existe des preuves), peut traiter les problèmes non linéaires, il est toujours actif dans une variété d'applications, il a également présenté plus tôt les moyens d'étendre ses utilisations, la façon dont les fonctions du noyau réduisent son erreur, et comment utiliser l'espace la technologie de segmentation pour améliorer ses performances.

Bref, bien que très simple, mais il vaut un bon moment, pour obtenir un bon ajout à la bibliothèque classification kNN, régression, anomalie reconnaissance, avec la coupe de la sphère ultra-espace peut faire beaucoup de choses liées au cluster. Bien utilisé, il ne vous laissera pas tomber, vous pouvez devenir une arme puissante auxiliaire lorsque l'arme principale ne peut pas être utilisé à et appel beck.

Cliquez pour lire le texte, voir les échanges technologiques Python groupe de discussion

Industrie | Google I / O 2019 Quan Jilu: AI magnifique, vraiment parfumé Q Android, il y a deux nouveaux matériels
Précédent
Cercles | problèmes de segmentation d'images médicales Percée: réglage automatique des paramètres pour adapter à tous les ensembles de données
Prochain
Hot | Zhou Zhihua recommandé aux utilisateurs du système de renseignement de formation professionnelle et de la formation artificielle Guoneishoubu: un peu difficile
Le visage de la précision et l'efficacité de la compréhension du contenu, Facebook est l'utilisation de la technologie d'auto-surveillance
La réduction des charges de sécurité sociale pour la gestion de la mise en uvre formelle de cette année, il y a trois changements majeurs dans la sécurité sociale
Nouvelles | Institut de l'Université de Tsinghua a établi la théorie de base du centre de recherche en intelligence artificielle, Zhu a été directeur de la « troisième génération » profonds algorithm
vague mondiale Kompany a éclaté dans la boîte à gagner Aguero, Manchester City 1-0 Leicester City
Dynamic | Réglage du widget pour commencer, secondes AI pour vous permettre de devenir fashionistas
Ding Feng | hommage au fondateur de la Chine Intelligence artificielle M. WANG Xianghao
hydrogénation du benzène / benzène brut: Analyse de la chaîne de valeur de l'industrie d'hydrogénation du benzène brut
Suso briser Borigni Pa Kuita accomplissement Substitué rouge, Milan 2-1 Bologne
indice boursier a continué « sur la ligne » voiture utilisée pour l'adhésion à des niveaux de circulation
Amazon part des ingénieurs: Comment faire pour capturer, créer et construire des ensembles de données de haute qualité
Baidu Post Bar post annonce officielle inaccessible temporairement avant 2017