En estadística , el algoritmo de los k vecinos más cercanos ( k -NN ) es un método de aprendizaje supervisado no paramétrico desarrollado por primera vez por Evelyn Fix y Joseph Hodges en 1951, [1] y luego ampliado por Thomas Cover . [2] Se utiliza para la clasificación y la regresión . En ambos casos, la entrada consiste en los k ejemplos de entrenamiento más cercanos en un conjunto de datos . La salida depende de si se utiliza k -NN para la clasificación o la regresión:
La k -NN es un tipo de clasificación en el que la función solo se aproxima localmente y todos los cálculos se posponen hasta la evaluación de la función. Dado que este algoritmo se basa en la distancia para la clasificación, si las características representan unidades físicas diferentes o vienen en escalas muy diferentes, entonces la normalización de los datos de entrenamiento por características puede mejorar en gran medida su precisión. [3]
Tanto para la clasificación como para la regresión, una técnica útil puede ser la de asignar pesos a las contribuciones de los vecinos, de modo que los vecinos más cercanos contribuyan más al promedio que los más distantes. Por ejemplo, un esquema de ponderación común consiste en dar a cada vecino un peso de 1/ d , donde d es la distancia al vecino. [4]
Los vecinos se toman de un conjunto de objetos para los que se conoce la clase (para la clasificación k -NN) o el valor de la propiedad del objeto (para la regresión k -NN). Esto se puede considerar como el conjunto de entrenamiento para el algoritmo, aunque no se requiere ningún paso de entrenamiento explícito.
Una peculiaridad (a veces incluso una desventaja) del algoritmo k -NN es su sensibilidad a la estructura local de los datos.
Supongamos que tenemos pares que toman valores en , donde Y es la etiqueta de clase de X , de modo que para (y distribuciones de probabilidad ). Dada alguna norma en y un punto , sea un reordenamiento de los datos de entrenamiento tal que .
Los ejemplos de entrenamiento son vectores en un espacio de características multidimensional, cada uno con una etiqueta de clase. La fase de entrenamiento del algoritmo consiste únicamente en almacenar los vectores de características y las etiquetas de clase de las muestras de entrenamiento.
En la fase de clasificación, k es una constante definida por el usuario y un vector sin etiqueta (un punto de consulta o de prueba) se clasifica asignando la etiqueta que es más frecuente entre las k muestras de entrenamiento más cercanas a ese punto de consulta.
Una métrica de distancia comúnmente utilizada para variables continuas es la distancia euclidiana . Para variables discretas, como para la clasificación de texto, se puede utilizar otra métrica, como la métrica de superposición (o distancia de Hamming ). En el contexto de los datos de microarrays de expresión genética, por ejemplo, se ha empleado k -NN con coeficientes de correlación, como Pearson y Spearman, como métrica. [5] A menudo, la precisión de clasificación de k -NN se puede mejorar significativamente si la métrica de distancia se aprende con algoritmos especializados como el análisis de componentes de vecindad o de vecino más cercano de margen grande .
Un inconveniente de la clasificación básica de "votación mayoritaria" se produce cuando la distribución de clases está sesgada. Es decir, los ejemplos de una clase más frecuente tienden a dominar la predicción del nuevo ejemplo, porque tienden a ser comunes entre los k vecinos más cercanos debido a su gran número. [6] Una forma de superar este problema es ponderar la clasificación, teniendo en cuenta la distancia desde el punto de prueba a cada uno de sus k vecinos más cercanos. La clase (o valor, en problemas de regresión) de cada uno de los k puntos más cercanos se multiplica por un peso proporcional al inverso de la distancia desde ese punto al punto de prueba. Otra forma de superar el sesgo es mediante la abstracción en la representación de datos. Por ejemplo, en un mapa autoorganizado (SOM), cada nodo es un representante (un centro) de un grupo de puntos similares, independientemente de su densidad en los datos de entrenamiento originales. K -NN se puede aplicar entonces al SOM.
La mejor elección de k depende de los datos; generalmente, valores mayores de k reducen el efecto del ruido en la clasificación, [7] pero hacen que los límites entre clases sean menos claros. Se puede seleccionar un buen k mediante varias técnicas heurísticas (ver optimización de hiperparámetros ). El caso especial en el que se predice que la clase será la clase de la muestra de entrenamiento más cercana (es decir, cuando k = 1) se denomina algoritmo del vecino más cercano.
La precisión del algoritmo k -NN puede verse gravemente degradada por la presencia de características ruidosas o irrelevantes, o si las escalas de las características no son coherentes con su importancia. Se ha dedicado mucho esfuerzo de investigación a seleccionar o escalar características para mejorar la clasificación. Un enfoque particularmente popular [ cita requerida ] es el uso de algoritmos evolutivos para optimizar el escalamiento de características. [8] Otro enfoque popular es escalar características mediante la información mutua de los datos de entrenamiento con las clases de entrenamiento. [ cita requerida ]
En los problemas de clasificación binaria (dos clases), resulta útil elegir k como un número impar, ya que esto evita los empates. Una forma popular de elegir el k empíricamente óptimo en este contexto es mediante el método bootstrap. [9]
El clasificador de tipo vecino más cercano más intuitivo es el clasificador de vecino más cercano que asigna un punto x a la clase de su vecino más cercano en el espacio de características, es decir .
A medida que el tamaño del conjunto de datos de entrenamiento se acerca al infinito, el clasificador vecino más cercano garantiza una tasa de error no peor que el doble de la tasa de error de Bayes (la tasa de error mínima alcanzable dada la distribución de los datos).
El clasificador de k vecinos más cercanos puede considerarse como el que asigna a los k vecinos más cercanos un peso y a todos los demás un peso 0. Esto se puede generalizar a los clasificadores de vecinos más cercanos ponderados. Es decir, donde al i -ésimo vecino más cercano se le asigna un peso , con . También se cumple un resultado análogo sobre la fuerte consistencia de los clasificadores de vecinos más cercanos ponderados. [10]
Sea el clasificador ponderado más próximo con pesos . Sujeto a condiciones de regularidad, que en la teoría asintótica son variables condicionales que requieren suposiciones para diferenciar entre parámetros con algún criterio. En las distribuciones de clase el riesgo excesivo tiene la siguiente expansión asintótica [11] para constantes y donde y .
El esquema de ponderación óptimo , que equilibra los dos términos en la visualización anterior, se da de la siguiente manera: conjunto , para y para .
Con ponderaciones óptimas, el término dominante en la expansión asintótica del riesgo excesivo es . Se obtienen resultados similares cuando se utiliza un clasificador de vecino más próximo en bolsas .
k -NN es un caso especial de un estimador "global" de densidad de kernel y ancho de banda variable con un kernel uniforme . [12] [13]
La versión ingenua del algoritmo es fácil de implementar calculando las distancias desde el ejemplo de prueba hasta todos los ejemplos almacenados, pero requiere un gran esfuerzo computacional para conjuntos de entrenamiento grandes. El uso de un algoritmo de búsqueda aproximada del vecino más cercano hace que la red neuronal k sea computacionalmente factible incluso para conjuntos de datos grandes. A lo largo de los años se han propuesto muchos algoritmos de búsqueda del vecino más cercano; estos generalmente buscan reducir la cantidad de evaluaciones de distancia que realmente se realizan.
El algoritmo k- NN tiene algunos resultados de consistencia sólida . A medida que la cantidad de datos se acerca al infinito, se garantiza que el algoritmo k - NN de dos clases arrojará una tasa de error no peor que el doble de la tasa de error de Bayes (la tasa de error mínima alcanzable dada la distribución de los datos). [2] Es posible realizar varias mejoras en la velocidad del algoritmo k -NN mediante el uso de gráficos de proximidad. [14]
Para la clasificación multiclase k- NN, Cover y Hart (1967) prueban una tasa de error de límite superior de donde es la tasa de error de Bayes (que es la tasa de error mínima posible), es la tasa de error asintótica k -NN y M es el número de clases en el problema. Este límite es estricto en el sentido de que tanto el límite inferior como el superior se pueden lograr mediante alguna distribución. [15] Para y a medida que la tasa de error bayesiana se acerca a cero, este límite se reduce a "no más del doble de la tasa de error bayesiana".
Hay muchos resultados sobre la tasa de error de los k clasificadores de vecinos más cercanos. [16] El clasificador de vecinos más cercanos es fuertemente (es decir, para cualquier distribución conjunta en ) consistente siempre que diverja y converja a cero cuando .
Sea el clasificador vecino más próximo k basado en un conjunto de entrenamiento de tamaño n . En determinadas condiciones de regularidad, el riesgo excesivo produce la siguiente expansión asintótica [11] para algunas constantes y .
La elección ofrece un equilibrio entre los dos términos en la visualización anterior, para el cual el error del vecino más cercano converge al error de Bayes en la tasa óptima ( minimax ) .
El rendimiento de la clasificación de K vecinos más cercanos a menudo se puede mejorar significativamente a través del aprendizaje métrico ( supervisado ). Los algoritmos populares son el análisis de componentes del vecindario y el vecino más cercano de margen grande . Los algoritmos de aprendizaje métrico supervisado utilizan la información de la etiqueta para aprender una nueva métrica o pseudométrica .
Cuando los datos de entrada de un algoritmo son demasiado grandes para ser procesados y se sospecha que son redundantes (por ejemplo, la misma medida en pies y metros), entonces los datos de entrada se transformarán en un conjunto de características de representación reducida (también llamado vector de características). La transformación de los datos de entrada en el conjunto de características se denomina extracción de características . Si las características extraídas se eligen cuidadosamente, se espera que el conjunto de características extraiga la información relevante de los datos de entrada para realizar la tarea deseada utilizando esta representación reducida en lugar de la entrada de tamaño completo. La extracción de características se realiza en datos sin procesar antes de aplicar el algoritmo k -NN en los datos transformados en el espacio de características .
Un ejemplo de un proceso típico de cálculo de visión artificial para reconocimiento facial utilizando k -NN, que incluye pasos de preprocesamiento de extracción de características y reducción de dimensión (generalmente implementados con OpenCV ):
En el caso de datos de alta dimensión (por ejemplo, con un número de dimensiones superior a 10), la reducción de dimensión se realiza generalmente antes de aplicar el algoritmo k -NN para evitar los efectos de la maldición de la dimensionalidad . [17]
La maldición de la dimensionalidad en el contexto k -NN básicamente significa que la distancia euclidiana no es útil en dimensiones altas porque todos los vectores son casi equidistantes al vector de consulta de búsqueda (imagine múltiples puntos ubicados más o menos en un círculo con el punto de consulta en el centro; la distancia desde la consulta a todos los puntos de datos en el espacio de búsqueda es casi la misma).
La extracción de características y la reducción de dimensión se pueden combinar en un solo paso utilizando técnicas de análisis de componentes principales (PCA), análisis discriminante lineal (LDA) o análisis de correlación canónica (CCA) como paso de preprocesamiento, seguido de la agrupación por k -NN en vectores de características en un espacio de dimensión reducida. Este proceso también se denomina incrustación de baja dimensión . [18]
Para conjuntos de datos de dimensiones muy altas (por ejemplo, cuando se realiza una búsqueda de similitud en transmisiones de video en vivo, datos de ADN o series de tiempo de alta dimensión ), ejecutar una búsqueda rápida aproximada de k -NN utilizando hash sensible a la localidad , "proyecciones aleatorias", [19] "bocetos" [20] u otras técnicas de búsqueda de similitud de alta dimensión de la caja de herramientas VLDB podría ser la única opción factible.
Las reglas del vecino más próximo calculan implícitamente el límite de decisión . También es posible calcular el límite de decisión explícitamente y hacerlo de manera eficiente, de modo que la complejidad computacional sea una función de la complejidad del límite. [21]
La reducción de datos es uno de los problemas más importantes a la hora de trabajar con grandes conjuntos de datos. Normalmente, solo se necesitan algunos puntos de datos para una clasificación precisa. Esos datos se denominan prototipos y se pueden encontrar de la siguiente manera:
Un ejemplo de entrenamiento rodeado de ejemplos de otras clases se denomina clase atípica. Las causas de las clases atípicas incluyen:
Los valores atípicos de clase con k -NN producen ruido. Se pueden detectar y separar para un análisis futuro. Dados dos números naturales, k > r > 0, un ejemplo de entrenamiento se denomina valor atípico de clase ( k , r )NN si sus k vecinos más cercanos incluyen más de r ejemplos de otras clases.
El vecino más cercano condensado (CNN, el algoritmo Hart ) es un algoritmo diseñado para reducir el conjunto de datos para la clasificación k -NN. [22] Selecciona el conjunto de prototipos U de los datos de entrenamiento, de modo que 1NN con U puede clasificar los ejemplos casi con tanta precisión como lo hace 1NN con todo el conjunto de datos.
Dado un conjunto de entrenamiento X , CNN funciona iterativamente:
Utilice U en lugar de X para la clasificación. Los ejemplos que no son prototipos se denominan puntos "absorbidos".
Es eficiente escanear los ejemplos de entrenamiento en orden decreciente de proporción de borde. [23] La proporción de borde de un ejemplo de entrenamiento x se define como
donde " xy " es la distancia al ejemplo más cercano y que tiene un color diferente al de x , y " x'-y " es la distancia de y a su ejemplo más cercano x' con la misma etiqueta que x .
La razón de borde está en el intervalo [0,1] porque ‖ x'-y ‖ nunca excede ‖ xy ‖ . Este orden da preferencia a los bordes de las clases para su inclusión en el conjunto de prototipos U . Un punto de una etiqueta diferente a x se llama externo a x . El cálculo de la razón de borde se ilustra en la figura de la derecha. Los puntos de datos están etiquetados por colores: el punto inicial es x y su etiqueta es rojo. Los puntos externos son azul y verde. El punto externo más cercano a x es y . El punto rojo más cercano a y es x' . La razón de borde a ( x ) = ‖ x'-y ‖ / ‖ xy ‖ es el atributo del punto inicial x .
A continuación se muestra una ilustración de CNN en una serie de figuras. Hay tres clases (rojo, verde y azul). Fig. 1: inicialmente hay 60 puntos en cada clase. La Fig. 2 muestra el mapa de clasificación 1NN: cada píxel es clasificado por 1NN utilizando todos los datos. La Fig. 3 muestra el mapa de clasificación 5NN. Las áreas blancas corresponden a las regiones no clasificadas, donde la votación 5NN está empatada (por ejemplo, si hay dos puntos verdes, dos rojos y uno azul entre los 5 vecinos más cercanos). La Fig. 4 muestra el conjunto de datos reducido. Las cruces son los valores atípicos de clase seleccionados por la regla (3,2)NN (los tres vecinos más cercanos de estas instancias pertenecen a otras clases); los cuadrados son los prototipos y los círculos vacíos son los puntos absorbidos. La esquina inferior izquierda muestra los números de los valores atípicos de clase, prototipos y puntos absorbidos para las tres clases. El número de prototipos varía del 15% al 20% para las diferentes clases en este ejemplo. La figura 5 muestra que el mapa de clasificación 1NN con los prototipos es muy similar al del conjunto de datos inicial. Las figuras se generaron utilizando la aplicación Mirkes. [23]
En la regresión k -NN, se utiliza el algoritmo k -NN [ cita requerida ] para estimar variables continuas. Uno de estos algoritmos utiliza un promedio ponderado de los k vecinos más cercanos, ponderado por el inverso de su distancia. Este algoritmo funciona de la siguiente manera:
La distancia al k -ésimo vecino más cercano también puede verse como una estimación de densidad local y, por lo tanto, también es una puntuación de valor atípico popular en la detección de anomalías . Cuanto mayor sea la distancia al k -NN, menor será la densidad local y más probable será que el punto de consulta sea un valor atípico. [24] Aunque bastante simple, este modelo de valor atípico, junto con otro método clásico de minería de datos, el factor de valor atípico local , funciona bastante bien también en comparación con enfoques más recientes y más complejos, según un análisis experimental a gran escala. [25]
A menudo se utiliza una matriz de confusión o "matriz de emparejamiento" como herramienta para validar la precisión de la clasificación k -NN. También se pueden aplicar métodos estadísticos más robustos, como la prueba de razón de verosimilitud . [ ¿Cómo? ]