¿Podría alguien explicarme la idea básica de la búsqueda del vecino más cercano (ANN) y mostrar un ejemplo?

Para comprender el problema de ANN, primero debemos comprender el problema de búsqueda del vecino más cercano (NN).

El problema NN es un problema de optimización que solicita puntos (o elementos de conjunto) que minimiza una métrica (d) a un punto de consulta (q) en algún espacio métrico (U).
[matemáticas] \ text {NN} (q) = \ text {argmin} _ {x \ en U} d (x, q) [/ math]

Este problema es muy común como subproblema de varios problemas en geometría computacional, aprendizaje automático, visión por computadora, bases de datos, gráficos por computadora, etc. (por ejemplo, clasificación, recomendación, agrupamiento, colisión de objetos). El desafío de NN llega cuando te enfrentas a grandes conjuntos de datos con puntos en un espacio de alta dimensión, ya que la fuerza bruta es [matemática] O (n ^ d) [/ matemática]. Después de décadas de esfuerzos, todos los algoritmos exactos adolecen de espacio exponencial o complejidad de tiempo.

Una de las posibles ideas es que a medida que la dimensión crece, la distancia entre los puntos se vuelve más “indistinguible”, debido a la “maldición de la dimensionalidad” (la división del espacio en la cuadrícula da como resultado exponencialmente más puntos a medida que la dimensión crece). El fenómeno se observa en diversas situaciones teóricas y prácticas, por ejemplo, métodos sin muestreo para la integración de alta dimensión [1]. En una situación práctica, la distancia es solo un indicador de alguna otra medida (satisfacción del usuario, similitud de documentos) y puede aceptarse algún error en esta medida.

Entonces, ANN puede formularse como el problema de buscar NN, pero aceptando cierto grado de errores o alguna holgura en el cálculo de la distancia. Esta formulación es una relajación del problema NN y ha demostrado en la práctica y la teoría que ofrece un mejor rendimiento (aproximadamente [matemática] O (dn ^ {(1 / c)}) [/ matemática] complejidad de tiempo y espacio polinomial, donde c es la holgura en el cálculo de la distancia [2]).

[1] Sección 3.11 del Teorema del límite central, Ley de grandes números y Métodos de Monte Carlo.
[2] Más allá de LSH por Alex Andoni

Primero eche un vistazo a la búsqueda de vecino más cercano. En términos simples, la búsqueda de vecino más cercano es encontrar un número predefinido de puntos de datos que están más cerca en la distancia a un nuevo punto, fuera de un conjunto más grande de puntos de datos de entrenamiento. Este número puede ser una constante definida por el usuario (en k vecinos más cercanos) o un número que varía según la densidad local de puntos (en vecinos basados ​​en el radio).

Ahora considere un conjunto de datos dimensional muy alto. El cálculo de la distancia entre dos puntos de datos no será tan eficiente desde el punto de vista computacional como cuando la dimensión es baja en este escenario. El consumo de tiempo de una consulta de búsqueda de vecino más cercano puede crecer exponencialmente a medida que aumenta la dimensionalidad del conjunto de datos. En tales situaciones, vale la pena sacrificar un poco de precisión por una parte equivalente de mejora en el tiempo de consulta. Aquí es donde entra en juego la búsqueda aproximada del vecino más cercano. Lo que básicamente hace es poner cada punto de datos de entrenamiento en un grupo basado en alguna función de aproximación, y cuando se realiza una consulta de vecino más cercano, determina el grupo al que pertenece ese punto de datos de consulta y encuentra el número requerido de vecinos solo de ese grupo. Esta función de aproximación es computacionalmente más barata que la función de distancia real, por lo que el tiempo necesario para la aproximación es casi insignificante. Esto elimina el requisito de realizar una búsqueda exhaustiva en todo el conjunto de datos indexados y la distancia se calcula solo en un pequeño subconjunto de datos de entrenamiento.

La búsqueda aproximada del vecino más cercano se usa ampliamente en la recuperación de imágenes basada en contenido y en los sistemas de recomendación donde la dimensionalidad de los datos puede ser de miles y la cantidad de puntos de datos sigue creciendo cada hora.