Comprender el algoritmo de vecino más cercano aproximado (ANN)

Si creciste en una época anterior al surgimiento de Internet, recordarás que no siempre fue fácil encontrar algo nuevo que te gustara. Descubríamos bandas nuevas cuando las escuchábamos de casualidad en la radio, veíamos un nuevo programa de televisión por accidente porque olvidábamos cambiar de canal, y encontrábamos un nuevo videojuego favorito basándonos casi por completo en la imagen de la portada.
Hoy en día, todo es muy muy diferente. Spotify me sugiere artistas que se ajustan a mis gustos, Netflix me recomienda películas y series que sabe que nos van a gustar, y Xbox sabe qué nos gustaría jugar después. Estos sistemas de recomendación nos facilitan mucho encontrar lo que realmente buscamos, y funcionan con algoritmos de vecino más cercano (NN). El NN analiza el vasto mar de información que tiene a su disposición e identifica lo más parecido a algo que te gusta o a algo que estás buscando.
Pero los algoritmos de NN tienen una falla inherente. Si la cantidad de datos que están analizando se vuelve muy grande, rastrear cada opción demora muchísimo. Esto es un problema, en especial porque estas fuentes de datos aumentan su tamaño año tras año. Aquí es donde la opción de vecino más cercano aproximado (ANN) le quita el mando a NN y cambia el juego.
En este artículo, veremos los siguientes temas clave sobre ANN:
Definición de ANN
Cómo funciona ANN
Cuándo usar la búsqueda de ANN
La importancia de ANN en la búsqueda de vectores
Varios tipos de algoritmos de ANN
Explicación de vecino más cercano aproximado
El vecino más cercano aproximado (ANN) es un algoritmo que encuentra un punto de datos en un conjunto de datos muy cercano al punto de búsqueda dado, pero no necesariamente el más cercano absoluto. Un algoritmo NN busca exhaustivamente todos los datos para encontrar la coincidencia perfecta, mientras que un algoritmo ANN se conformará con una coincidencia lo suficientemente cercana..
Esto puede sonar como una peor solución, pero en realidad es la clave para lograr una búsqueda por similitud rápida. El ANN usa accesos directos inteligentes y estructuras de datos para navegar con eficiencia en el espacio de búsqueda. Entonces, en lugar de consumir grandes cantidades de tiempo y recursos, puede identificar puntos de datos con mucho menos esfuerzo que sean lo suficientemente cercanos para ser útiles en la mayoría de los escenarios prácticos.
En esencia, se trata de una compensación. Si necesitas encontrar sí o sí la mejor coincidencia, puedes hacerlo a expensas de la velocidad y el rendimiento con NN. Pero si puedes tolerar un poco menos de precisión, ANN casi siempre es una mejor solución.
Cómo funcionan los algoritmos de vecino más cercano aproximado
La primera parte de cómo funciona ANN es la reducción de dimensionalidad, donde el objetivo es convertir un conjunto de datos de dimensiones superiores en uno de menor dimensión. El objetivo es hacer que la tarea del modelo predictivo sea menos complicada y más eficiente que tener que analizar todos los datos.
Estos algoritmos se basan en el concepto matemático de espacios métricos; donde los puntos de datos residen y las distancias entre ellos se definen. Estas distancias deben adherirse a reglas específicas (no negatividad, identidad, simetría, desigualdad triangular), y se utilizan funciones comunes como la distancia euclidiana o la similitud de coseno para calcularlas.
Para comprender esto mejor, imagina que estás de vacaciones buscando la residencia que alquilaste. En lugar de revisar cada edificio uno por uno (de dimensión superior), usarías un mapa, que reduce el problema a dos dimensiones (de menor dimensión). (Este es un ejemplo deliberadamente simplista. La reducción de la dimensionalidad no es el único método usado por algoritmos de ANN para mejorar la eficiencia.)
Los algoritmos ANN también aprovechan estructuras de datos inteligentes llamadas índices para mejorar la eficiencia. Al procesar previamente los datos en estos índices, ANN puede navegar por el espacio de búsqueda mucho más rápido. Piense en estos como letreros de calles, que le ayudan a encontrar dónde se encuentra en el mapa para llegar a su residencia de vacaciones más rápido.
Cuándo usar la búsqueda de vecino más cercano aproximado
En el mundo acelerado de la ciencia de los datos, la eficiencia reina por encima de todo. Si bien encontrar el verdadero vecino más cercano (búsqueda de vecino más cercano exacto) tiene valor, suele implicar un costo informático, como ya mencionamos. Aquí es donde la búsqueda ANN brilla, al ofrecer una compensación atractiva: velocidad superrápida con alta, pero no absoluta, precisión.
¿Pero cuándo exactamente deberías optar por ANN por sobre otros métodos de búsqueda?
El vecino más cercano exacto puede ser lento, pero es la mejor opción cuando la precisión es tu prioridad o estás usando conjuntos de datos pequeños. k-nearest neighbors (KnN) se encuentra entre NN y ANN al darte resultados más rápidos mientras mantienes una alta precisión. Pero puede ser difícil acertar al decidir el valor de k, y también tiene problemas con los datos de alta dimensión.
La velocidad y la eficiencia de ANN combinadas con su alta precisión (aunque no absoluta), hacen que sea perfecto en varias situaciones:
Grandes conjuntos de datos: Cuando se trata con millones o incluso miles de millones de puntos de datos, la naturaleza exhaustiva de la NN exacta se vuelve lenta. ANN destaca en navegar por vastos paisajes de datos, entregando resultados rápidamente.
Datos de alta dimensión: A medida que aumenta el número de dimensiones, el número de cálculos exactos de las redes neuronales se dispara. Las técnicas de reducción de dimensionalidad de las redes neuronales artificiales reducen de manera efectiva el espacio de búsqueda y mejoran la eficiencia en datos complejos, como imágenes o texto.
Aplicaciones en tiempo real: ¿Necesitas resultados al instante? Los sistemas de recomendación, la detección de fraude y la detección de anomalías dependen de información en tiempo real. La velocidad de ANN la hace ideal para estos escenarios.
Aproximación aceptable: Si tu aplicación puede tolerar pequeñas inexactitudes en los resultados, la velocidad de ANN se vuelve invaluable. Por ejemplo, en la búsqueda de imágenes, encontrar imágenes visualmente similares, en lugar de la más cercana, podría ser suficiente.
La importancia de ANN en la búsqueda de vectores
La búsqueda vectorial trabaja con datos codificados como vectores densos, lo que permite captar relaciones complejas y significados implícitos. Esto la hace ideal para buscar contenido como imágenes, texto y preferencias de los usuarios, donde la búsqueda tradicional basada en palabras clave suele no ser suficiente. Pero la maldición de la dimensionalidad también se aplica aquí. Y es que, a medida que aumenta el número de dimensiones que representan estos vectores, los métodos de búsqueda tradicionales se ven en apuros, y se vuelven lentos e ineficientes.
ANN resuelve este problema cambiando el enfoque de buscar una coincidencia exacta a buscar coincidencias "lo suficientemente cercanas". Esto permite una recuperación rápida, en la cual la búsqueda vectorial pueda encontrar vectores similares en sets de datos masivos a la velocidad de la luz. También te brinda escalabilidad incorporada, para que puedas hacer crecer tu set de datos tanto como lo desees sin sacrificar la velocidad.
Estas respuestas en tiempo real combinadas con relevancia y eficiencia mejoradas suelen significar que ANN puede jugar un rol fundamental para desbloquear el verdadero potencial de la búsqueda vectorial.
Tipos de algoritmos de vecino más cercano aproximado
Si bien el concepto de ANN ofrece una ventaja de velocidad atractiva en la búsqueda, este término en realidad abarca una gran variedad de algoritmos. Todos tienen sus propias fortalezas y compensaciones, y comprender estos matices es fundamental al elegir la herramienta adecuada para tus necesidades específicas de datos y búsqueda.
Árboles KD
Los árboles KD organizan puntos de datos en una estructura de árbol jerárquica, mediante el particionamiento del espacio basado en dimensiones específicas. Esto permite una búsqueda rápida y eficiente en espacios de baja dimensionalidad y consultas basadas en distancia euclidiana.
Pero, aunque los árboles KD son excelentes para encontrar los vecinos más cercanos en dimensiones bajas, padecen de la “maldición de la dimensionalidad”. Esto quiere decir que, a medida que aumenta la cantidad de dimensiones, el espacio entre los puntos estalla. En estas dimensiones altas, la estrategia de los árboles KD de dividir basándose en ejes únicos se vuelve ineficaz. Esto hace que la búsqueda examine la mayoría de los datos, y que pierda la ventaja de eficiencia y se acerque a la lentitud de un escaneo lineal simple por todos los puntos.
Hash sensible a localización (LSH)
LSH es una técnica poderosa de ANN que funciona "convirtiendo mediante hash" puntos de datos en espacios de menor dimensionalidad de un modo que preserva inteligentemente sus relaciones de similitud. Esta agrupación hace que sea más fácil encontrarlos y permite a LSH destacarse en la búsqueda en sets de datos masivos de alta dimensionalidad, como imágenes o texto, tanto de forma rápida como escalable. Y hace todo esto al mismo tiempo que devuelve coincidencias "lo suficientemente similares" con buena precisión. Sin embargo, ten en cuenta que LSH puede ocasionalmente producir falsos positivos (hallar similares puntos que no lo son) y su eficacia puede variar según la métrica de distancia y el tipo de datos. Existen diversas familias de LSH diseñadas para trabajar con diferentes métricas (por ejemplo, distancia euclidiana, similitud de Jaccard), lo que significa que LSH se mantiene versátil.
Annoy
Annoy (Approximate Nearest Neighbors Oh Yeah) no es un único algoritmo, sino una biblioteca C++ open source que usa sus propios algoritmos para crear y consultar árboles, sin implementar directamente LSH o árboles KD. Está diseñado para una búsqueda rápida y con uso eficiente de la memoria en espacios de alta dimensionalidad, lo que hace que sea adecuada para búsquedas en tiempo real. En esencia, es una interfaz fácil de usar que ofrece flexibilidad para distintos tipos de datos y situaciones de búsqueda. La fortaleza de Annoy reside en aprovechar varios enfoques de ANN en un mismo sitio, lo cual te permite elegir el más adecuado para tus necesidades. Si bien simplifica el proceso, recuerda que escoger el algoritmo interno correcto dentro de Annoy es crucial para un rendimiento óptimo, y su eficacia aún depende de factores como tus datos y los requisitos de precisión.
Algoritmo de escaneo lineal
Aunque normalmente no se clasifica como una técnica ANN, vale la pena mencionar el escaneo lineal porque es un enfoque de fuerza bruta que da resultados similares a otros algoritmos ANN. Itera a través de cada punto de datos secuencialmente, calculando las distancias entre registros y haciendo un seguimiento de las mejores coincidencias. Debido a la naturaleza simplista del algoritmo, es fácil de implementar y excelente para pequeños conjuntos de datos. La desventaja del enfoque más básico es que es ineficiente para grandes conjuntos de datos, lento cuando se usa con datos de alta dimensión y poco práctico para aplicaciones en tiempo real.
Selección del ANN correcto
Antes de profundizar en la selección de un ANN, debes tener en cuenta ciertas cuestiones antes de decidir:
Tamaño y dimensionalidad del conjunto de datos: Considera usar el hash sensible a la localidad para datos grandes y de alta dimensionalidad, y los árboles KD para datos más pequeños y de menor dimensionalidad.
Nivel de precisión deseado: Si la precisión absoluta es vital, el escaneo lineal es probablemente la mejor opción; de lo contrario, considera LSH o Annoy para obtener una buena precisión con velocidad.
Recursos computacionales: Annoy ofrece flexibilidad, pero ten en cuenta las limitaciones de memoria y procesamiento antes de elegir un algoritmo interno.
Recuerda que no hay ninguna solución que se adapte a todo. Experimenta con los distintos algoritmos de ANN y evalúa su rendimiento en tus datos específicos a fin de encontrar la solución ideal para tus necesidades de búsqueda de vectores. Más allá de estas opciones, el mundo de los algoritmos de ANN está en constante evolución, por lo que también vale la pena estar atento para no perderse ninguna novedad que pueda mejorar tu búsqueda.
ANN es el condimento secreto para una mejor búsqueda
El vasto y complejo mundo de los datos exige herramientas eficientes para navegar por sus laberintos. Aquí es donde ANN puede ser el condimento secreto que lleva tu búsqueda de similitud de buena a excelente. Ofrece velocidad y escalabilidad, aunque a costa de un ligero compromiso de precisión. Y hay investigaciones en curso con desarrollos que se hacen semanalmente, lo que contribuirá a la naturaleza dinámica del espacio ANN. Por ejemplo, los avances en la computación cuántica y el Machine Learning podrían conducir a nuevos tipos de algoritmos ANN que son aún más rápidos y eficientes.
Hemos explorado diferentes algoritmos ANN, cada uno con sus fortalezas y debilidades únicas. Pero en última instancia, la elección óptima depende de tus necesidades específicas. Considera factores como el tamaño de los datos, la dimensionalidad, los requisitos de precisión y los recursos. Experimenta, explora y elige el algoritmo correcto para sacar el máximo provecho de las ANN. Desde la búsqueda de imágenes hasta la detección de fraudes, estos algoritmos pueden marcar una gran diferencia, revelando conexiones ocultas y potenciando información basada en datos rápidamente.
Entonces, la próxima vez que busques una canción, película o videojuego, recuerda a los héroes silenciosos detrás de escena (los algoritmos de ANN) uniendo los puntos y haciendo conexiones.
¿Que deberías hacer a continuación?
Cuando estés listo, estas son cuatro formas en las que podemos ayudarte a aprovechar la información de los datos de tu empresa:
Comienza una prueba gratuita y ve cómo Elastic puede ayudar a tu empresa.
Haz un recorrido por nuestras soluciones para ver cómo funciona Elasticsearch Platform y cómo nuestras soluciones se ajustarán a tus necesidades.
Comparte este artículo con alguien que sepas que disfrutaría leerlo. Compártelo por email, LinkedIn, X o Facebook.
Conoce más sobre la tecnología de búsqueda:
El momento del lanzamiento de cualquiera de las características o funcionalidades descritas en esta publicación queda a exclusivo criterio de Elastic. Es posible que algunas características o funcionalidades que no estén disponibles en este momento no se lancen a tiempo o no se lancen en absoluto.
En esta publicación del blog, es posible que hayamos usado o nos hayamos referido a herramientas de AI generativa de terceros, que son propiedad de sus respectivos propietarios y están gestionadas por ellos. Elastic no tiene ningún control sobre las herramientas de terceros y no tenemos ninguna responsabilidad por su contenido, operación o uso, ni por ninguna pérdida o daño que pueda surgir de tu uso de dichas herramientas. Ten cuidado al usar herramientas de AI con información personal, sensible o confidencial. Cualquier dato que envíes puede usarse para el entrenamiento de la AI u otros fines. No se garantiza que la información que proporciones se mantenga segura o confidencial. Debes familiarizarte con las prácticas de privacidad y los términos de uso de cualquier herramienta de IA generativa antes de usarla.
Elastic, Elasticsearch, ESRE, Elasticsearch Relevance Engine y las marcas asociadas son marcas comerciales, logotipos o marcas comerciales registradas de Elasticsearch N.V. en Estados Unidos y otros países. Todos los demás nombres de empresas y productos son marcas comerciales, logotipos o marcas comerciales registradas de sus respectivos dueños.