Comprender el algoritmo de vecino más cercano aproximado (ANN)
Si creciste en la época previa a la internet, recordarás que no siempre fue sencillo encontrar cosas nuevas que te gusten. Descubríamos bandas nuevas cuando las escuchábamos de casualidad en la radio, veíamos un nuevo programa de TV por accidente cuando 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, la realidad es muy diferente. Spotify nos muestra artistas que coinciden con nuestros gustos, Netflix destaca películas y series que sabe que nos gustarán, y Xbox sabe a qué es probable que queramos jugar a continuación. Estos sistemas de recomendaciones nos facilitan mucho encontrar lo que realmente buscamos y están impulsados por algoritmos de vecino más cercano (NN). NN recurre al enorme mar de información que tiene disponible e identifica lo más cercano a algo que te gusta o algo que buscas.
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
Vecino más cercano aproximado (ANN) es un algoritmo que encuentra en un set de datos un punto de datos muy cercano al punto de búsqueda dado, pero no necesariamente el más cercano. Un algoritmo de NN busca de manera exhaustiva en todos los datos para encontrar la coincidencia perfecta, mientras que un algoritmo ANN se conformará con una coincidencia que sea 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. Por lo tanto, en lugar de utilizar grandes cantidades de tiempo y recursos, puede identificar con mucho menos esfuerzo puntos de datos que sean lo suficientemente cercanos para ser útiles en la mayoría de las situaciones prácticas.
Básicamente, es 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 dimensionalidades, donde el objetivo es convertir un set de datos de mayor dimensionalidad en uno de menor dimensionalidad. El objetivo es 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. Las distancias deben adherirse a reglas específicas (no negatividad, identidad, simetría, desigualdad triangular), y las funciones comunes, como distancia euclidiana o similitud de coseno, se usan 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 (mayor dimensionalidad), usarías un mapa, lo que reduce el problema a dos dimensiones (menor dimensionalidad). (Este es un ejemplo deliberadamente simple. La reducción de la dimensionalidad no es el único método empleado por algoritmos de ANN para mejorar la eficiencia).
Los algoritmos de ANN también aprovechan estructuras de datos inteligentes llamadas índices para mejorar la eficiencia. Al preprocesar los datos en estos índices, ANN puede navegar por el espacio de la búsqueda con mucha más rapidez. Piensa en ellos como letreros de calles que te ayudan a encontrar dónde estás en el mapa para llegar más rápido a tu residencia de vacaciones.
Cuándo usar la búsqueda de vecino más cercano aproximado
En el mundo acelerado de la ciencia de los datos, la eficiencia es la reina soberana. 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 brilla la búsqueda de ANN, que ofrece una compensación atractiva: velocidad superrápida con precisión alta, pero no absoluta.
¿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 si la precisión es tu prioridad o usas sets de datos pequeños. Los k vecinos más cercanos (kNN) se encuentran entre NN y ANN, dado que brindan resultados más rápidos, al mismo tiempo que mantienen una precisión alta. Sin embargo, puede ser difícil conseguirlo al decidir el valor de k; además, debe lidiar con datos de alta dimensionalidad.
La velocidad y la eficiencia de ANN combinadas con su alta precisión (aunque no absoluta), hacen que sea perfecto en varias situaciones:
Sets de datos grandes: al ocuparse de millones e incluso miles de millones de puntos de datos, la naturaleza exhaustiva del NN exacto se vuelve lenta. ANN se destaca en navegar por grandes panoramas de datos, brindando resultados con prontitud.
Datos de alta dimensionalidad: a medida que las dimensiones aumentan, los cálculos de NN exacto estallan. Las técnicas de reducción de dimensionalidad de ANN reducen con eficacia el espacio de búsqueda e impulsan la eficiencia en datos complejos, como imágenes o texto.
Aplicaciones en tiempo real: ¿necesitas resultados al instante? Los sistemas de recomendaciones, la detección de fraudes y la detección de anomalías dependen de información en tiempo real. La velocidad de ANN hace que sea ideal para estas situaciones.
Aproximación aceptable: si tu aplicación puede tolerar ligeras imprecisiones en los resultados, la velocidad de ANN es invaluable. Por ejemplo, en la búsqueda de imágenes, encontrar imágenes similares visualmente (en lugar de aquella absolutamente más similar) puede ser suficiente.
La importancia de ANN en la búsqueda de vectores
La búsqueda de vectores se ocupa de datos codificados como vectores densos, de esta forma captura relaciones complejas y significados incrustados. Esto hace que sea ideal para buscar contenido como imágenes, texto y preferencias de usuario, donde la búsqueda tradicional basada en palabras clave suele no ser suficiente. Pero la maldición de la dimensionalidad también aplica en este caso. Porque, a medida que la cantidad de dimensiones que representan estos vectores aumenta, los métodos de búsqueda tradicionales tienen problemas, se vuelven lentos e ineficientes.
ANN resuelve este problema cambiando el foco de encontrar una coincidencia exacta a encontrar coincidencias "lo suficientemente cercanas". Esto permite una recuperación rápida, en la cual la búsqueda de vectores 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 búsqueda de vectores.
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 un gran variedad de algoritmos. Todos tienen sus fortalezas y compensaciones, y comprender estos matices es esencial a fin de elegir la herramienta adecuada para tus necesidades de búsqueda y datos específicas.
Á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.
Si bien 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. Así, la búsqueda examina la mayoría de los datos, pierde la ventaja de eficiencia y se acerca a la lentitud de un escaneo linear simple por todos los puntos.
Hash sensible a localización (LSH)
LSH es una técnica de ANN poderosa que funciona convirtiendo los puntos de datos mediante hash 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 árboles y buscar en ellos, sin implementar directamente LSH o árboles KD. Está diseñada 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 con Annoy es fundamental para un rendimiento óptimo, y su eficacia todavía depende de factores como tus requisitos de precisión y datos.
Algoritmo de escaneo lineal
A pesar de que no suele clasificarse como una técnica de ANN, vale la pena mencionar el escaneo lineal dado que es un enfoque de fuerza bruta que te brinda resultados similares a otros algoritmos de ANN. Itera por todos los puntos de datos de manera secuencial, calculando las distancias entre los registros y haciendo un seguimiento de las mejores coincidencias. Dada la naturaleza simplista del algoritmo, es fácil de implementar y una excelente opción para sets de datos pequeños. La desventaja de este enfoque más básico es que no es eficiente en sets de datos grandes, es lento cuando se usa con datos de alta dimensionalidad y no es práctico en 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 set de datos: considera usar hash sensible a localización en datos grandes y de alta dimensionalidad y árboles KD en datos más pequeños y de menor dimensionalidad.
Nivel de precisión deseado: si la precisión absoluta es vital, el escaneo lineal probablemente sea la mejor opción. De lo contrario, puedes considerar LSH o Annoy para obtener buena precisión con velocidad.
Recursos informáticos: Annoy ofrece flexibilidad, pero ten en cuenta las limitaciones de memoria y procesamiento antes de elegir un algoritmo en ella.
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 evoluciona constantemente, por lo que también vale la pena estar atento para no perderse ninguna novedad que pudiera mejorar tu búsqueda.
ANN es el condimento secreto para una mejor búsqueda
El enorme y complejo mundo de los datos demanda herramientas eficientes para navegar por sus laberintos. Aquí es donde ANN puede ser el condimento secreto que lleve a tu búsqueda por similitud de ser buena a excelente. Ofrece velocidad y escalabilidad, aunque a expensas de un ligero compromiso de la precisión. La investigación es continua y se realizan avances semanalmente, todo lo cual contribuirá a la naturaleza dinámica del espacio de ANN. Por ejemplo, los adelantos en informática cuántica y machine learning podrían llevar a nuevos tipos de algoritmos de ANN que sean incluso más rápidos y eficientes.
Exploramos diferentes algoritmos de ANN, cada uno con sus fortalezas y debilidades particulares. Pero, en última instancia, la elección óptima depende de tus necesidades específicas. Ten en cuenta factores como el tamaño de los datos, la dimensionalidad, los requisitos de precisión y los recursos. Experimenta, explora y elige el algoritmo adecuado para aprovechar al máximo los ANN. Desde la búsqueda de imágenes hasta la detección de fraudes, estos algoritmos pueden hacer una gran diferencia, revelando conexiones ocultas y empoderando información impulsada por los datos rápido.
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.
Lo 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 las soluciones se ajustarán a tus necesidades.
Comparte este artículo con alguien que sepas que disfrutaría leerlo. Compártelo por email, LinkedIn, Twitter o Facebook.
Conoce más sobre la tecnología de búsqueda:
- Understanding AI search algorithms (Comprender los algoritmos de búsqueda de AI)
- 5 AI search trends impacting developers in 2024 (5 tendencias de búsqueda de AI que tienen un impacto en los desarrolladores en 2024)
- Enhancing chatbot capabilities with NLP and vector search in Elasticsearch (Mejorar las capacidades de chatbot con NLP y búsqueda de vectores en Elasticsearch)
El lanzamiento y el plazo de cualquier característica o funcionalidad descrita en este blog quedan a la entera discreción de Elastic. Cualquier característica o funcionalidad que no esté disponible actualmente puede no entregarse a tiempo o no entregarse en absoluto.
En este blog, es posible que hayamos usado o mencionado herramientas de AI generativa de terceros, que son propiedad de sus respectivos propietarios y operadas por estos. Elastic no tiene ningún control sobre las herramientas de terceros, y no somos responsables de su contenido, funcionamiento o uso, ni de ninguna pérdida o daño que pueda resultar del uso de dichas herramientas. Ten cautela al usar herramientas de AI con información personal o confidencial. Cualquier dato que envíes puede ser utilizado para el entrenamiento de AI u otros fines. No hay garantías de que la información que proporciones se mantenga segura o confidencial. Deberías familiarizarte con las prácticas de privacidad y los términos de uso de cualquier herramienta de AI generativa previo a su uso.
Elastic, Elasticsearch, ESRE, Elasticsearch Relevance Engine y las marcas asociadas son marcas comerciales, logotipos o marcas comerciales registradas de Elasticsearch N.V. en los 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 propietarios.