El algoritmo k vecinos más cercanos (KNN) es un clasificador de aprendizaje supervisado no paramétrico que utiliza la proximidad para hacer clasificaciones o predicciones sobre la agrupación de un punto de datos individual. Es uno de los clasificadores de clasificación y regresión más populares y sencillos que se utilizan en machine learning hoy en día.
Aunque el algoritmo KNN se puede usar para problemas de regresión o clasificación, se suele utilizar como un algoritmo de clasificación, que parte de la suposición de que se pueden encontrar puntos similares cerca unos de otros.
Para los problemas de clasificación, la etiqueta de clase se asigna en función de la mayoría de votos, es decir, se utiliza la etiqueta que se representa con más frecuencia en torno a un punto de datos determinado. Si bien esto se considera técnicamente “votación por pluralidad”, en la literatura se utiliza más comúnmente el término “voto por mayoría”. La distinción entre estas terminologías es que la “votación por mayoría” técnicamente requiere una mayoría superior al 50 %, lo que funciona principalmente cuando solo hay dos categorías. Cuando tiene varias clases, por ejemplo cuatro categorías, no necesita necesariamente el 50 % de los votos para llegar a una conclusión sobre una clase; puede asignar una etiqueta de clase con un voto superior al 25 %. La Universidad de Wisconsin-Madison lo resume bien con un ejemplo aquí.
Los problemas de regresión utilizan un concepto similar al problema de clasificación, pero en este caso, se toma el promedio de los k vecinos más cercanos para hacer una predicción sobre una clasificación. La principal distinción aquí es que la clasificación se usa para valores discretos, mientras que la regresión se usa para valores continuos. Sin embargo, antes de que se pueda hacer una clasificación, se debe definir la distancia. La distancia euclidiana es la más utilizada, en la que profundizaremos más adelante.
También vale la pena señalar que el algoritmo KNN también es parte de una familia de modelos de "aprendizaje vago", lo que significa que solo almacena un conjunto de datos de entrenamiento en lugar de someterse a una etapa de entrenamiento. Esto también significa que todo el cálculo se produce cuando se está haciendo una clasificación o predicción. Dado que depende en gran medida de la memoria para almacenar todos sus datos de entrenamiento, también se conoce como un método de aprendizaje basado en instancias o en memoria.
A Evelyn Fix y Joseph Hodges se les atribuyen las ideas iniciales en torno al modelo KNN en este artículo de 1951, mientras que Thomas Cover amplía su concepto en su investigación, “Nearest Neighbor Pattern Classification". Aunque no es tan popular como antes, sigue siendo uno de los primeros algoritmos que se aprenden en la ciencia de datos debido a su simplicidad y precisión. Sin embargo, a medida que crece un conjunto de datos, KNN se vuelve cada vez más ineficiente, lo que compromete el rendimiento general del modelo. Se utiliza habitualmente para sistemas de recomendación sencillos, reconocimiento de patrones, minería de datos, predicciones de mercados financieros, detección de intrusiones y más.
Para recapitular, el objetivo del algoritmo de vecino k más cercano es identificar los vecinos más cercanos de un punto de consulta determinado, de modo que podamos asignar una etiqueta de clase a ese punto. Para ello, KNN tiene algunos requisitos:
Para determinar qué puntos de datos están más cerca de un punto de consulta determinado, será necesario calcular la distancia entre el punto de consulta y los demás puntos de datos. Estas métricas de distancia ayudan a formar límites de decisión, que dividen los puntos de consulta en diferentes regiones. Es frecuente ver los límites de decisión visualizados con diagramas de Voronoi.
Aunque hay varias medidas de distancia entre las que puede elegir, este artículo solo cubrirá lo siguiente:
Distancia euclídea (p=2): es la medida de distancia más utilizada y se limita a vectores de valor real. Mediante la fórmula siguiente, mide una línea recta entre el punto de consulta y el otro punto medido.
Distancia de Manhattan (p=1): esta es también otra métrica de distancia popular, que mide el valor absoluto entre dos puntos. También se conoce como distancia de taxi o distancia de cuadra de la ciudad, ya que comúnmente se visualiza con una cuadrícula, que ilustra cómo se puede navegar de una dirección a otra a través de las calles de la ciudad.
Distancia de Minkowski: esta medida de distancia es la forma generalizada de las métricas de distancia euclidianas y de Manhattan. El parámetro, p, en la fórmula a continuación, permite la creación de otras métricas de distancia. La distancia euclidiana se representa mediante esta fórmula cuando p es igual a dos, y la distancia de Manhattan se denota con p igual a uno.
Distancia de Hamming: esta técnica se utiliza normalmente con vectores booleanos o de cadena, para identificar los puntos en los que los vectores no coinciden. Como resultado, también se ha denominado métrica de superposición. Esto se puede representar con la siguiente fórmula:
Por ejemplo, si tuviera las siguientes cadenas, la distancia de hamming sería 2, ya que solo dos de los valores difieren.
El valor k en el algoritmo k-NN define cuántos vecinos se comprobarán para determinar la clasificación de un punto de consulta específico. Por ejemplo, si k=1, la instancia se asignará a la misma clase que su único vecino más cercano.
Definir k puede ser un acto de equilibrio, ya que diferentes valores pueden conducir a un ajuste excesivo o insuficiente. Los valores más bajos de k pueden tener una varianza alta, pero un sesgo bajo, y los valores más altos de k pueden provocar un sesgo alto y una varianza más baja. La elección de k dependerá en gran medida de los datos de entrada, ya que los datos con más valores atípicos o ruido probablemente funcionarán mejor con valores más altos de k. En general, se recomienda tener un número impar para k para evitar empates en la clasificación, y las tácticas de validación cruzada pueden ayudarlo a elegir el k óptimo para su conjunto de datos.
Para profundizar, puede obtener más información sobre el algoritmo k-NN mediante Python y Scikit-learn (también conocido como sklearn). Nuestro tutorial de watsonx Studio le ayuda a aprender la sintaxis básica de esta biblioteca, que también contiene otras bibliotecas populares, como NumPy, pandas y Matplotlib. El siguiente código es un ejemplo de cómo crear y predecir con un modelo KNN:
El algoritmo k-NN se ha utilizado en una variedad de aplicaciones, principalmente en la clasificación. Algunos de estos casos de uso incluyen:
Al igual que cualquier algoritmo de machine learning, k-NN tiene sus fortalezas y debilidades. Dependiendo del proyecto y la aplicación, puede o no ser la opción correcta.
Entrene, valide, ajuste e implemente IA generativa, modelos fundacionales y capacidades de machine learning con IBM watsonx.ai, un estudio empresarial de nueva generación para desarrolladores de IA. Cree aplicaciones de IA en menos tiempo y con menos datos.
Ponga la IA a trabajar en su negocio con la experiencia líder en IA del sector de IBM y junto a su cartera de soluciones.
Reinvente las operaciones y flujos de trabajo críticos añadiendo IA para maximizar las experiencias, la toma de decisiones en tiempo real y el valor empresarial.