Suite

Tampons avec des distances variables autour d'un ensemble de points

Tampons avec des distances variables autour d'un ensemble de points


J'ai un ensemble de points dans un fichier de formes et j'ai une table avec un identifiant unique qui correspond à chaque point. Je veux faire un tampon autour de chaque point, selon le rayon que j'ai spécifié dans le tableau. Est-ce possible? J'ai joint le tableau aux points, mais d'après ce que je sais, l'outil tampon n'a pas une telle option ?


En utilisant l'outil de tampon, vous devriez pouvoir définir le tampon sur les valeurs d'un champ. En sélectionnant le bouton radio 'field' plutôt que l'option 'length' dans la section Distance, vous pouvez définir la largeur de la zone tampon à l'aide des valeurs du tableau.


Points de vente d'alcool et foyers de violence

La violence liée à l'alcool continue d'être un problème majeur de santé publique aux États-Unis. En particulier, il existe des preuves substantielles d'une association entre les débits d'alcool et les voies de fait. Cependant, étant donné que les relations géographiques spécifiques entre les points de vente d'alcool et les Distribution de la violence reste obscure, il est important d'identifier les liens spatiaux qui peuvent exister, renforçant les efforts de santé publique pour réduire à la fois la violence et la morbidité.

Méthodes

La présente étude utilise des données enregistrées par la police sur les agressions simples et aggravées à Cincinnati, Ohio. Les adresses des points de vente d'alcool pour Cincinnati, y compris tous les bars, les restaurants servant de l'alcool et les magasins d'alcool et de proximité hors site ont été obtenues auprès de la Division de contrôle des alcools de l'Ohio et géocodées pour analyse. Une combinaison d'analyse de proximité, d'approches de détection de clusters spatiaux et d'un système d'information géographique a été utilisée pour identifier les clusters de points de vente d'alcool et la répartition de la violence autour d'eux.

Résultats

Un bref examen des travaux empiriques relatifs à la densité et à la violence des points de vente d'alcool est fourni, notant que la majorité de cette littérature est de nature transversale et écologique, donnant une vue quelque peu aléatoire et agrégée de la façon dont les types de points de vente et les caractéristiques du quartier comme l'organisation sociale et l'utilisation des terres sont liées à la violence agressive. Les résultats de l'analyse statistique pour Cincinnati suggèrent que même si les points de vente d'alcool ne sont pas problématiques en soi, la violence violente a tendance à se concentrer autour des agglomérations de points de vente d'alcool. Cette relation spatiale varie selon la distance et est également liée aux caractéristiques de l'agglomération de sortie d'alcool. Plus précisément, les distributions spatialement denses de points de vente semblent être plus sujettes aux grappes de violences violentes que les agglomérations avec une densité de points de vente plus faible.

Conclusion

Avec une compréhension plus approfondie des relations spatiales entre les points de vente d'alcool et la répartition des agressions, les décideurs des zones urbaines peuvent prendre des décisions réglementaires plus éclairées concernant les licences d'alcool. En outre, cette recherche suggère que les responsables de la santé publique et les épidémiologistes doivent développer une meilleure compréhension de ce qui se passe réellement dans et autour des points de vente d'alcool, en déterminant quels facteurs (qu'ils soient liés au point de vente, au quartier ou à l'espace) contribuent à alimenter leur relation avec la violence et d'autres alcools. préjudice lié.


Contenu

En analyse spatiale, quatre problèmes majeurs interfèrent avec une estimation précise du paramètre statistique : le problème de limite, le problème d'échelle, le problème de motif (ou d'autocorrélation spatiale) et le problème d'unité de surface modifiable. [1] Le problème de frontière se produit à cause de la perte de voisins dans les analyses qui dépendent des valeurs des voisins. Alors que les phénomènes géographiques sont mesurés et analysés au sein d'une unité spécifique, des données spatiales identiques peuvent apparaître soit dispersées, soit regroupées en fonction de la frontière placée autour des données. Dans l'analyse avec des données ponctuelles, la dispersion est évaluée comme dépendante de la limite. Dans l'analyse avec des données de zone, les statistiques doivent être interprétées en fonction de la limite.

Dans la recherche géographique, deux types de zones sont pris en considération par rapport à la frontière : une zone entourée de limites naturelles fixes (par exemple, des côtes ou des cours d'eau), en dehors de laquelle les voisins n'existent pas, [2] ou une zone incluse dans un région plus vaste définie par des limites artificielles arbitraires (par exemple, une limite de pollution atmosphérique dans les études de modélisation ou une limite urbaine dans la migration de la population). [3] Dans une zone isolée par les limites naturelles, le processus spatial s'arrête aux limites. En revanche, si une zone d'étude est délimitée par des limites artificielles, le processus se poursuit au-delà de la zone.

Si un processus spatial dans une zone se produit au-delà d'une zone d'étude ou a une interaction avec des voisins en dehors des limites artificielles, l'approche la plus courante consiste à négliger l'influence des limites et à supposer que le processus se produit dans la zone interne. Cependant, une telle approche conduit à un problème important de mauvaise spécification du modèle. [4]

C'est-à-dire qu'à des fins de mesure ou d'administration, des limites géographiques sont tracées, mais les limites en elles-mêmes peuvent entraîner des schémas spatiaux différents dans les phénomènes géographiques. [5] Il a été rapporté que la différence dans la manière de tracer la frontière affecte de manière significative l'identification de la distribution spatiale et l'estimation des paramètres statistiques du processus spatial. [6] [7] [8] [9] La différence est largement basée sur le fait que les processus spatiaux sont généralement illimités ou flous, [10] mais les processus sont exprimés en données imposées dans des limites à des fins d'analyse. [11] Bien que le problème des limites ait été discuté en relation avec les limites artificielles et arbitraires, l'effet des limites se produit également en fonction des limites naturelles tant qu'il est ignoré que les propriétés des sites sur la limite naturelle tels que les cours d'eau sont susceptibles de différer de ceux des sites à l'intérieur des limites. [12]

Le problème des limites se pose non seulement en ce qui concerne les limites horizontales mais aussi les limites tracées verticalement selon les délimitations de hauteurs ou de profondeurs (Pineda 1993). Par exemple, la biodiversité telle que la densité des espèces de plantes et d'animaux est élevée près de la surface, donc si la hauteur ou la profondeur divisée de manière identique est utilisée comme unité spatiale, il est plus probable de trouver moins d'espèces végétales et animales que la hauteur ou la profondeur augmente.

En traçant une limite autour d'une zone d'étude, deux types de problèmes de mesure et d'analyse se posent. [7] Le premier est un effet de bord. Cet effet provient de l'ignorance des interdépendances qui se produisent en dehors de la région délimitée. Griffith [13] [8] et Griffith et Amrhein [14] ont mis en évidence des problèmes selon l'effet de bord. Un exemple typique est une influence transfrontalière telle que des emplois, des services et d'autres ressources transfrontaliers situés dans une commune voisine. [15]

Le deuxième est un effet de forme qui résulte de la forme artificielle délimitée par la frontière. Pour illustrer l'effet de la forme artificielle, l'analyse du motif de points tend à fournir des niveaux plus élevés de regroupement pour le même motif de points au sein d'une unité plus allongée. [7] De même, la forme peut influencer l'interaction et le flux entre les entités spatiales. [16] [17] [18] Par exemple, la forme peut affecter la mesure des flux origine-destination puisque ceux-ci sont souvent enregistrés lorsqu'ils franchissent une frontière artificielle. En raison de l'effet défini par la limite, les informations de forme et de zone sont utilisées pour estimer les distances de déplacement à partir d'enquêtes, [19] ou pour localiser des compteurs de trafic, des stations d'enquête sur les déplacements ou des systèmes de surveillance du trafic. [20] Dans la même perspective, Theobald (2001 extrait de [5] ) a soutenu que les mesures de l'étalement urbain devraient prendre en compte les interdépendances et les interactions avec les zones rurales voisines.

Dans l'analyse spatiale, le problème de la frontière a été discuté avec le problème de l'unité de surface modifiable (MAUP) dans la mesure où MAUP est associé à l'unité géographique arbitraire et l'unité est définie par la frontière. [21] À des fins administratives, les données pour les indicateurs de politique sont généralement agrégées au sein d'unités plus grandes (ou unités de dénombrement) telles que les secteurs de recensement, les districts scolaires, les municipalités et les comtés. Les unités artificielles servent à des fins de taxation et de prestation de services. Par exemple, les municipalités peuvent répondre efficacement aux besoins du public dans leurs juridictions. Cependant, dans de telles unités spatialement agrégées, les variations spatiales des variables sociales détaillées ne peuvent pas être identifiées. Le problème se pose lorsqu'on mesure le degré moyen d'une variable et sa distribution inégale dans l'espace. [5]

Plusieurs stratégies pour résoudre les problèmes de limites géographiques dans la mesure et l'analyse ont été proposées. [22] [23] Pour identifier l'efficacité des stratégies, Griffith a passé en revue les techniques traditionnelles qui ont été développées pour atténuer les effets de bord : [8] ignorer les effets, entreprendre une cartographie de tore, construction d'une zone de beurre empirique, construction d'un zone de beurre, extrapolation dans une zone tampon, utilisation d'un facteur de correction, etc. La première méthode (c'est-à-dire l'ignorance des effets de bord) suppose une surface infinie dans laquelle les effets de bord ne se produisent pas. En fait, cette approche a été utilisée par les théories géographiques traditionnelles (par exemple, la théorie des lieux centraux). Son principal défaut est que les phénomènes empiriques se produisent dans une zone finie, donc une surface infinie et homogène est irréaliste. [14] Les cinq approches restantes sont similaires en ce qu'elles ont tenté de produire une estimation des paramètres non biaisée, c'est-à-dire de fournir un moyen par lequel les effets de bord sont supprimés. [8] (Il a appelé ces solutions opérationnelles par opposition à solutions statistiques à discuter ci-dessous.) Plus précisément, les techniques visent une collecte de données au-delà des limites de la zone d'étude et s'adaptent à un modèle plus large, c'est-à-dire cartographier la zone ou délimiter la zone d'étude. [24] [23] Grâce à l'analyse de simulation, cependant, Griffith et Amrhein ont identifié l'insuffisance d'une telle technique de dépassement. [14] De plus, cette technique peut entraîner des problèmes liés aux statistiques à grande échelle, c'est-à-dire un sophisme écologique. En élargissant la limite de la zone d'étude, les variations à micro-échelle à l'intérieur de la limite peuvent être ignorées.

Comme alternatives aux solutions opérationnelles, Griffith a examiné trois techniques de correction (c. solutions statistiques) en supprimant le biais induit par les limites de l'inférence. [8] Ils sont (1) basés sur la théorie des moindres carrés généralisée, (2) utilisant des variables muettes et une structure de régression (comme moyen de créer une zone tampon), et (3) considérant le problème des limites comme un problème de valeurs manquantes. Cependant, ces techniques nécessitent des hypothèses assez strictes sur le processus d'intérêt. [25] Par exemple, la solution selon la théorie des moindres carrés généralisée utilise une modélisation de séries chronologiques qui nécessite une matrice de transformation arbitraire pour s'adapter aux dépendances multidirectionnelles et aux unités de frontières multiples trouvées dans les données géographiques. [13] Martin a également soutenu que certaines des hypothèses sous-jacentes des techniques statistiques sont irréalistes ou déraisonnablement strictes. [26] Par ailleurs, Griffith (1985) a lui aussi identifié l'infériorité des techniques par l'analyse de simulation. [27]

Comme particulièrement applicable en utilisant les technologies SIG, [28] [29] une solution possible pour traiter à la fois les effets de bord et de forme est une réestimation de l'espace ou du processus sous des réalisations aléatoires répétées de la frontière. Cette solution fournit une distribution expérimentale qui peut être soumise à des tests statistiques. [7] En tant que telle, cette stratégie examine la sensibilité du résultat de l'estimation en fonction des changements dans les hypothèses de limites. Avec les outils SIG, les limites peuvent être systématiquement manipulées. Les outils effectuent ensuite la mesure et l'analyse du processus spatial dans ces limites différenciées. En conséquence, une telle analyse de sensibilité permet d'évaluer la fiabilité et la robustesse des mesures basées sur le lieu définies dans des limites artificielles. [30] Dans l'intervalle, les changements dans les hypothèses de limite se réfèrent non seulement à la modification ou à l'inclinaison des angles de la limite, mais également à la différenciation entre la limite et les zones intérieures lors de l'examen et à la possibilité que la collecte de données isolée pointe à proximité de la limite. peut montrer de grandes variations.


Meilleur rapport qualité-prix : système Wi-Fi 6 maillé TP-Link Deco X20 AX1800

Technologie Wi-Fi 6 abordable

Pas de canal de backhaul dédié

TP-Link s'est récemment construit une réputation avec des routeurs Wi-Fi 6 étonnamment abordables, et le Deco X20 ne fait pas exception. Ce système maillé petit mais puissant représente un moyen vraiment abordable d'accéder à la technologie Wi-Fi 6 sans vider votre portefeuille.

Bien que le X20 n'offre pas tout à fait les mêmes performances ultra-rapides que les alternatives les plus chères de notre liste, il n'est pas en reste dans le département de la gamme, avec trois unités gérant facilement des maisons jusqu'à 5 800 pieds carrés. La prise en charge bi-bande AX1800 Wi-Fi 6 offre également une bande passante confortable de 1,8 Mbps, bien qu'il lui manque le canal de liaison supplémentaire de 5 GHz que l'on trouve sur les systèmes Wi-Fi maillés plus avancés. Cela signifie qu'il peut ne pas fonctionner aussi bien sur les réseaux domestiques occupés et très encombrés - ceux avec une douzaine d'appareils ou plus pour les jeux, les appels vidéo et le streaming en 4K - mais il devrait être plus que suffisant pour les besoins en ligne des petites familles.

Le Deco X20 est également un jeu d'enfant à installer, grâce à l'application Deco bien nommée de TP-Link, qui fournit suffisamment de conseils pour que même les utilisateurs de réseaux domestiques les plus inexpérimentés soient opérationnels en quelques minutes. Il comprend également la nouvelle suite de sécurité HomeCare de TP-Link, optimisée par Trend Micro, offrant des fonctionnalités anti-malware et des contrôles parentaux pour protéger votre réseau domestique contre les intrus et vos enfants loin des coins les plus sombres d'Internet. Chaque unité comprend deux ports Gigabit Ethernet, mais malheureusement, il n'y a pas de ports USB pour partager des périphériques de stockage externes.

Spécifications sans fil : 802.11ax | Sécurité: Soins à domicile, WPA3 | Norme/Vitesse : AX1800 | Bandes: Double bande | MU-MIMO : Oui | Formation de faisceaux : Oui | Ports filaires : 2


@ AnonSubmitter85 vous donne une bonne réponse, mais laissez-moi vous montrer comment le faire dans matlab, et cela peut peut-être être très facile à porter sur C :

D'abord je crée 256 échantillons en 500hz échantillonnés à 44100hz regardez comment j'accumule la phase et à la fin de la première boucle je mets la phase entre l'intervalle 0 et 2pi.

Nice passons maintenant à la deuxième boucle pour créer plus de 256 échantillons de 1000Hz et pour le faire en continu j'utilise la dernière phase :-), voici le code :

voici le tracé du code ci-dessus : :

C'est un peu étrange de voir autant de réponses mais aucune ne présente une réponse réelle en C ou n'explique comment et pourquoi le faire.

L'idée générale est de maintenir une phase qui est incrémenté par une taille de pas qui est calculée à partir de la fréquence et de la fréquence d'échantillonnage. De cette façon, vous n'obtiendrez jamais de discontinuité de phase.

En faisant cela, il faut être très prudent avec les erreurs d'arrondi accumulées dans les variables à virgule flottante car, alors que le relatif l'erreur d'arrondi reste pratiquement la même, quelle que soit la taille des nombres, le absolu l'erreur d'arrondi augmente en fonction de l'importance du nombre. (Il y a une explication approfondie et lourde dans l'article Ce que tout informaticien devrait savoir sur l'arithmétique à virgule flottante.)

Si vous continuez simplement à ajouter votre taille de pas à la phase, elle atteindra bientôt des magnitudes trop grandes, il faut donc la contrôler. Étant donné que nous avons affaire à une seule forme d'onde, nous pouvons limiter la phase entre 0,0 et 1,0 exclusif par enveloppement, ou modulo. Le moyen le plus simple et probablement le plus efficace de le faire est d'utiliser un entier non signé pour la phase, et laissez le compilateur C s'occuper des wraps. C est ennuyeux car beaucoup d'opérations arithmétiques ne sont pas définies, mais un bouclage d'entier non signé est défini comme nous le souhaitons, afin que nous puissions en profiter.

Le programme ci-dessous génère une forme d'onde sur la sortie standard en utilisant la technique décrite ci-dessus. La phase est conservée dans un entier non signé, incrémenté d'un autre entier calculé en fonction de la fréquence et de la fréquence d'échantillonnage demandées. Chaque fois que la phase dépasse la limite définie par la taille entière, elle se remet automatiquement à zéro.

La phase entière est ensuite mise à l'échelle à l'indice souhaité dans la fonction sinus. Cela pourrait facilement être modifié pour utiliser une table d'ondes ou une recherche par interpolation.

Certaines pièces sont inhabituellement compliquées en raison de la portabilité et de la compatibilité. Dans un cadre fixe, beaucoup de choses peuvent être simplifiées pour plus de lisibilité. De même, il y a des endroits où vous voudrez peut-être ajouter un meilleur arrondi.


Moyen le plus rapide de rendre des lignes avec AA, épaisseur variable dans DirectX

Je fais donc du développement DirectX, en utilisant SharpDX sous .NET pour être exact (mais les solutions API DirectX/C++ sont applicables). Je recherche le moyen le plus rapide de rendre des lignes dans une projection orthogonale (par exemple, simuler un dessin au trait 2D pour des applications scientifiques) à l'aide de DirectX.

Voici une capture d'écran des types de tracés que j'essaie de rendre :

Il n'est pas rare que ces sortes de tracés aient des lignes avec des millions de segments, d'épaisseur variable, avec ou sans anticrénelage par ligne (ou AA plein écran activé/désactivé). Je dois mettre à jour les sommets des lignes très fréquemment (par exemple 20 fois/seconde) et décharger autant que possible sur le GPU.

  1. Rendu logiciel, par ex. GDI+ en fait pas de mauvaises performances mais est évidemment lourd sur le CPU
  2. API Direct2D - plus lente que GDI, en particulier avec l'anticrénelage activé
  3. Direct3D10 utilise cette méthode pour émuler AA en utilisant les couleurs des sommets et la tessellation côté CPU. Aussi lent (je l'ai profilé et 80% du temps est passé à calculer les positions des sommets)

Pour la 3ème méthode, j'utilise Vertex Buffers pour envoyer une bande triangulaire au GPU et mettre à jour toutes les 200 ms avec de nouveaux sommets. J'obtiens un taux de rafraîchissement d'environ 5FPS pour 100 000 segments de ligne. J'ai besoin de millions idéalement!

Maintenant, je pense que le moyen le plus rapide serait de faire la tessellation sur le GPU, par ex. dans un Geometry Shader. Je pourrais envoyer les sommets sous forme de liste de lignes ou emballer dans une texture et décompresser dans un Geometry Shader pour créer les quads. Ou, envoyez simplement des points bruts à un pixel shader et implémentez le dessin Bresenham Line entièrement dans un pixel shader. Mon HLSL est rouillé, shader model 2 de 2006, donc je ne connais pas les trucs fous que les GPU modernes peuvent faire.

La question est donc : - quelqu'un a-t-il déjà fait cela et avez-vous des suggestions à essayer ? - Avez-vous des suggestions pour améliorer les performances grâce à une mise à jour rapide de la géométrie (par exemple, une nouvelle liste de sommets toutes les 20 ms) ?

MISE À JOUR 21 janvier

J'ai depuis implémenté la méthode (3) ci-dessus en utilisant des shaders Geometry utilisant LineStrip et Dynamic Vertex Buffers. Maintenant, j'obtiens 100FPS à 100 000 points et 10FPS à 1 000 000 de points. C'est une énorme amélioration, mais maintenant mon taux de remplissage et mon calcul sont limités, alors j'ai réfléchi à d'autres techniques/idées.


Comment l'océan affecte-t-il le climat et la météo sur terre ?

Cette illustration montre les principaux courants océaniques à travers le monde. Les courants océaniques agissent comme des courroies transporteuses d'eau chaude et froide, envoyant de la chaleur vers les régions polaires et aidant les régions tropicales à se rafraîchir, influençant ainsi à la fois la météo et le climat. Télécharger l'image (jpg, 105 Ko).

L'une des façons dont l'océan mondial affecte le temps et le climat est de jouer un rôle important dans le maintien de la chaleur de notre planète. La majorité du rayonnement solaire est absorbée par l'océan, en particulier dans les eaux tropicales autour de l'équateur, où l'océan agit comme un panneau solaire massif retenant la chaleur. Les zones terrestres absorbent également une partie de la lumière du soleil et l'atmosphère aide à retenir la chaleur qui, autrement, irradierait rapidement dans l'espace après le coucher du soleil.

L'océan ne se contente pas de stocker le rayonnement solaire, il contribue également à répartir la chaleur dans le monde entier. Lorsque les molécules d'eau sont chauffées, elles échangent librement avec l'air dans un processus appelé évaporation. L'eau de l'océan s'évapore constamment, augmentant la température et l'humidité de l'air environnant pour former des pluies et des tempêtes qui sont ensuite emportées par les alizés. En fait, presque toutes les pluies qui tombent sur terre commencent dans l'océan. Les tropiques sont particulièrement pluvieux car l'absorption de chaleur, et donc l'évaporation océanique, est la plus élevée dans cette zone.

En dehors des zones équatoriales de la Terre, les conditions météorologiques sont largement influencées par les courants océaniques. Les courants sont des mouvements d'eau océanique dans un flux continu, créés en grande partie par les vents de surface mais aussi en partie par les gradients de température et de salinité, la rotation de la Terre et les marées. Les principaux systèmes de courants circulent généralement dans le sens des aiguilles d'une montre dans l'hémisphère nord et dans le sens inverse des aiguilles d'une montre dans l'hémisphère sud, selon des schémas circulaires qui tracent souvent les côtes.

Les courants océaniques agissent un peu comme un tapis roulant, transportant l'eau chaude et les précipitations de l'équateur vers les pôles et l'eau froide des pôles vers les tropiques. Ainsi, les courants océaniques régulent le climat mondial, aidant à contrecarrer la répartition inégale du rayonnement solaire atteignant la surface de la Terre. Sans courants dans l'océan, les températures régionales seraient plus extrêmes et très chaudes à l'équateur et glaciales vers les pôles et beaucoup moins de terres terrestres seraient habitables.


Défis de la gestion d'équipes distantes

Comme il est de plus en plus courant pour les employés de travailler à distance, les défis liés à la gestion d'équipe à distance prennent de l'ampleur.

  • Manque le bon outil de communication
  • Embaucher les bonnes ressources
  • Programme de responsabilisation manquant
  • Respecter le temps de chacun
  • Pas de rôles et de tâches clairs
  • Définition des horaires
  • Suivi difficile des performances des employés
  • Manque de cohésion au sein de l'équipe
  • Faire en sorte que tout le monde se sente membre de l'équipe

Zones tampons avec des distances variables autour d'un ensemble de points - Systèmes d'information géographique

[ Recherche de voisin proche dans les grands espaces métriques

Département d'informatique

Compte tenu des données utilisateur, on veut souvent trouver des correspondances approximatives dans une grande base de données. Un bon exemple d'une telle tâche consiste à trouver des images similaires à une image donnée dans une grande collection d'images. Nous nous concentrons sur le cas important et techniquement difficile où chaque élément de données est de grande dimension, ou plus généralement, est représenté par un point dans un grand espace métrique 1 et les calculs de distance sont coûteux en temps de calcul.

Dans cet article, nous introduisons une structure de données pour résoudre ce problème appelée GNAT -- Arbre d'accès géométrique à proximité immédiate. Il est basé sur la philosophie selon laquelle la structure de données doit agir comme un modèle géométrique hiérarchique des données par opposition à une simple décomposition des données qui n'utilise pas sa géométrie intrinsèque. Au cours d'expériences, nous avons constaté que les GNAT surpassent les structures de données précédentes dans un certain nombre d'applications.

Mots-clés -- voisin proche, espace métrique, requêtes approximatives, exploration de données, domaines de Dirichlet, régions de Voronoi.

Le problème de trouver les voisins proches d'un point donné dans un grand ensemble de données a été bien étudié et a un certain nombre de bonnes solutions, si les données sont dans un espace simple (par exemple euclidien), de faible dimension. Cependant, si les données se trouvent dans un grand espace métrique 1, le problème devient beaucoup plus difficile. Considérez les exemples suivants comme un petit échantillon de l'endroit où ce problème se produit :

Recherche d'informations -- Recherche de phrases similaires à la requête d'un utilisateur à partir d'une base de données de phrases donnée.

Génétique -- Trouver des séquences d'ADN ou de protéines similaires dans l'une des nombreuses bases de données génétiques.

Reconnaissance du locuteur - Recherche de modèles vocaux similaires (par exemple, sous les transformées de Fourier) à partir d'une base de données de modèles vocaux.

Reconnaissance d'images -- Recherche d'images similaires (à l'aide de la métrique Hausdorff [HKR93]) à une image donnée à partir d'une grande bibliothèque d'images.

Compression vidéo -- Recherche des blocs d'image d'une image précédente qui sont similaires aux blocs d'une nouvelle image (à l'aide d'une simple métrique L 1 ou L 2, éventuellement après une transformation DCT) pour générer des vecteurs de mouvement en compression vidéo MPEG.

Exploration de données -- Trouver des correspondances de séries temporelles approximatives (par exemple, l'historique des stocks ou la température tout au long de l'année).

Tous les exemples ci-dessus s'intègrent dans le modèle de recherche de voisins proches dans un grand espace métrique. En particulier, les deux premiers exemples ci-dessus trouvent des voisins proches dans l'espace métrique des chaînes sous une fonction de distance d'édition. Les exemples de haut-parleur, de vidéo et éventuellement d'exploration de données trouvent des voisins proches dans un espace vectoriel de grande dimension sous la métrique L 1 ou L 2 (des métriques plus sophistiquées pourraient être imaginées). L'exemple de reconnaissance d'image ne s'intègre pas aussi bien dans l'une ou l'autre de ces classes, mais se qualifie toujours comme recherche de quasi-voisin dans un grand espace métrique.

Chaque type de données ci-dessus a un certain degré de corrélation dans sa distribution. Bien qu'il puisse être petit (c'est-à-dire que les données ressemblent à des vecteurs aléatoires), il doit être exploité pour obtenir de bonnes performances dans une recherche de voisins proches. Pour faire cela d'une manière indépendante de l'application, il faut que la structure de données capture la géométrie intrinsèque des données. Comme nous le verrons (Section 4), notre structure de données, le GNAT, capture la géométrie des collections de données telles que celles mentionnées ci-dessus en la décomposant hiérarchiquement en régions qui tentent de préserver la structure géométrique fondamentale.

Une très grande quantité de travail a été effectuée pour résoudre des cas spécifiques de problèmes de recherche de quasi-voisins. De nombreux articles ont été écrits concernant la recherche de vecteurs similaires (par exemple, des séries chronologiques et des données géographiques), du texte (fichiers et documents), des images, des sons (reconnaissance de mots), etc. problème 2 . Ces travaux se répartissent principalement en deux catégories. Dans une catégorie, nous supposons que les calculs de distance sont si coûteux que même un algorithme de recherche O ( n ) ou O ( n log n ) est acceptable tant qu'il réduit le nombre de calculs de distance. C'est le cas tant que la taille de la base de données est assez petite par rapport à la portée de la recherche [FS82] ou si le prétraitement n'est pas autorisé et que seules des distances précalculées arbitraires sont données [SW90].

L'autre catégorie de solutions est hiérarchique et a généralement un temps de requête O (log n ) étant donné une plage suffisamment petite (généralement trop petite pour être pratique). Ils sont de la forme suivante : L'espace est décomposé hiérarchiquement. Au nœud supérieur, un ou plusieurs points de données sont choisis. Ensuite, la distance entre chacun de ceux-ci et chacun des points restants est calculée. En fonction de ces distances, les points sont séparés en deux ou plusieurs branches différentes. Pour chaque branche, la structure est construite récursivement.

J. K. Uhlmann a présenté les bases de deux méthodes différentes, généralement décrites comme des arbres métriques [Uhl91]. L'une de ces méthodes, appelée par la suite vp-trees 3 , a été implémentée par P. N. Yianilos [Yia93]. La construction de base d'un arbre vp consiste à diviser l'espace en utilisant des coupes sphériques. Pour le construire, choisissez un point dans l'ensemble de données (c'est ce qu'on appelle le point de vue , d'où le nom vp -tree). Maintenant, considérons la sphère médiane centrée sur le point de vue avec un rayon tel que la moitié des points restants tombent à l'intérieur et la moitié tombent à l'extérieur. Pour chaque autre point, placez-le dans une branche s'il est à l'intérieur de la sphère et dans une autre branche s'il est à l'extérieur de la sphère. Maintenant, construisez récursivement les branches de niveau inférieur.

Cette approche a l'avantage de ne nécessiter qu'un seul calcul de distance par nœud et de créer automatiquement des arbres équilibrés. Cependant, il souffre de régions à l'intérieur de la sphère médiane et à l'extérieur de la sphère médiane étant très asymétriques, en particulier dans un espace de grande dimension. Étant donné que le volume augmente rapidement à mesure que le rayon d'une sphère augmente, l'extérieur de la sphère aura tendance à être très mince, étant donné qu'il y a autant de points à l'intérieur qu'à l'extérieur, ce qui détériore les performances de recherche. Dans notre travail, nous essayons d'éviter de telles asymétries. Bien que le facteur de branchement limité de 2 puisse également être considéré comme une faiblesse, nous avons mené des expériences avec des variations de degré plus élevé des arbres vp et avons trouvé peu d'amélioration des performances.

L'autre méthode, un arbre hyperplan généralisé (gh-tree), est construite comme suit. Au nœud supérieur, choisissez deux points. Ensuite, divisez les points restants en fonction de ceux dont ils sont les plus proches. Maintenant, construisez récursivement les deux branches. Cette méthode est une amélioration dans la mesure où elle est symétrique et la structure arborescente a toujours tendance à être bien équilibrée (en supposant une sélection suffisamment aléatoire des deux points). Cependant, il présente une faiblesse en ce sens qu'il nécessite deux calculs à chaque nœud et est limité à un facteur de branchement de deux.

Mais les œuvres les plus pertinentes sont aussi les plus anciennes. Burkhard et Keller ont suggéré plusieurs structures de données (et algorithmes) [BK73] pour une recherche approximative. Le premier est très similaire aux vp-trees sauf qu'il nécessite un nombre fini de valeurs de distance discrètes. Essentiellement, pour chaque point de vue, une branche distincte est attribuée pour chaque valeur de distance possible. Cette méthode, cependant, souffre du même problème d'asymétrie que les arbres vp. Les deux autres structures de données, qui sont les plus proches du GNAT, divisent l'espace en plusieurs boules, stockant les rayons et les centres. Plus précisément, divisez les points de données en groupes en utilisant une méthode (cela a été laissé en paramètre). Choisissez un représentant de chaque groupe et appelez-le le centre du groupe. Ensuite, calculez le rayon (la distance maximale à un autre point) du centre pour chaque groupe et l'élagage est effectué en fonction de ces rayons. La récursivité est brièvement évoquée mais non analysée. La troisième méthode, une amélioration de la seconde, nécessite en outre que le diamètre (la distance maximale entre deux points quelconques) des points dans n'importe quel groupe soit inférieur à une constante, k , et le groupe est alors appelé une clique. Dans ce cas, un sous-ensemble minimal de l'ensemble de toutes les cliques maximales est utilisé comme ensemble de tous les groupes. Ces deux schémas agissent comme des modèles raisonnablement bons de l'espace de données qu'ils stockent et s'ils sont étendus à une structure hiérarchique, ils ont un facteur de branchement arbitraire. Cependant, ils présentent plusieurs faiblesses. Premièrement, ils ne fonctionnent pas bien avec des données non homogènes, car nous pourrions facilement nous retrouver avec un grand nombre de cliques contenant un seul point et plusieurs cliques contenant de très nombreux points. De plus, les calculs de distance ne sont pas pleinement exploités dans la mesure où la distance au centre d'une clique n'est pas utilisée pour élaguer d'autres cliques. Enfin, bien que nous ne nous concentrions pas sur le coût du prétraitement dans cet article, ce coût a été signalé comme étant extrêmement élevé dans la troisième méthode.

K. Fukunaga et P. Narendra ont élaboré un schéma très similaire, qui nécessite plus qu'un simple espace métrique, pour créer une structure arborescente avec un facteur de branchement arbitraire en 1975 [FN75] comme suit. Divisez les points de données en k groupes. (La manière dont cela est fait est laissée en paramètre de la structure, mais dans les tests, ils ont utilisé un algorithme de clustering qui nécessite plus qu'un simple espace métrique.) Ensuite, calculez la moyenne 4 de chaque groupe (encore une fois un écart par rapport à un espace métrique) et la distance la plus éloignée de cette moyenne à un point du groupe. Ensuite, créez récursivement la structure pour chaque groupe. Bien que cette méthode ait tendance à avoir de belles propriétés symétriques (étant donné un algorithme de clustering raisonnable) qui reflètent l'espace et qu'elle ait un facteur de branchement arbitraire, elle présente plusieurs faiblesses. First, it relies on more than just a metric space second, it requires many distance computations at each node and does not use them fully and third, it does not deal effectively with balancing.

In this paper we present GNAT's which can be viewed as both a generalization of Fukunaga's method and a generalization of gh-trees. GNAT's provide good query performance by exploiting the geometry of the data. Unfortunately, while query time is reduced, the build time of the data structure is sharply increased. However, if the application is query dominant (or even if there are roughly as many queries as data points) the relative cost of building a GNAT becomes negligible. In tests, we find that GNAT's almost always perform better than both vp-trees and gh-trees, and scale better.

A metric space is a set X with a distance function d : X 2 -> R such that: forall x, y, z in X ,

1. d ( x, y ) >= 0 and d ( x, y ) = 0 iff x = y . (Positivity)

2. d ( x, y ) = d ( y, x ). (Symmetry)

3. d ( x, y ) + d ( y, z ) >= d ( x, z ). (Triangle Inequality)

Since we are dealing with arbitrary metric spaces, we assume the following model of computation: there is a large number of data points and a ``black box'' to compute distance between them.

The first important observation is that it is impossible to deal efficiently with all metric spaces. In particular, consider the metric space where the distance between two points is 0 if they are the same and 1 if they are different. Then our only option in finding a query point is a linear search and no fancy data structure will save us. In fact, the more any space resembles such a metric space, the more difficult it will be to search.

Since visualizing high-dimensional data is difficult we look at some simple measures to help us understand the geometry of a given data space. A particularly useful measurement is the distribution of distances between points in the space. While the scales of these distributions vary greatly, we can compare them by considering at what range we would be interested in finding near neighbors. In each of the graphs of the distributions that follow, we have made 5000 random distance calculations in the data space and distributed them into a number of buckets. The y axis represents the number of distances which fell into that bucket divided by the size of the bucket.

Dim 50 Dim 20 Distance 25 20 15 10 5 0 0.4 0.35 0.3 0.25 0.2 0.15 0.1 0.05 0

Figure 1: Distribution of distances under L 1 metric in 20 and 50 dimensions.

Dim 50 Dim 20 Distance 4 3.5 3 2.5 2 1.5 1 0.5 0 1.8 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 0

Figure 2: Distribution of distances under L 2 metric in 20 and 50 dimensions.

50 by 50 16 by 16 Distance 8000 6000 4000 2000 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0

Figure 3: Distribution of distances under L 2 metric in 16 by 16 and 50 by 50 images.

Correlated data has somewhat different properties and tends to have a much flatter distance distribution. For example, taking random 16 by 16 or 50 by 50 blocks from an image, then treating them as 256 or 2500 dimensional vectors respectively and taking the L 2 distances between them creates a distribution with two major maxima (Figure 3 ). The first maximum, near 0, indicates a great deal of clustering in the data since small distances are so probable the second major maximum is one that is common to all large metric spaces we will investigate, which indicates that average distances are fairly likely.

Edit InsDel Distance 100 90 80 70 60 50 40 30 20 10 0 0.09 0.08 0.07 0.06 0.05 0.04 0.03 0.02 0.01 0

Figure 4: Distribution of edit distances in lines of text.

As another example, consider taking lines of text from a large text document (``A Tale of Two Cities'' in this example) and using a simple edit distance function. We considered two different such functions. Both counted the minimum number of operations needed to get from one line to the other. The first distance function, InsDel allowed only inserts and deletes of single characters as operations. The second, Edit , added the operation of replacing one character and is consistent with what is usually used to compute distance between strings. Both distance functions have the unfortunate property of requiring O ( n 2 ) steps to compute where n is the number of characters, hence minimizing such calculations is very important. When we map out their distributions (Figure 4 ), both turn out to be considerably less correlated than the images and look roughly like the uniformly chosen vectors (Figures 1 and 2 ).

Our goal when designing GNAT's was to have a data structure that reflected the intrinsic geometry of the underlying data. More specifically, the top node of our hierarchical structure should give us a very brief summary of the data as a metric space, and as we progress down the hierarchy we get a more and more accurate sense of the geometry of the data. This is achieved as a hierarchical, Dirichlet-domain 6 based, structure. Given a number of points, the Dirichlet domain of one of those points is all possible points in the space which are closest to that point. At the top node, several distinguished split points are chosen and the space is broken up into Dirichlet domains. The remaining points are classified into groups depending on what Dirichlet domain they fall in. Each group is then structured recursively. A simple example of such a structure is illustrated in Figure 5 . The heavier points represent the split points of the top node and finer points are split points of the subnodes. The thick lines represent the boundaries of the regions of space that belong to the top level split points and the thin lines are those of the low level split points.

Another goal of GNAT's is to make full use of the distances we calculate (at least within one node). Therefore, instead of relying on the Dirichlet structure to perform our search, we also prune branches by storing the ranges of distance values from split points to the data points associated with other split points during the build. Then, if query points fall outside these ranges by more than the range of the search, we can prune the split point and everything under it from the search. For example, suppose we know that all points in the region associated with split point q have distance between 1 and 2 from split point p and we want to search for points within a radius of 0.5 from a query point x . Then if x is more than 2.5 from p , we can apply the triangle inequality (to the points x , y , and p where y is any point in the region of q ) and safely prune the node associated with q .

4.1 A Simplified Algorithm

The basic GNAT construction is as follows:

1. Choose k split points, p 1 , . p k from the dataset we wish to index (this number, known as the degree can vary throughout the tree, see Section 4.3 ). They are chosen randomly but we make sure they are fairly far apart (see Section 4.2 ).

3. For each pair of split points, ( p i , p j ), calculate the range ( p i , p j ) = [ min ij , max ij ], a minimum and a maximum of Dist ( p i , x ) where x in D j or x = p j .

4. Recursively build the tree for each of D i 's, possibly using a different degree (see Section 4.2 ).

A search in a GNAT is performed recursively as follows:

1. Assume we want to find all points with distance <= r to a given point x . Let P represent the set of split points of the current node (initially the top node of the GNAT) which possibly contain a near neighbor of x . Initially P contains all the split points of the current node.

2. Pick a point p in P (never the same one twice). Compute the distance Dist ( x, p ). If it is less than or equal to r add p to the result.

3. For all points q in P , if [ Dist ( x, p ) - r, Dist ( x, p ) + r ] range ( p, q ) is empty, then remove q from P .

We can do this for the following reason. Let y be any point in the region associated with q . If Dist ( y, p ) < Dist ( x, p ) - r , then, by the triangle inequality, we have Dist ( x, y ) + Dist ( y, p ) >= Dist ( x, p ) and hence Dist ( x, y ) > r . Alternatively, if Dist ( y, p ) > Dist ( x, p ) + r , we can use the triangle inequality, Dist ( y, x ) + Dist ( x, p ) >= Dist ( y, p ) to deduce Dist ( x, y ) > r . y cannot fall into the range [ Dist ( x, p ) - r, Dist ( x, p ) + r ] because then range ( p, q ) would intersect it.

4. Repeat steps 2 and 3 until all remaining points in P have been tried.

5. For all remaining p i in P , recursively search D i .

4.2 Selecting Split Points

One of the issues we had to deal with was the selection of split points (step 1 in the construction). We wanted split points to be more or less random, since this way they are likely to be near the centers of clusters. However, we did not want the split points to bunch up, since if they did, distance calculations from them would not have as much information content (distances measured from one member of a bunch would be similar to those of another) and they would not model the geometry of the data well. Furthermore, if several split points were in the same cluster, they would likely divide the cluster at too high a level.

The strategy we settled on is to sample about 3 times the number of split points we wanted, and then pick those that were the farthest apart (according to a greedy algorithm). The number 3 was arrived at empirically. More specifically this is done as follows:

Pick one of the sample points at random. Then pick the sample point which is farthest away from this one. Then pick the sample point which is the farthest from these two (by farthest we mean that the minimum distance from the two is the greatest). Then pick the one farthest from these three. And so on, until there as many split points as desired. A simple dynamic programming type of algorithm can do this in O ( nm ) time where n is the number of sample points and m is the eventual number of split points.

4.3 Choosing the Degree of a Node and Balancing the Tree

For out initial experiments we chose a degree and kept it constant over all the nodes in a tree. This worked reasonably well with uncorrelated data. However, for correlated data, it sometimes unbalanced the tree substantially. Attempts to balance the size of branches (by weighting distances to split points) tended to harm performance more than they helped. So we considered ``balancing'' the tree by assigning higher degrees to those nodes that contained too many data points. This is done as follows:

The top node is allocated a degree k . Then each of its children is allocated a degree proportional to the number of data points it contains (with a certain maximum and minimum) so that the average is the global degree of k . This process works recursively so that the children of each node have average degree k (ignoring the maximum and minimum degrees). The minimum used in tests was 2 (or the number of points contained, if that was smaller) and the maximum was 5 k or 200, whichever was smaller.

Unfortunately, GNAT's are sufficiently complex that they are unwieldy to formal analysis. Therefore the results we present here are weak and limited. We use the following notation:

N -- the number of data points.

n -- the number of nodes. Empty nodes are not counted.

s -- the maximum size (space requirement) of a data point.

d -- the maximum degree of a node.

k -- the average degree (equal to N=n ).

k 2 -- the second moment (the average of the squares) of the degree.

l -- the average depth of a point.

s -- the amount of memory needed to store a data point.

We produce the following simple results:

Space (memory) An GNAT takes O ( Nk 2 + Ns ) space. In practice, k 2 does not turn out to be much higher than k 2 .

Preprocessing Time This is the main disadvantage of GNAT's as compared to other data structures. In a perfect scenario, when the tree is completely balanced, we get a preprocessing time of O ( Nk log k N ) distance calculations which is a factor of k= log k more than binary trees requiring only one distance calculation per node. In the real world, this can be substantially more due to the fluctuating degrees and can be bound only by O ( Nld ) distance calculations. In tests, l tended to be very close to, though slightly more than log k N and certainly not all nodes were of degree d so the real preprocessing time lies somewhere between those two extremes.

Query Time This is the most important and most difficult performance attribute to evaluate. While there have been upper bounds in previous works, they have either been restricted to particular domains or have made assumptions which make them of no practical use. As a result of this and the added complexity of GNAT's we rely on the experimental results (see Section 6 ).

The system used for testing GNAT's and other data structures underwent several major revisions, being implemented in Mathematica, then C, and finally C++. In each of these versions, the benefit of having the data structure rely only on the distance function was a tremendous advantage.

In the final version, the code to handle vectors and text (including generation and/or loading and distance functions) is under a hundred lines each. The code for images is just over a hundred lines, mainly to deal with the file format.

The data types (metric spaces) with which the system works are as follows:

Vectors -- The simplest of the data types, these N-dimensional vectors from a hypercube of side 1 and can be chosen in two different ways -- chosen uniformly from R n , and chosen uniformly from R 2 and then mapped into R n using a simple continuous function. Both L 1 and L 2 metrics are supported.

Lines of Text -- While the vectors and images both fit into vector spaces, lines of text do not. These were lines taken from a text document. Two different documents were attempted - all five acts of ``Hamlet'', which unfortunately totaled only about 4000 lines, and Dickens' ``A Tale of Two Cities''. For Dickens, this was a less meaningful test since taking lines out of a novel is not particularly reasonable (sentences would have been better but they were too long to deal with). Both texts were processed before being read by normalizing whitespace and getting rid of very short lines. Additionally, in Hamlet, speaker names were stripped. Results for these two were not as similar as one might expect (see Section 6 ). Both the InsDel and the Edit distance functions (see Section 3 ) were implemented and tested.

5.2 Data Structures Supported

The final implementation supports a number of data structures including GNAT's 7 .

VP-Trees -- See Section 2 for a brief description. In the tests presented here, we did not use any sampling technique to chose vantage points since we could not be sure that we would do it identically to [Yia93]. However, some limited tests with sampling indicated that savings were in the 10% range for images and were negligible for text and random vectors.

VP k -Trees A generalization of VP-Trees which differs in that at each node, instead of the remaining data points being split into two halves based on their distance from the vantage point, they are split into k sections of equal size (also based on distance from the vantage point). These were found to perform very similarly to vp-trees (sometimes a little better even) but there was not a sufficiently large difference to warrant further investigation.

GH-Trees -- See Section 2 for a brief description. They are essentially GNAT's of constant degree 2 without the sampling for split points and degree variation throughout the tree. Since they perform worse than GNAT's of degree 2, not many experiments were performed.

OPT-Trees -- These use a much smaller number of distance computations for queries than any other structure but they lose out by having far more costly other computations (even superlinear in the number of data points). The idea here is to pick a number of vantage points. Measure the distances from each to all the other points and store these in a table. When a query comes along, measure its distance to the first vantage point and based on that weed out all of the impossible data points. Then take the next vantage point and do the same. Continue until no more data points are pruned. Then, check each of the remaining ones individually. Up to the choice of vantage points this gives more or less the optimal performance, in terms of distance calculations. This structure can serve as a lower bound for distance calculations but is not a realistic goal to shoot for if one wants a scalable structure.

GNAT's -- This is the main data structure of this paper, described in Section 4 .

For each of these, we check how many distance calculations are used to both build the structure and perform queries.

Given the flexibility of the testbed system, the number of possible interesting tests to run exceeded by far the number which could be run (in a reasonable amount of time) which in turn exceeded by far the number of test results presented in this section. Note that the benefits of GNAT's varied and in this section we try to present the range of results that were obtained.

Also, while opt-tree plots are in some of the graphs, it is important to keep in mind that these structures are only efficient in terms of distance calculations but are very inefficient otherwise. They are provided just to serve as a lower bound.

opt-tree GNAT 100 GNAT 50 GNAT 20 GNAT 10 vp 4 -tree vp 2 -tree GNAT 2 gh-tree Query Range 0.5 0.4 0.3 0.2 0.1 0 30 25 20 15 10 5 0

Figure 6: Varying Query Range for 3000 Vectors

opt-tree GNAT 100 GNAT 50 GNAT 20 GNAT 10 vp 4 -tree vp 2 -tree GNAT 2 gh-tree Query Range 0.5 0.4 0.3 0.2 0.1 0 20 18 16 14 12 10 8 6 4 2 0

Figure 7: Varying Query Range for 20000 Vectors

A number of tests were performed on random vectors. The dimension was set at 50 and uniformly chosen vectors were produced and the L 2 metric was used.. The range was varied and a number of different data structures were tested. The number of data points was 3000 (Figure 6 ) in one test and 20000 (Figure 7 ) in another. The number of test queries used in every case was 100.

The first thing to note is how difficult it actually is to perform these searches. All of the data structures seemed to struggle with ranges above 0.3 (reasonable queries could easily have ranges considerably above 0.5), looking at more than 50% of the data points in many cases. This is caused by the low information content of the distance calculations since they tend to return very similar numbers (Figure 2 ).

GNAT 100 GNAT 50 GNAT 20 GNAT 10 vp 2 -tree Query Range 10 9 8 7 6 5 4 3 2 20 18 16 14 12 10 8 6 4 2 0

Figure 8: Varying Query Range for 3000 Lines of Hamlet Using the InsDel Distance

GNAT 100 GNAT 50 GNAT 20 GNAT 10 vp 2 -tree Query Range 10 8 6 4 2 0 9 8 7 6 5 4 3 2 1 0

Figure 9: Varying Query Range for 10000 Lines of Dickens Using the Edit Distance

We ran a number of experiments with text with varied success. When testing 3000 lines of Hamlet using the InsDel distance, speedups above vp-trees were in the factor of 2 range (Figure 8 ). Testing on 10000 lines of ``A Tale of Two Cities'' with the Edit distance yielded much more dramatic yet varied speedups, ranging from around 50% with a query range of 10 to more than a factor of 6 with a range of 2 (Figure 9 ).

The performance of GNAT's versus vp-trees on images varied greatly but unfortunately they were not nearly as dramatic as the results for random vectors and text. For example, for 16 by 16 block images and the L 2 metric, the higher degree GNAT's gave only about 15% to 25% improvement over vp-trees (Figure 10 ). When using 50 by 50 blocks, results were a little better, with improvements in the 15% to 35% range for ranges above 200. This is a clear indication that more work needs to be done to deal with clustered data. (Figure 11 ).

In working with large metric spaces, we have proved our intuition from low-dimensional spaces wrong in many ways. In many cases explored in this paper the data lies in a very large metric space whose only easily recognizable and readily usable structure is the distance between its points. In other words, the space is so large that it is meaningless to consider and use its geometry and one should concentrate on the intrinsic geometry of the actual set of data points.

Consequently, it is important to exploit the constraints of the distribution of data rather than rely on those of the whole space. Therefore, GNAT's try to model the data they are indexing. There are several important issues involved in doing this.

First, does one break up the space by occupation or by population? In other words, if the data is composed of a large cluster and a few outliers, should the top node assign one branch for the cluster and a few branches for the outliers or should it split the cluster immediately and not worry about the outliers until later? In GNAT'swe decided to compromise by first sampling (the by-population approach) and then by picking out the points that were far apart (the by-occupation approach) when choosing split points. The current method of selecting points that are far apart can become asymmetric and some pathological behavior was observed (though it didn't impact query performance much). This remains a problem for future work.

A second issue is how to handle balancing. In our experiments, we found that good balance was not crucial to the performance of the structure. We attempted to improve the structure by using ``weighted'' Dirichlet domains but these tended to decrease performance rather than improving it. (They did reduce build time though.) Intuitively, when the tree structure is altered so that it is balanced rather than so it reflects the geometry of the space, searches tend to descend down all branches. As a result we decided to keep the tree depth from varying too much by adjusting the degrees of the nodes.

For future work, we are considering new methods of building the tree. Bottom-up constructions could lead to very good query performance but their O ( n 2 ) construction cost will not scale well. Consequently, we are considering schemes where a top-down construction is used but then is iteratively improved until it converges to a bottom-up type construction.

Another important research direction is to begin to use approximate distance metrics. For example, in order to compute near neighbors in text using the edit distance (an expensive computation), we can first use the q -gram distance [Ukk92] (a relatively fast computation) to narrow the search quickly and then apply proper edit distance to complete the search. The key is that q -gram distance is a lower bound for edit distance. Similarly, we could linearly project down a very high-dimensional space (such as 50 by 50 pixel images) to a somewhat lower dimensional space (e.g. by averaging together 2 by 2 pixel blocks) and use that as an approximation ( L 2 distance in the projection is a lower bound for L 2 distance in the original space). All of these techniques, of course, rely on special knowledge of the metric space to construct the approximations. However, given the approximations, a general method could be applied.

I thank Prof. Michael Brin (my father), Prof. Hector Garcia-Molina, Luis Gravano, and Edouard Bugnion for helpful discussions and for listening to my endless ramblings.

[BFR + 93] E. Bugnion, S. Fei, T. Roos, P. Widmayer, and F. Widmer. A spatial index for approximate multiple string matching. In Proc. First South American Workshop on String Processing, Belo Horizonte, Brazil , September 1993.

[BK73] W. A. Burkhard and R. M. Keller. Some approaches to best-match file searching. Communications of the ACM , 16(4), April 1973.

[FN75] K. Fukunaga and P. M. Narendra. A branch and bound algorithm for computing k -nearest neighbors. IEEE Trans. Calcul. , C-24:750--753, 1975.

[HKR93] Huttenlocher, Klanderman, and Rucklidge. Comparing images using the hausdorff distance. IEEE Transactions on Pattern Analysis and Machine Intelligence , 15, 1993.

[SW90] Dennis Shasha and Tsong-Li Wang. New techniques for best-match retrieval. ACM Transactions on Information Systems. , 8(2):140, 1990.

[Uhl91] Uhlmann. Satisfying general proximity / similarity queries with metric trees. Information Processing Letters , 40, 1991.

[Ukk92] Ukkonen. Approximate string matching with q-grams and maximal matches. Theoretical Computer Science , 92, 1992.

[Yia93] Yianilos. Data structures and algorithms for nearest neighbor search in general metric spaces. In ACM- SIAM Symposium on Discrete Algorithms (A Conference on Theoretical and Experimental Analysis of Discrete Algorithms) , 1993.

Figure 10: Performance for 3000 16 by 16 images

GNAT 100 GNAT 50 GNAT 20 GNAT 10 vp 2 -tree Query Range 500 450 400 350 300 250 200 150 100 50 0 7 6 5 4 3 2 1 0


Conclusion

I cannot think of a concise way to close this document, as the story of SoundJack and similar platforms is going to continue to unfold as more and more musicians start to use them. We will continue to update this document and cover more of the advanced features, both currently implemented and planned. However, for now, just go start to use it. See what you can do. Reestablish the ability to make music in real time in your daily life. Share your results. Inspire others to do the same. Aller.


Voir la vidéo: Distance dun Point à un Plan