Sun. Dec 4th, 2022

Implementación y explicación detallada del algoritmo KNN

Foto de Guillermo Ferla en Unsplash

Antecedentes de KNN

KNN significa K vecino más cercano. El propio nombre sugiere que se considera el vecino más cercano. Es uno de los algoritmos de aprendizaje automático supervisado. Curiosamente, podemos resolver problemas de clasificación y regresión con el algoritmo. Es uno de los modelos de Machine Learning más simples. Aunque es un modelo simple, a veces juega un papel importante, básicamente cuando nuestro conjunto de datos es pequeño y el problema es simple. El algoritmo también se conoce como algoritmo perezoso. Este es el resumen del algoritmo KNN. Lo explicaré desde los conceptos básicos de KNN para que pueda entender el artículo de memoria. Al final del artículo, puede implementar el algoritmo usted mismo (sin ninguna biblioteca de aprendizaje automático).

Distancia euclidiana

Imagen por autorAquí, (X1, Y1) y (X2, Y2) son los dos puntos que se muestran en la imagen. Podemos calcular la distancia entre los dos puntos con la siguiente fórmula.Si tenemos más de dos características, debemos agregar la distancia al cuadrado a la fórmula anterior para obtener la distancia.

Descripción general del algoritmo KNN

El nombre indica que el algoritmo considera los elementos más cercanos para predecir el valor de los nuevos datos. El diagrama de flujo muestra los pasos para KNN.Diagrama de flujo del algoritmo KNN (Imagen del autor) Me explico.Paso 1: Cálculo de la distanciaEn primer lugar, necesitamos cargar el conjunto de datos etiquetados ya que el algoritmo KNN es un algoritmo de aprendizaje supervisado. Mira la imagen de abajo.Distancia desde los puntos de datos (Imagen del autor) Supongamos que nuestro conjunto de datos tiene solo dos características y trazamos los datos como se muestra en la imagen. Los puntos azul y rojo indican dos categorías diferentes. Tengamos nuevos datos sin etiquetar que requieran una clasificación basada en el conjunto de datos dado. En la imagen, el punto central debe clasificarse. Ahora, calcularemos la distancia de todos los datos a partir de los datos no etiquetados. La flecha desde el punto central representa las distancias.Paso 2: Seleccionar K-vecino más cercanoEn el paso anterior, calculamos las distancias del nuevo punto a partir de todos los demás datos. Ordenaremos los puntos de datos en orden ascendente según la distancia. Finalmente, consideraremos la k número de puntos más cercanos de los datos no etiquetados.Imagen por autorEn la imagen de arriba, he considerado el 3 puntos de datos más cercanos (K=3). Observa la imagen; entre 3 puntos más cercanos2 los datos pertenecen a la categoría roja, y 1 a la categoría azul. Entonces, el rojo es la clase mayoritaria. De acuerdo con la KNN algoritmo, los nuevos puntos de datos se clasificarán como rojos.En caso de un problema de regresión, consideraremos el valor promedio de K puntos de datos más cercanos.

¿Por qué KNN es un algoritmo perezoso?

KNN no tiene período de entrenamiento. Para cada predicción, el algoritmo debe someterse al mismo proceso. No hay ningún parámetro que se pueda optimizar en el período de entrenamiento. Por lo tanto, es un algoritmo perezoso. Cuando el tamaño del conjunto de datos es grande, la predicción lleva más tiempo.

Implementación del KNN desde Cero

Escribamos algunas líneas de código para implementar el algoritmo. Importación de los módulos. Creación de una función para calcular la distancia. euclidiana La función toma dos parámetros, a saber, p1 y p2. Según la fórmula explicada en el Distancia euclidiana sección, la función calculará la distancia desde el punto p1 hasta el punto p2. En el siguiente paso, escribiremos una función para guardar la distancia de cada punto del conjunto de datos desde el nuevo punto de datos y ordenar los datos. Finalmente, seleccionaremos la clase para el nuevo punto de datos con la clase mayoritaria. Hemos creado el ‘predecir’ función para encontrar la predicción para un montón de nuevos puntos de datos. Usemos nuestra función ‘predecir’ para obtener el iris predicción del conjunto de datos. Aquí, hemos seleccionado manualmente los datos del tren y de la prueba. Primero aleatorizamos los datos para evitar sesgos. Luego seleccionamos el 80% de los datos para entrenamiento y el resto para pruebas. Finalmente, probamos nuestro modelo para 7 vecinos más cercanos (k=7).El artículo [1] me ayuda a implementar el algoritmo KNN.Hecho. Hemos implementado KNN desde cero. Tomemos un café y pensemos en el algoritmo. Si surge alguna confusión, no olvide hacer un comentario (o comunicarse conmigo).Foto de Kyle Glenn en Unsplash

Conclusión

El algoritmo KNN parece muy simple. Pero a veces, juega un papel importante en la resolución de problemas importantes de aprendizaje automático. Cuando nuestros datos son ruidosos, necesitamos resolver problemas simples. Correr siempre hacia un modelo de aprendizaje profundo no es deseable porque requiere una gran potencia computacional y datos. Si saltamos ciegamente sobre los modelos de aprendizaje profundo siempre, no obtendremos un buen resultado. La buena práctica es tener una intuición profunda sobre todos los modelos de ML y tomar decisiones adecuadas analizando el problema.