KNN
Significa K-Nearest-Neighbor por sus
siglas en ingles, también llamado algoritmo del vecino mas cercano.
Este método sirve para clasificar nuestra información y obtener
predicciones, tiene una frase famosa que es la siguiente:
“Si algo camina como pato, hace
quack igual que un pato y parece un pato, bueno entonces es probable
que sea un pato”
Básicamente se
basa en tomar la información que deseamos clasificar, calcular las
distancias de todos los miembros de la base de datos (comúnmente un
conjunto de entrenamiento) y se toma un número particular de
vecinos (K) que son los que tuvieron distancias menores, luego se
visualiza la clase de los mismos, de allí se determina que tipo es el
dato que estamos buscando.
La
siguiente imagen muestra un ejemplo muy claro de la idea de este
algoritmo:
Bien
en la imagen tenemos dos figuras, los cuadrados y los hexágonos,
después intentamos clasificar un tercer elemento (un pentágono),
calculamos las distancias de todos sus vecinos y bueno , nos damos
cuenta que tiene mas cercanía con un hexágono, entonces KNN diría la
nueva figura es un hexágono, o al menos es probable que lo sea.
Que
distancia es mas precisa para KNN, bueno, eso depende de nuestros
datos, si tenemos atributos como ingresos mensuales, gastos
mensuales, deudas, otros ingresos, entonces posiblemente una
distancia euclideana seria la respuesta correcta, pero si tenemos
estatura, peso, edad, número de hijos, ingreso mensual, entonces
tenemos datos que por su número opacarian a los demás (a decir
ingreso mensual estaría en miles) entonces una distancia de
Mahalanobis seria nuestra bandera a seguir.
Bien
hasta este punto todo bien, pero no siempre ocurre así, que pasa si
tenemos las mismas figuras, pero con la siguiente disposición:
Si K = 3 , es decir, buscamos los tres
vecinos mas cercanos, clasificaríamos a nuestra figura como un
cuadrado, lo mismo ocurrirìa si K = 4 o K = 5,pero cuando K = 6
entonces tendríamos un empate (cuando esto ocurre he visto que lo que
se suele realizar es sumar las distancias y tomar la suma menor) y si
K = 8, entonces KNN nos diría que es un hexágono.
Es por ello que con este tipo de
algoritmos es exageradamente necesario conocer bien la información y
como parte medular decidir el tipo de cálculo para las distancias. y el número de vecinos a considerar.
Otro punto importante es el factor de
búsqueda, ya que, seria muy costoso (de hecho KNN es un algoritmo
costoso computacionalmente hablando) el calcular la distancia de toda
nuestra base, mas si tenemos millones de registros, es por ello que
suelen utilizarse ciertas heuristicas para determinar con que
elementos realizar la comparación, el mas utilizado es el de
determinar elementos clave (conjuntos de entrenamiento), es decir, si tenemos 1 millón de
registros de tipos de clientes y dos clases a decir, “se acepta
préstamo ” y “se rechaza préstamo”, entonces cuando llega un
posible cliente y le pedimos los datos,no sería práctico calcular la
distancia con el millón de clientes, en vez de ello, podemos tener
unos mil clientes que son icónicos , es decir representan bien a su
clase y con ellos calcular las distancias.
Otra heuristica común es establecer un
rango de búsqueda, aquí usualmente se propone una distancia máxima,
es decir, supongamos que la distancia que queremos calcular es una
distancia euclideana, entonces, queremos que nuestros vecinos no
pasen de cierta distancia:
Para finalizar con este clasificador
comentaré sus características principales:
- No requiere la construcción de un modelo.
- Trabaja con los datos originales (no requiere representaciones especiales de los mismos).
- Realiza su predicción en base a información local (esto cuando se aplican heuristicas de búsqueda).
- Puede producir resultados equivocados si el cálculo de distancia no es el adecuado.
- En general, mientras K sea mayor (sin ser esto una regla), es decir, mientras mas vecinos sean tomados en cuenta, la probabilidad de una predicción correcta aumenta.
No hay comentarios:
Publicar un comentario