Un Diagramme de Voronoi (graphe de Voronoï de Décomposition) est une façon de représenter visuellement une Matrice de Distance (DM).
Ils sont aussi simples à créer et tracer à l'aide de R-vous pouvez faire les deux en une seule ligne de R code.
Si vous n'êtes pas famililar avec cet aspect de calcul de la géométrie, de la relation entre les deux (VD & DM) est simple, si un bref résumé pourrait être utile.
Matrices de Distance--c'est à dire, une matrice 2D montrant la distance entre un point et tous les autres points, sont un intermédiaire de la sortie au cours de kNN calcul (i.e., k-plus proche voisin, un algorithme d'apprentissage automatique, qui estime que la valeur du point de données basé sur la moyenne pondérée de la valeur de ses k plus proches voisins, la distance-sage, où k est un certain entier, généralement entre 3 et 5.)
kNN est conceptuellement très simple: chaque point de données dans votre formation est, par essence, un "poste" dans certains n-dimension de l'espace, de sorte que la prochaine étape est de calculer la distance entre chaque point et chaque autre point à l'aide de quelques distance métrique (par exemple, Euclidienne, Manhattan, etc.). Alors que la formation étape--c'est à dire, construcing de la matrice de distance--est simple, l'utiliser pour prédire la valeur de nouveaux points de données est pratiquement gênés par l'extraction de données--trouver le plus proche de 3 ou 4 points parmi plusieurs milliers ou plusieurs millions de éparpillés en à n dimensions de l'espace.
Deux structures de données sont couramment utilisés pour traiter de ce problème: kd-trees et Voroni décompositions (aka "Dirichlet tesselation").
Voronoï de décomposition (VD) est déterminée de façon unique par une matrice de distance--c'est à dire, il y a une correspondance 1:1; donc en effet c'est une représentation visuelle de la matrice de distance, mais encore une fois, ce n'est pas leur but, leur but principal est le stockage efficace des données utilisées pour kNN de prédiction basée sur.
Au-delà, si c'est une bonne idée de représenter une matrice de distance de cette manière dépend probablement la plupart de tous sur votre audience. De plus, la relation entre VD et l'antécédent matrice de distance ne sera pas intuitif. Mais ce n'en est pas incorrect--si quelqu'un sans aucune statistique de la formation voulais savoir si les deux populations avaient les mêmes distributions de probabilité et vous a montré une Q-Q plot, ils ne seraient probablement penser que vous n'avez pas engagé leur question. Donc, pour ceux qui savent ce qu'ils recherchent, un VD est un compact, précis et complet à la représentation d'un DM.
Alors, comment pensez-vous le faire?
Voronoï decomp est construit en sélectionnant (généralement au hasard) un sous-ensemble de points de l'intérieur de l'ensemble de la formation (ce nombre varie selon les circonstances, mais si nous avons eu 1 000 000 de points, puis 100 est un nombre raisonnable de ce sous-ensemble). Ces 100 points de données sont les centres de Voronoi ("VC").
L'idée de base de Voronoï decomp est que, plutôt que d'avoir à passer au crible les 1 000 000 de points de données pour trouver les voisins les plus proches, vous n'avez qu'à regarder ces 100, puis une fois que vous trouvez le plus proche de la VC, votre rechercher les voisins les plus proches est limité à seulement les points à l'intérieur de cette cellule de Voronoi. Ensuite, pour chaque point de données dans l'ensemble de la formation, de calculer la VC il est le plus proche. Enfin, pour chaque VC et de ses points, calculer l'enveloppe convexe--sur le plan conceptuel, juste à la limite extérieure formée par le fait que VC est attribué des points qui sont les plus éloignés de la VC. Cette enveloppe convexe autour de la Voronoi centre forme une "cellule de Voronoi." Un complet VD est le résultat de l'application de ces trois étapes pour chaque CR dans votre kit de formation. Cela vous donnera une parfaite pavage de la surface (Voir le schéma ci-dessous).
Pour calculer un VD dans R, utilisez le tripack paquet. La touche de fonction est " de voronoi.mosaïque", à laquelle vous venez de passer en coordonnées x et y, séparément, les données brutes, pas le DM--alors vous pouvez simplement passer de voronoi.mosaïque de 'complot'.
library(tripack)
plot(voronoi.mosaic(runif(100), runif(100), duplicate="remove"))