stringtranslate.com

Búsqueda de vecino más cercano

La búsqueda de vecino más cercano ( NNS ), como forma de búsqueda de proximidad , es el problema de optimización de encontrar el punto en un conjunto dado que sea más cercano (o más similar) a un punto determinado. La cercanía se expresa típicamente en términos de una función de disimilitud: cuanto menos similares sean los objetos, mayores serán los valores de la función.

Formalmente, el problema de búsqueda del vecino más cercano (NN) se define de la siguiente manera: dado un conjunto S de puntos en un espacio M y un punto de consulta q  ∈  M , encuentre el punto más cercano en S a q . Donald Knuth en vol. 3 de The Art of Computer Programming (1973) lo llamó el problema de la oficina de correos , refiriéndose a una aplicación de asignar a una residencia la oficina de correos más cercana. Una generalización directa de este problema es una búsqueda k -NN, donde necesitamos encontrar los k puntos más cercanos.

Lo más común es que M sea un espacio métrico y la disimilitud se exprese como una métrica de distancia , que es simétrica y satisface la desigualdad del triángulo . Aún más común, se considera que M es el espacio vectorial d -dimensional donde la disimilitud se mide utilizando la distancia euclidiana , la distancia de Manhattan u otra métrica de distancia . Sin embargo, la función de disimilitud puede ser arbitraria. Un ejemplo es la divergencia asimétrica de Bregman , para la cual la desigualdad del triángulo no se cumple. [1]

Aplicaciones

El problema de búsqueda del vecino más cercano surge en numerosos campos de aplicación, entre ellos:

Métodos

Se han propuesto varias soluciones al problema de las NNS. La calidad y utilidad de los algoritmos están determinadas por la complejidad temporal de las consultas, así como por la complejidad espacial de cualquier estructura de datos de búsqueda que deba mantenerse. La observación informal generalmente conocida como la maldición de la dimensionalidad establece que no existe una solución exacta de propósito general para NNS en el espacio euclidiano de alta dimensión utilizando preprocesamiento polinómico y tiempo de búsqueda polilogarítmico.

Métodos exactos

búsqueda lineal

La solución más sencilla al problema NNS es calcular la distancia desde el punto de consulta a todos los demás puntos de la base de datos, realizando un seguimiento de lo "mejor hasta ahora". Este algoritmo, a veces denominado enfoque ingenuo, tiene un tiempo de ejecución de O ( dN ), donde N es la cardinalidad de S y d es la dimensionalidad de S. No hay estructuras de datos de búsqueda que mantener, por lo que la búsqueda lineal no tiene complejidad espacial más allá del almacenamiento de la base de datos. La búsqueda ingenua puede, en promedio, superar los enfoques de partición de espacio en espacios de dimensiones superiores. [5]

La distancia absoluta no es necesaria para comparar distancias, sólo la distancia relativa. En los sistemas de coordenadas geométricas, el cálculo de la distancia se puede acelerar considerablemente omitiendo el cálculo de la raíz cuadrada del cálculo de la distancia entre dos coordenadas. La comparación de distancias seguirá dando resultados idénticos.

partición del espacio

Desde la década de 1970, se ha aplicado al problema la metodología de rama y encuadernación . En el caso del espacio euclidiano, este enfoque abarca el índice espacial o métodos de acceso espacial. Se han desarrollado varios métodos de partición del espacio para resolver el problema NNS. Quizás el más simple sea el árbol kd , que biseca iterativamente el espacio de búsqueda en dos regiones que contienen la mitad de los puntos de la región principal. Las consultas se realizan atravesando el árbol desde la raíz hasta una hoja evaluando el punto de consulta en cada división. Dependiendo de la distancia especificada en la consulta, es posible que también sea necesario evaluar las ramas vecinas que puedan contener visitas. Para un tiempo de consulta de dimensión constante, la complejidad promedio es O (log  N ) [6] en el caso de puntos distribuidos aleatoriamente, la complejidad en el peor de los casos es O ( kN ^(1-1/ k )) [7] Alternativamente, los datos del árbol R La estructura fue diseñada para admitir la búsqueda del vecino más cercano en un contexto dinámico, ya que tiene algoritmos eficientes para inserciones y eliminaciones como el árbol R* . [8] Los árboles R pueden producir vecinos más cercanos no sólo para distancias euclidianas, sino que también pueden usarse con otras distancias.

En el caso del espacio métrico general, el enfoque de ramificación y límite se conoce como enfoque de árbol métrico . Ejemplos particulares incluyen los métodos vp-tree y BK-tree .

Utilizando un conjunto de puntos tomados de un espacio tridimensional y colocados en un árbol BSP , y dado un punto de consulta tomado del mismo espacio, se proporciona una posible solución al problema de encontrar el punto de la nube de puntos más cercano al punto de consulta. en la siguiente descripción de un algoritmo.

(Estrictamente hablando, tal punto puede no existir, porque puede no ser único. Pero en la práctica, generalmente solo nos preocupamos por encontrar cualquiera del subconjunto de todos los puntos de la nube de puntos que existen a la distancia más corta a un punto de consulta determinado. ) La idea es, para cada ramificación del árbol, adivinar que el punto más cercano en la nube reside en el medio espacio que contiene el punto de consulta. Puede que este no sea el caso, pero es una buena heurística. Después de haber pasado por todos los problemas de forma recursiva para resolver el problema del medio espacio adivinado, ahora compare la distancia devuelta por este resultado con la distancia más corta desde el punto de consulta hasta el plano de partición. Esta última distancia es la que existe entre el punto de consulta y el punto más cercano posible que pueda existir en el semiespacio no buscado. Si esta distancia es mayor que la devuelta en el resultado anterior, entonces claramente no hay necesidad de buscar en el otro medio espacio. Si existe tal necesidad, entonces debe tomarse la molestia de resolver el problema para la otra mitad del espacio, luego comparar su resultado con el resultado anterior y luego devolver el resultado correcto. El rendimiento de este algoritmo está más cerca del tiempo logarítmico que del tiempo lineal cuando el punto de consulta está cerca de la nube, porque a medida que la distancia entre el punto de consulta y el punto de la nube de puntos más cercano se acerca a cero, el algoritmo solo necesita realizar una búsqueda usando el punto de consulta como clave para obtener el resultado correcto.

Métodos de aproximación

Un algoritmo de búsqueda de vecino más cercano aproximado puede devolver puntos cuya distancia desde la consulta es, como máximo, la distancia desde la consulta hasta sus puntos más cercanos. El atractivo de este enfoque es que, en muchos casos, un vecino más cercano aproximado es casi tan bueno como el exacto. En particular, si la medida de la distancia captura con precisión la noción de calidad del usuario, entonces las pequeñas diferencias en la distancia no deberían importar. [9]

Búsqueda codiciosa en gráficos de vecindarios de proximidad

Los métodos de gráficos de proximidad (como los gráficos de mundos pequeños navegables [10] y HNSW [11] [12] ) se consideran el estado actual del arte para la búsqueda aproximada de vecinos más cercanos.

Los métodos se basan en el recorrido codicioso en gráficos de vecindad de proximidad en los que cada punto está asociado de forma única con el vértice . La búsqueda de los vecinos más cercanos a una consulta q en el conjunto S toma la forma de búsqueda del vértice en el gráfico . El algoritmo básico (búsqueda codiciosa) funciona de la siguiente manera: la búsqueda comienza desde un vértice de punto de entrada calculando las distancias desde la consulta q a cada vértice de su vecindad , y luego encuentra un vértice con el valor de distancia mínimo. Si el valor de distancia entre la consulta y el vértice seleccionado es menor que el valor entre la consulta y el elemento actual, entonces el algoritmo se mueve al vértice seleccionado y se convierte en un nuevo punto de entrada. El algoritmo se detiene cuando alcanza un mínimo local: un vértice cuya vecindad no contiene un vértice que esté más cerca de la consulta que el propio vértice.

La idea de los gráficos de vecindad de proximidad se explotó en múltiples publicaciones, incluido el artículo fundamental de Arya y Mount, [13] en el sistema VoroNet para el avión, [14] en el sistema RayNet para el , [15] y en Navigable Small. World, [10] Metrized Small World [16] y HNSW [11] [12] algoritmos para el caso general de espacios con función de distancia. Estos trabajos fueron precedidos por un artículo pionero de Toussaint, en el que introdujo el concepto de gráfico de vecindad relativa . [17]

Hashing sensible a la localidad

El hash sensible a la localidad (LSH) es una técnica para agrupar puntos en el espacio en "cubos" en función de alguna métrica de distancia que opera en los puntos. Los puntos que están cerca entre sí según la métrica elegida se asignan al mismo segmento con alta probabilidad. [18]

Búsqueda de vecino más cercano en espacios con pequeña dimensión intrínseca

El árbol de cobertura tiene un límite teórico que se basa en la constante de duplicación del conjunto de datos. El límite del tiempo de búsqueda es O ( c 12  log  n ) donde c es la constante de expansión del conjunto de datos.

Búsqueda radial proyectada

En el caso especial en el que los datos sean un mapa tridimensional denso de puntos geométricos, la geometría de proyección de la técnica de detección se puede utilizar para simplificar drásticamente el problema de búsqueda. Este enfoque requiere que los datos 3D estén organizados mediante una proyección en una cuadrícula bidimensional y supone que los datos son espacialmente uniformes en las celdas de la cuadrícula vecinas con la excepción de los límites de los objetos. Estas suposiciones son válidas cuando se trata de datos de sensores 3D en aplicaciones como topografía, robótica y visión estéreo, pero pueden no ser válidas para datos no organizados en general. En la práctica, esta técnica tiene un tiempo de búsqueda promedio de O ( 1 ) u O ( K ) para el k problema del vecino más cercano cuando se aplica a datos de visión estéreo del mundo real. [4]

Archivos de aproximación vectorial

En espacios de alta dimensión, las estructuras de indexación de árboles se vuelven inútiles porque de todos modos es necesario examinar un porcentaje cada vez mayor de los nodos. Para acelerar la búsqueda lineal, se utiliza una versión comprimida de los vectores de características almacenados en la RAM para filtrar previamente los conjuntos de datos en una primera ejecución. Los candidatos finales se determinan en una segunda etapa utilizando los datos sin comprimir del disco para calcular la distancia. [19]

Búsqueda basada en compresión/agrupación

El enfoque de archivos VA es un caso especial de búsqueda basada en compresión, donde cada componente de característica se comprime de manera uniforme e independiente. La técnica de compresión óptima en espacios multidimensionales es la Cuantización Vectorial (VQ), implementada mediante agrupamiento. La base de datos se agrupa y se recuperan los grupos más "prometedores". Se han observado enormes avances con respecto a VA-File, los índices basados ​​en árboles y el escaneo secuencial. [20] [21] Tenga en cuenta también los paralelismos entre la agrupación y la LSH.

Variantes

Existen numerosas variantes del problema NNS y las dos más conocidas son la k -búsqueda de vecino más cercano y la búsqueda de vecino más cercano ε -aproximada .

k -vecinos más cercanos

La búsqueda de k vecinos más cercanos identifica los k vecinos más cercanos a la consulta. Esta técnica se utiliza habitualmente en análisis predictivo para estimar o clasificar un punto en función del consenso de sus vecinos. Los k gráficos de vecinos más cercanos son gráficos en los que cada punto está conectado a sus k vecinos más cercanos.

Vecino más cercano aproximado

En algunas aplicaciones puede resultar aceptable recuperar una "buena suposición" del vecino más cercano. En esos casos, podemos usar un algoritmo que no garantiza devolver el vecino más cercano real en todos los casos, a cambio de una mayor velocidad o ahorro de memoria. A menudo, un algoritmo de este tipo encontrará el vecino más cercano en la mayoría de los casos, pero esto depende en gran medida del conjunto de datos que se consulta.

Los algoritmos que admiten la búsqueda aproximada del vecino más cercano incluyen hash sensible a la localidad , mejor contenedor primero y búsqueda equilibrada basada en árbol de descomposición de cajas. [22]

Relación de distancia del vecino más cercano

La relación de distancia del vecino más cercano no aplica el umbral a la distancia directa desde el punto original al vecino retador, sino a una relación que depende de la distancia al vecino anterior. Se utiliza en CBIR para recuperar imágenes mediante una "consulta por ejemplo" utilizando la similitud entre características locales. De manera más general, está involucrado en varios problemas de emparejamiento .

Radio fijo cerca de vecinos

Los vecinos cercanos de radio fijo son el problema en el que se desea encontrar de manera eficiente todos los puntos dados en el espacio euclidiano dentro de una distancia fija determinada desde un punto específico. Se supone que la distancia es fija, pero el punto de consulta es arbitrario.

Todos los vecinos más cercanos

Para algunas aplicaciones (por ejemplo, estimación de entropía ), es posible que tengamos N puntos de datos y deseemos saber cuál es el vecino más cercano para cada uno de esos N puntos . Por supuesto, esto podría lograrse ejecutando una búsqueda del vecino más cercano una vez por cada punto, pero una estrategia mejorada sería un algoritmo que aproveche la redundancia de información entre estas N consultas para producir una búsqueda más eficiente. Como un ejemplo simple: cuando encontramos la distancia del punto X al punto Y , eso también nos dice la distancia del punto Y al punto X , por lo que el mismo cálculo se puede reutilizar en dos consultas diferentes.

Dada una dimensión fija, una norma positiva semidefinida (incluyendo así cada norma L p ) y n puntos en este espacio, el vecino más cercano de cada punto se puede encontrar en tiempo O ( n  log  n ) y los m vecinos más cercanos de cada punto se puede encontrar en tiempo O ( mn  log  n ). [23] [24]

Ver también

Referencias

Citas

  1. ^ Cayton, Lawrence (2008). "Recuperación rápida del vecino más cercano para divergencias de Bregman". Actas de la 25ª Conferencia Internacional sobre Aprendizaje Automático . págs. 112-119. doi :10.1145/1390156.1390171. ISBN 9781605582054. S2CID  12169321.
  2. ^ Qiu, Deyuan, Stefan May y Andreas Nüchter. "Búsqueda de vecino más cercano acelerada por GPU para registro 3D". Congreso internacional sobre sistemas de visión por ordenador. Springer, Berlín, Heidelberg, 2009.
  3. ^ Becker, Ducas, Gama y Laarhoven. "Nuevas direcciones en la búsqueda de vecinos más cercanos con aplicaciones al tamizado de celosía". Actas del vigésimo séptimo simposio anual ACM-SIAM sobre algoritmos discretos (págs. 10-24). Sociedad de Matemática Industrial y Aplicada.
  4. ^ ab Bewley, A.; Upcroft, B. (2013). Ventajas de explotar la estructura de proyección para segmentar nubes de puntos 3D densas (PDF) . Conferencia australiana sobre robótica y automatización.
  5. ^ Weber, Roger; Schek, Hans-J.; Blott, Stephen (1998). "Un análisis cuantitativo y un estudio de rendimiento para métodos de búsqueda de similitudes en espacios de alta dimensión" (PDF) . VLDB '98 Actas de la 24ª Conferencia internacional sobre bases de datos muy grandes . págs. 194-205.
  6. ^ Andrés Moore. "Un tutorial introductorio sobre árboles KD" (PDF) . Archivado desde el original (PDF) el 3 de marzo de 2016 . Consultado el 3 de octubre de 2008 .
  7. ^ Lee, DT ; Wong, CK (1977). "Análisis del peor de los casos para búsquedas de regiones y regiones parciales en árboles de búsqueda binarios multidimensionales y árboles cuádruples equilibrados". Acta Informática . 9 (1): 23–29. doi :10.1007/BF00263763. S2CID  36580055.
  8. ^ Roussopoulos, N.; Kelley, S.; Vicente, FDR (1995). "Consultas de vecinos más cercanos". Actas de la conferencia internacional ACM SIGMOD de 1995 sobre gestión de datos - SIGMOD '95 . pag. 71.doi : 10.1145 /223784.223794 . ISBN 0897917316.
  9. ^ Andoni, A.; Indyk, P. (1 de octubre de 2006). "Algoritmos de hash casi óptimos para el vecino más cercano aproximado en dimensiones altas". 2006 47º Simposio anual del IEEE sobre fundamentos de la informática (FOCS'06) . págs. 459–468. CiteSeerX 10.1.1.142.3471 . doi :10.1109/FOCS.2006.49. ISBN  978-0-7695-2720-8.
  10. ^ ab Malkov, Yuri; Ponomarenko, Alejandro; Logvinov, Andrei; Krylov, Vladimir (2012), Navarro, Gonzalo; Pestov, Vladimir (eds.), "Algoritmo distribuido escalable para el problema de búsqueda aproximada del vecino más cercano en espacios métricos generales de alta dimensión", Búsqueda y aplicaciones de similitudes , Berlín, Heidelberg: Springer Berlin Heidelberg, vol. 7404, págs. 132-147, doi :10.1007/978-3-642-32153-5_10, ISBN 978-3-642-32152-8, recuperado el 16 de enero de 2024
  11. ^ ab Malkov, Yuri; Yashunin, Dmitry (2016). "Búsqueda de vecino más cercano aproximada, eficiente y robusta utilizando gráficos jerárquicos navegables de pequeños mundos". arXiv : 1603.09320 [cs.DS].
  12. ^ ab Malkov, Yu A.; Yashunin, DA (1 de abril de 2020). "Búsqueda de vecino más cercano aproximada, eficiente y sólida, utilizando gráficos jerárquicos de mundos pequeños navegables". Transacciones IEEE sobre análisis de patrones e inteligencia artificial . 42 (4): 824–836. arXiv : 1603.09320 . doi :10.1109/TPAMI.2018.2889473. ISSN  0162-8828.
  13. ^ Arya, Sunil; Monte, David (1993). "Consultas aproximadas del vecino más cercano en dimensiones fijas". Actas del cuarto simposio anual {ACM/SIGACT-SIAM} sobre algoritmos discretos, 25 a 27 de enero de 1993, Austin, Texas. : 271–280.
  14. ^ Olivier, Beaumont; Kermarrec, Anne-Marie; Marchal, Loris; Rivière, Etienne (2006). "Voro Net: una red de objetos escalable basada en teselados de Voronoi" (PDF) . 2007 Simposio internacional de procesamiento distribuido y paralelo del IEEE . vol. RR-5833. págs. 23-29. doi :10.1109/IPDPS.2007.370210. ISBN 1-4244-0909-8. S2CID  8844431.
  15. ^ Olivier, Beaumont; Kermarrec, Anne-Marie; Rivière, Etienne (2007). "Superposiciones multidimensionales de igual a igual: aproximación de estructuras complejas". Principios de los sistemas distribuidos . Apuntes de conferencias sobre informática. vol. 4878. págs. 315–328. CiteSeerX 10.1.1.626.2980 . doi :10.1007/978-3-540-77096-1_23. ISBN  978-3-540-77095-4.
  16. ^ Malkov, Yuri; Ponomarenko, Alejandro; Krylov, Vladimir; Logvinov, Andrey (2014). "Algoritmo aproximado del vecino más cercano basado en gráficos de mundos pequeños navegables". Sistemas de información . 45 : 61–68. doi :10.1016/j.is.2013.10.006. S2CID  9896397.
  17. ^ Toussaint, Godfried (1980). "El gráfico de vecindad relativa de un conjunto plano finito". Reconocimiento de patrones . 12 (4): 261–268. Código Bib : 1980PatRe..12..261T. doi :10.1016/0031-3203(80)90066-7.
  18. ^ A. Rajaraman y J. Ullman (2010). "Minería de conjuntos de datos masivos, capítulo 3".
  19. ^ Weber, Roger; Blott, Stephen. "Una estructura de datos basada en aproximación para búsqueda de similitudes" (PDF) . S2CID  14613657. Archivado desde el original (PDF) el 4 de marzo de 2017. {{cite journal}}: Citar diario requiere |journal=( ayuda )
  20. ^ Ramaswamy, Sharadh; Rosa, Kenneth (2007). "Delimitación adaptable de distancia de grupo para búsqueda de similitudes en bases de datos de imágenes". ICIP .
  21. ^ Ramaswamy, Sharadh; Rosa, Kenneth (2010). "Delimitación adaptable de distancia de clúster para indexación de alta dimensión". TKDE .
  22. ^ Arya, S.; Monte, DM ; Netanyahu, NS ; Silverman, R.; Wu, A. (1998). "Un algoritmo óptimo para la búsqueda aproximada del vecino más cercano" (PDF) . Revista de la ACM . 45 (6): 891–923. CiteSeerX 10.1.1.15.3125 . doi :10.1145/293347.293348. S2CID  8193729. Archivado desde el original (PDF) el 3 de marzo de 2016 . Consultado el 29 de mayo de 2009 . 
  23. ^ Clarkson, Kenneth L. (1983), "Algoritmos rápidos para el problema de todos los vecinos más cercanos", 24º IEEE Symp. Fundamentos de la informática, (FOCS '83) , págs. 226–232, doi :10.1109/SFCS.1983.16, ISBN 978-0-8186-0508-6, S2CID  16665268.
  24. ^ Vaidya, PM (1989). "Un algoritmo O (n log n) para el problema de los vecinos más cercanos". Geometría Discreta y Computacional . 4 (1): 101-115. doi : 10.1007/BF02187718 .

Fuentes

Otras lecturas

enlaces externos