Buscar este blog

sábado, 22 de marzo de 2014

K-NN (K Nearest Neighbor), el algoritmo del vecino mas cercano

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: