Algoritmo knn

Despues de elegir k

  1. 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).

  2. Para cada registro no etiquetado, k-nn identifica los registros k en la data de entrenamiento que son los “más cercanos” en similitud.

  3. 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.

LS0tDQp0aXRsZTogIkstVmVjaW5vcyBtYXMgY2VyY2Fub3MoS05OKSINCnN1YnRpdGxlOiAiQWxnb3JpdG1vIGRlIGFwcmVuZGlzYWplIE5vIFN1cGVydmlzYWRvIg0KYXV0aG9yOiAiV2FsZG8gSm9zZSBHb21leiBTZXJ2YW4iDQpkYXRlOiAiMjAyMi8wNS8wMiINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICBjb2RlX2Rvd25sb2FkOiBUUlVFDQotLS0NCg0KIyAqKkFsZ29yaXRtbyBrbm4qKg0KDQotICAgRWwgYWxnb3JpdG1vIGstbm4gZXMgdW5vIGRlIGxvcyBhbGdvcml0bW9zIGRlIGFwcmVuZGl6YWplIGF1dG9tw6F0aWNvIHF1ZSBlcyBtdXkgZsOhY2lsIGRlIGVudGVuZGVyIHkgZnVuY2lvbmEgaW5jcmXDrWJsZW1lbnRlIGJpZW4gZW4gbGEgcHLDoWN0aWNhLg0KDQotICAgRXMgdW4gYWxnb3JpdG1vIG5vIHBhcmFtw6l0cmljby4gKk5vIHBhcmFtw6l0cmljbyBzaWduaWZpY2EgcXVlIGVsIGFsZ29yaXRtbyBubyBoYWNlIHN1cG9zaWNpb25lcyBzb2JyZSBsYSBkaXN0cmlidWNpw7NuIGRlIHByb2JhYmlsaWRhZCBkZSBsb3MgZGF0b3MgZGUgbGEgbXVlc3RyYS4qDQoNCi0gICBFbCBhbGdvcml0bW8gay1ubiB0b21hIHN1IG5vbWJyZSBkZWwgaGVjaG8gZGUgcXVlIHVzYSBpbmZvcm1hY2nDs24gc29icmUgbG9zIDx1PiBrIHZlY2lub3MgbcOhcyBjZXJjYW5vczwvdT4gZGUgdW4gZWplbXBsbyBwYXJhIGNsYXNpZmljYXIgZWplbXBsb3Mgbm8gZXRpcXVldGFkb3MuDQoNCi0gICBMYSBsZXRyYSBrIGVzIHVuIHTDqXJtaW5vIHZhcmlhYmxlIHF1ZSBpbXBsaWNhIHF1ZSBzZSBwb2Ryw61hIHVzYXIgY3VhbHF1aWVyIG7Dum1lcm8gZGUgdmVjaW5vcyBtw6FzIGNlcmNhbm9zDQoNCiMjICoqRGVzcHVlcyBkZSBlbGVnaXIgayoqDQoNCjEuICBFbCBhbGdvcml0bW8gcmVxdWllcmUgdW4gY29uanVudG8gZGUgZGF0b3MgZGUgZW50cmVuYW1pZW50byBjb21wdWVzdG8gcG9yIGVqZW1wbG9zIHF1ZSB5YSBlc3TDoW4gY2xhc2lmaWNhZG9zIGVuIHZhcmlhcyBjYXRlZ29yw61hcywgc2Vnw7puIGxhIGV0aXF1ZXRhIGRlIHVuYSB2YXJpYWJsZSBjYXRlZ8OzcmljYSAoWSkuDQoNCjIuICBQYXJhIGNhZGEgcmVnaXN0cm8gbm8gZXRpcXVldGFkbywgay1ubiBpZGVudGlmaWNhIGxvcyByZWdpc3Ryb3MgayBlbiBsYSBkYXRhIGRlIGVudHJlbmFtaWVudG8gcXVlIHNvbiBsb3MgIm3DoXMgY2VyY2Fub3MiIGVuIHNpbWlsaXR1ZC4NCg0KMy4gIEFsIHJlZ2lzdHJvIG5vIGV0aXF1ZXRhZG8gc2UgbGUgYXNpZ25hIGxhIGNsYXNlIGRlIGxhIG1heW9yw61hIGRlIGxvcyBrIHZlY2lub3MgbcOhcyBjZXJjYW5vcy4NCg0KIyMgKipUaXBvcyBkZSBkaXN0YW5jaWEqKg0KDQpQYXJhIGhhbGxhciBsYSAiY2VyY2FuaWEiIGRlIHVuIGluZGl2aWR1byBhIG90cm8gc2UgcHVlZGVuIHVzYXIgZGlzdGludG9zIHRpcG9zIGRlIGRpc3RhbmNpYSBhIGNvbnRpbnVhY2lvbiBsYXMgcHJpbmNpcGFsZXM6DQoNCiMjIyMgRGlzdGFuY2lhIGV1Y2xpZGlhbmENCg0KJCQNClxzcXJ0e1xzdW1fe2k9MX1eayAoe3hfaS15X2l9KV4yfQ0KJCQNCg0KIyMjIyBEaXN0YW5jaWEgbWFuaGF0dGFuDQoNCiQkDQpcc3VtX3tpPTF9Xmt8eF9pLXlfaXwNCiQkDQoNCiMjIyMgRGlzdGFuY2lhIG1pbmtvd3NraQ0KDQokJA0KKFxzdW1fe2k9MX1eayAoe3x4X2kteV9pfH0pXnEpXlxmcmFjIHsxfXtxfQ0KJCQNCg0KIyMgKirCv0NvbW8gZnVuY2lvbmEgZWwgYWxnb3JpdG1vIEtOTj8qKg0KDQo8Y2VudGVyPg0KDQohW10oMXJhaW1hZ2VuLnBuZykNCg0KPC9jZW50ZXI+DQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQo8Y2VudGVyPg0KDQohW10oMmRhaW1hZ2VuLnBuZykNCg0KPC9jZW50ZXI+DQoNCiMjICoqRWxlY2Npw7NuIGRlbCBLKioNCg0KLSAgIExhIGRlY2lzacOzbiBkZSBjdcOhbnRvcyB2ZWNpbm9zIHVzYXIgcGFyYSBrLW5uIGRldGVybWluYSBxdcOpIHRhbiBiaWVuIGVsIG1vZGVsbyBnZW5lcmFsaXphcsOhIHBhcmEgZnV0dXJvcyBkYXRvcy4NCg0KLSAgIEVsIGJhbGFuY2UgZW50cmUgZWwgb3ZlcmZpdHRpbmcgeSBlbCB1bmRlcmZpdHRpbmcgZGUgbG9zIGRhdG9zIGRlIGVudHJlbmFtaWVudG8gZXMgdW4gcHJvYmxlbWEgY29ub2NpZG8gY29tbyBiaWFzLXZhcmlhbmNlIHRyYWRlb2ZmLg0KDQohW10oM3JhaW1hZ2VuLnBuZykNCg0KLSAgIExhIGVsZWNjacOzbiBkZSB1biBrIGdyYW5kZSByZWR1Y2UgZWwgaW1wYWN0byBvIGxhIHZhcmlhbnphIGNhdXNhZGEgcG9yIGxhIGRhdGEgY29uIHJ1aWRvLCBwZXJvIHB1ZWRlIHNlc2dhciBlbCBhcHJlbmRpemFqZSBjb24gZWwgcmllc2dvIGRlIGlnbm9yYXIgcGF0cm9uZXMgcGVxdWXDsW9zIHBlcm8gaW1wb3J0YW50ZXMuDQoNCi0gICBTdXBvbmllbmRvIHF1ZSBzZSBlbGlqYSB1biBrIHRhbiBncmFuZGUgY29tbyBlbCBuw7ptZXJvIHRvdGFsIGRlIG9ic2VydmFjaW9uZXMgZW4gbG9zIGRhdG9zIGRlIGVudHJlbmFtaWVudG8uIENvbiBjYWRhIGluc3RhbmNpYSBkZSBlbnRyZW5hbWllbnRvIHJlcHJlc2VudGFkbyBlbiBsYSB2b3RhY2nDs24gZmluYWwsIGxhIGNsYXNlIG3DoXMgY29tw7puIHNpZW1wcmUgdGllbmUgbGEgbWF5b3LDrWEgZGUgdm90b3MuIFBvciBsbyB0YW50bywgZWwgbW9kZWxvIHNpZW1wcmUgcHJlZGVjaXLDrWEgbGEgY2xhc2UgbWF5b3JpdGFyaWEsIGluZGVwZW5kaWVudGVtZW50ZSBkZSBsb3MgdmVjaW5vcyBtw6FzIGNlcmNhbm9zLg0KDQotICAgRW4gZWwgZXh0cmVtbyBvcHVlc3RvLCBlbCB1c28gZGUgdW4gaz0xIHBlcm1pdGUgbGEgZGF0YSBjb24gcnVpZG8gdSBvdXRsaWVycyBxdWUgaW5mbHV5ZW4gaW5kZWJpZGFtZW50ZSBlbiBsYSBjbGFzaWZpY2FjacOzbiBkZSBlamVtcGxvcy4NCg0KLSAgIFN1cG9uaWVuZG8gcXVlIGFsZ3Vub3MgZGUgbG9zIGVqZW1wbG9zIGRlIGVudHJlbmFtaWVudG8gZnVlcm9uIG1hbCBldGlxdWV0YWRvcyBhY2NpZGVudGFsbWVudGUuIEN1YWxxdWllciBlamVtcGxvIHNpbiBldGlxdWV0YSBxdWUgc2VhIGVsIG3DoXMgY2VyY2FubyBhbCB2ZWNpbm8gZXRpcXVldGFkbyBpbmNvcnJlY3RhbWVudGUsIHNlIHByZWRpY2UgcXVlIHRlbmRyw6EgbGEgY2xhc2UgaW5jb3JyZWN0YSwgaW5jbHVzbyBzaSBvdHJvcyBudWV2ZSB2ZWNpbm9zIG3DoXMgY2VyY2Fub3MgaHViaWVyYW4gdm90YWRvIGRlIG1hbmVyYSBkaWZlcmVudGUuDQoNCi0gICBPYnZpYW1lbnRlLCBlbCBtZWpvciB2YWxvciBrIGVzdMOhIGVuIGFsZ8O6biBwdW50byBlbnRyZSBlc3RvcyBkb3MgZXh0cmVtb3MuDQoNCiFbXSg1dGFpbWFnZW4ucG5nKQ0KDQojIyAqKipWRU5UQUpBUyBERUwgQUxHT1JJVE1PIEtOTioqKg0KDQotICAgRXMgc2ltcGxlIHkgZWZpY2F6Lg0KDQotICAgTm8gaGFjZSBuaW5ndW5hIHN1cG9zaWNpw7NuIHNvYnJlIGxhIGRpc3RyaWJ1Y2nDs24gZGUgbG9zIGRhdG9zLg0KDQotICAgTGEgZmFzZSBkZSBlbnRyZW5hbWllbnRvIGVzIHLDoXBpZGEuDQoNCiMjICoqREVTVkVOVEFKQVMgREVMIEFMR09SSVRNTyBLTk4qKg0KDQotICAgTm8gcHJvZHVjZSB1biBtb2RlbG8sIGxpbWl0YW5kbyBsYSBjYXBhY2lkYWQgZGUgZW50ZW5kZXIgY8OzbW8gbGFzIHZhcmlhYmxlcyBwcmVkaWN0b3JhcyAoWCdzKSBlc3TDoW4gcmVsYWNpb25hZGFzIGNvbiBsYSBjbGFzZSBhIHByZWRlY2lyIChZKS4NCg0KLSAgIFJlcXVpZXJlIGxhIHNlbGVjY2nDs24gZGUgdW4gayBhcHJvcGlhZG8uDQoNCi0gICBMYSBmYXNlIGRlIGNsYXNpZmljYWNpw7NuIGVzIGxlbnRhLg0KDQotICAgVmFyaWFibGVzIGN1YWxpdGF0aXZhcyB5IG1pc3NpbmcgZGF0YSByZXF1aWVyZW4gdW4gcHJvY2VzYW1pZW50byBhZGljaW9uYWwuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiMjIyMgRmluYWxtZW50ZSBhIGNvbnRpbnVhY2lvbiBzZSBjb21wYXJ0ZSB1biB2aWRlbyBxdWUgZXhwbGljYSBlbCBhbGdvcml0bW8ga25uIGVuIHB5dGhvbiBtZWRpYW50ZSB1biBlamVtcGxvLg0KDQo8Y2VudGVyPg0KDQo8aWZyYW1lIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL1hONmZDaE5xZmJzIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3dmdWxsc2NyZWVuIGRhdGEtZXh0ZXJuYWw9IjEiPg0KDQo8L2lmcmFtZT4NCg0KPC9jZW50ZXI+DQo=