El algoritmo k-nn es uno de los algoritmos de aprendizaje
automático que es muy fácil de entender y funciona increíblemente bien
en la práctica.
Es un algoritmo no paramétrico. No paramétrico significa que
el algoritmo no hace suposiciones sobre la distribución de probabilidad
de los datos de la muestra.
El algoritmo k-nn toma su nombre del hecho de que usa información
sobre los k vecinos más cercanos de un ejemplo para clasificar
ejemplos no etiquetados.
La letra k es un término variable que implica que se podría usar
cualquier número de vecinos más cercanos
Despues de elegir k
El algoritmo requiere un conjunto de datos de entrenamiento
compuesto por ejemplos que ya están clasificados en varias categorías,
según la etiqueta de una variable categórica (Y).
Para cada registro no etiquetado, k-nn identifica los registros k
en la data de entrenamiento que son los “más cercanos” en
similitud.
Al registro no etiquetado se le asigna la clase de la mayoría de
los k vecinos más cercanos.
Tipos de distancia
Para hallar la “cercania” de un individuo a otro se pueden usar
distintos tipos de distancia a continuacion las principales:
Distancia euclidiana
\[
\sqrt{\sum_{i=1}^k ({x_i-y_i})^2}
\]
Distancia manhattan
\[
\sum_{i=1}^k|x_i-y_i|
\]
Distancia minkowski
\[
(\sum_{i=1}^k ({|x_i-y_i|})^q)^\frac {1}{q}
\]
¿Como funciona el algoritmo KNN?
Elección del K
La decisión de cuántos vecinos usar para k-nn determina qué tan
bien el modelo generalizará para futuros datos.
El balance entre el overfitting y el underfitting de los datos de
entrenamiento es un problema conocido como bias-variance
tradeoff.
La elección de un k grande reduce el impacto o la varianza
causada por la data con ruido, pero puede sesgar el aprendizaje con el
riesgo de ignorar patrones pequeños pero importantes.
Suponiendo que se elija un k tan grande como el número total de
observaciones en los datos de entrenamiento. Con cada instancia de
entrenamiento representado en la votación final, la clase más común
siempre tiene la mayoría de votos. Por lo tanto, el modelo siempre
predeciría la clase mayoritaria, independientemente de los vecinos más
cercanos.
En el extremo opuesto, el uso de un k=1 permite la data con ruido
u outliers que influyen indebidamente en la clasificación de
ejemplos.
Suponiendo que algunos de los ejemplos de entrenamiento fueron
mal etiquetados accidentalmente. Cualquier ejemplo sin etiqueta que sea
el más cercano al vecino etiquetado incorrectamente, se predice que
tendrá la clase incorrecta, incluso si otros nueve vecinos más cercanos
hubieran votado de manera diferente.
Obviamente, el mejor valor k está en algún punto entre estos dos
extremos.
VENTAJAS DEL ALGORITMO KNN
Es simple y eficaz.
No hace ninguna suposición sobre la distribución de los
datos.
La fase de entrenamiento es rápida.
DESVENTAJAS DEL ALGORITMO KNN
No produce un modelo, limitando la capacidad de entender cómo las
variables predictoras (X’s) están relacionadas con la clase a predecir
(Y).
Requiere la selección de un k apropiado.
La fase de clasificación es lenta.
Variables cualitativas y missing data requieren un procesamiento
adicional.
Finalmente a continuacion se comparte un video que explica el
algoritmo knn en python mediante un ejemplo.