El algoritmo de k-vecinos más cercanos (KNN) es un algoritmo de aprendizaje automático supervisado simple y fácil de implementar que se puede usar para resolver ambas clasificaciones y problemas de regresión. ¡Pausa! Desempaquetemos eso.
Un algoritmo de aprendizaje automático supervisado (a diferencia de un algoritmo de aprendizaje automático no supervisado) es uno que se basa en datos de entrada etiquetados para aprender una función que produce un resultado apropiado cuando se le dan nuevos datos sin etiquetar.
Imagine que una computadora es un niño, somos su supervisor (por ejemplo, padre, tutor o maestro) y queremos al niño (computadora) para aprender cómo es un cerdo. Le mostraremos al niño varias imágenes diferentes, algunas de las cuales son cerdos y el resto pueden ser imágenes de cualquier cosa (gatos, perros, etc.).
Cuando vemos un cerdo, gritamos «¡cerdo!» Cuando no es un cerdo, gritamos «¡no, no es un cerdo!» Después de hacer esto varias veces con el niño, le mostramos una imagen y le preguntamos «¿cerdo?» y dirán correctamente (la mayoría de las veces) «¡cerdo!» o «no, cerdo no!» dependiendo de la imagen. Eso es aprendizaje automático supervisado.
Los algoritmos de aprendizaje automático supervisados se utilizan para resolver problemas de clasificación o regresión.
Un problema de clasificación tiene un valor discreto como resultado. Por ejemplo, «le gusta la piña en la pizza» y «no le gusta la piña en la pizza» son discretos. No hay término medio. La analogía anterior de enseñar a un niño a identificar un cerdo es otro ejemplo de un problema de clasificación.
Esta imagen muestra un ejemplo básico de cómo se verían los datos de clasificación. Tenemos un predictor (o conjunto de predictores) y una etiqueta. En la imagen, podríamos estar intentando predecir si a alguien le gusta la piña (1) en su pizza o no (0) según su edad (el predictor).
Es una práctica estándar representar el resultado ( label) de un algoritmo de clasificación como un número entero como 1, -1 o 0. En este caso, estos números son puramente representativos. No se deben realizar operaciones matemáticas en ellos porque hacerlo no tendría sentido. Piense por un momento. ¿Qué es «le gusta la piña» + «no le gusta la piña»? Exactamente. No podemos agregarlos, por lo que no debemos agregar sus representaciones numéricas.
Un problema de regresión tiene un número real (un número con un punto decimal) como salida. Por ejemplo, podríamos usar los datos de la siguiente tabla para estimar el peso de una persona dada su altura.
Los datos utilizados en un análisis de regresión se verán similares a los datos que se muestran en la imagen de arriba. Tenemos una variable independiente (o conjunto de variables independientes) y una variable dependiente (lo que estamos tratando de adivinar dadas nuestras variables independientes). Por ejemplo, podríamos decir que la altura es la variable independiente y el peso es la variable dependiente.
Además, cada fila se suele llamar ejemplo, observación o punto de datos, mientras que cada columna (sin incluir la etiqueta / variable dependiente) a menudo se denomina predictor, dimensión, variable independiente o característica.
Un algoritmo de aprendizaje automático no supervisado utiliza datos de entrada sin etiquetas; en otras palabras, ningún maestro (etiqueta) le dice al niño (computadora) cuando es correcto o cuando ha cometido un error para que pueda autocorregirse.
A diferencia del aprendizaje supervisado que intenta aprender una función que nos permitirá hacer predicciones dados algunos datos nuevos sin etiquetar , el aprendizaje no supervisado intenta aprender la estructura básica de los datos para darnos más información sobre los datos.
K-Vecinos más cercanos
El algoritmo KNN asume que existen cosas similares en las proximidades . En otras palabras, cosas similares están cerca unas de otras.
«Los pájaros del mismo plumaje vuelan juntos.”
Observe en la imagen de arriba que la mayoría de las veces, los puntos de datos similares están cerca unos de otros. El algoritmo KNN depende de que esta suposición sea lo suficientemente cierta como para que el algoritmo sea útil. KNN captura la idea de similitud (a veces llamada distancia, proximidad o cercanía) con algunas matemáticas que podríamos haber aprendido en nuestra infancia: calcular la distancia entre puntos en un gráfico.
Nota: Comprensión de cómo Es necesario calcular la distancia entre puntos en un gráfico antes de continuar. Si no está familiarizado o necesita un repaso sobre cómo se hace este cálculo, lea detenidamente «Distancia entre 2 puntos» en su totalidad y vuelva.
Hay otras formas de calcular la distancia, y una La forma puede ser preferible dependiendo del problema que estemos resolviendo. Sin embargo, la distancia en línea recta (también llamada distancia euclidiana) es una opción popular y familiar.
El algoritmo KNN
- Cargue los datos
- Inicialice K a su número elegido de vecinos
3. Para cada ejemplo en los datos
3.1 Calcule el distancia entre el ejemplo de consulta y el ejemplo actual a partir de los datos.
3.2 Agregar la distancia y el índice del ejemplo a una colección ordenada
4. Ordenar la colección ordenada de distancias y índices de menor a mayor (en orden ascendente) por las distancias
5. Elija las primeras K entradas de la colección ordenada
6. Obtenga las etiquetas de las K entradas seleccionadas
7. Si es regresión, ret urn la media de las etiquetas K
8. Si es una clasificación, devuelve el modo de las etiquetas K
La implementación KNN (desde cero)
Elección del valor correcto para K
Para seleccionar la K adecuada para sus datos, ejecutamos el algoritmo KNN varias veces con diferentes valores de K y elija la K que reduce la cantidad de errores que encontramos mientras mantiene la capacidad del algoritmo para hacer predicciones con precisión cuando se le dan datos que no ha visto antes.
Aquí hay algunas cosas que debe tener en cuenta mente:
- A medida que disminuimos el valor de K a 1, nuestras predicciones se vuelven menos estables. Solo piense por un minuto, imagine K = 1 y tenemos un punto de consulta rodeado por varios rojos y uno verde (estoy pensando en la esquina superior izquierda del gráfico de color de arriba), pero el verde es el único vecino más cercano. Razonablemente, pensaríamos que el punto de consulta es probablemente rojo, pero debido a que K = 1, KNN predice incorrectamente que el punto de consulta es verde.
- Inversamente, a medida que aumentamos el valor de K, nuestras predicciones se vuelven más estable debido a la mayoría de votos / promedios, y por lo tanto, es más probable que haga predicciones más precisas (hasta cierto punto) Eventualmente, comenzamos a presenciar un número creciente de errores. Es en este punto que sabemos que hemos llevado el valor de K demasiado lejos.
- En los casos en los que obtenemos un voto mayoritario (p. Ej., Eligiendo el modo en un problema de clasificación) entre las etiquetas, generalmente hacemos K un número impar para tener un desempate.
Ventajas
- El algoritmo es simple y fácil de implementar.
- No es necesario construya un modelo, ajuste varios parámetros o haga suposiciones adicionales.
- El algoritmo es versátil. Se puede usar para clasificación, regresión y búsqueda (como veremos en la siguiente sección).
Desventajas
- El algoritmo se vuelve significativamente más lento a medida que aumenta el número de ejemplos y / o predictores / variables independientes.
KNN en la práctica
La principal desventaja de KNN de volverse significativamente más lento a medida que aumenta el volumen de datos lo convierte en un elección poco práctica en entornos donde las predicciones deben hacerse rápidamente. Además, existen algoritmos más rápidos que pueden producir resultados de regresión y clasificación más precisos.
Sin embargo, siempre que tenga suficientes recursos informáticos para manejar rápidamente los datos que está utilizando para hacer predicciones, KNN aún puede ser útil para resolver problemas que tienen soluciones que dependen de la identificación de objetos similares. Un ejemplo de esto es el uso del algoritmo KNN en sistemas de recomendación, una aplicación de búsqueda KNN.
Sistemas de recomendación
A escala, esto parecería recomendar productos en Amazon, artículos sobre Medio, películas en Netflix o videos en YouTube. Aunque, podemos estar seguros de que todos usan medios más eficientes para hacer recomendaciones debido al enorme volumen de datos que procesan.
Sin embargo, podríamos replicar uno de estos sistemas de recomendación en una escala más pequeña usando lo que tenemos aprendido aquí en este artículo. Construyamos el núcleo de un sistema de recomendación de películas.
¿Qué pregunta estamos tratando de responder?
Dado nuestro conjunto de datos de películas, ¿cuáles son las 5 películas más similares a una consulta de películas?
Recopile datos de películas
Si trabajáramos en Netflix, Hulu o IMDb, podríamos obtener los datos de su almacén de datos. Dado que no trabajamos en ninguna de esas empresas, tenemos que obtener nuestros datos por otros medios. Podríamos utilizar algunos datos de películas del Repositorio de aprendizaje automático de la UCI, el conjunto de datos de IMDb o crear minuciosamente el nuestro.
Explorar, limpiar y preparar los datos
Dondequiera que obtuvimos nuestros datos , puede haber algunas cosas incorrectas que debamos corregir para prepararlo para el algoritmo KNN. Por ejemplo, es posible que los datos no estén en el formato que espera el algoritmo o que falten valores que debamos completar o eliminar de los datos antes de introducirlos en el algoritmo.
Nuestra implementación KNN anterior se basa en sobre datos estructurados. Debe estar en formato de tabla. Además, la implementación asume que todas las columnas contienen datos numéricos y que la última columna de nuestros datos tiene etiquetas en las que podemos realizar alguna función. Entonces, de donde sea que obtengamos nuestros datos, debemos hacer que se ajusten a estas restricciones.
Los datos a continuación son un ejemplo de lo que podrían parecerse nuestros datos limpios. Los datos contienen treinta películas, incluidos los datos de cada película en siete géneros y sus clasificaciones IMDB. La columna de etiquetas tiene todos ceros porque no estamos usando este conjunto de datos para clasificación o regresión.
Además, existen relaciones entre las películas que no se tomarán en cuenta (por ejemplo, actores, directores y temas) cuando se usa el algoritmo KNN simplemente porque los datos que capturan esas relaciones faltan en el conjunto de datos. En consecuencia, cuando ejecutamos el algoritmo KNN en nuestros datos, la similitud se basará únicamente en los géneros incluidos y las calificaciones IMDB de las películas.
Utilice el algoritmo
Imagínese por un momento . Estamos navegando por el sitio web MoviesXb, un derivado ficticio de IMDb, y nos encontramos con The Post. No estamos seguros de querer verlo, pero sus géneros nos intrigan; tenemos curiosidad por otras películas similares. Nos desplazamos hacia abajo hasta la sección «Más como este» para ver qué recomendaciones hará MoviesXb y los engranajes algorítmicos comienzan a girar.
El sitio web MoviesXb envía una solicitud a su back-end para las 5 películas que son más similares a The Post. El back-end tiene un conjunto de datos de recomendación exactamente como el nuestro. Comienza creando la representación de fila (más conocida como vector de características) para The Post, luego ejecuta un programa similar al siguiente para busca las 5 películas que son más similares a The Post y finalmente envía los resultados al sitio web MoviesXb.
Cuando ejecutamos este programa, vemos que MoviesXb recomienda 12 Years A Slave, Hacksaw Ridge, Queen of Katwe, The Wind Rises y A Beautiful Mind . Ahora que entendemos completamente cómo funciona el algoritmo KNN, podemos explicar exactamente cómo el algoritmo KNN llegó a hacer estas recomendaciones. ¡Felicitaciones!
Resumen
El k-near El algoritmo de vecinos est (KNN) es un algoritmo de aprendizaje automático supervisado simple que se puede utilizar para resolver problemas de clasificación y regresión. Es fácil de implementar y comprender, pero tiene el gran inconveniente de que se ralentiza significativamente a medida que aumenta el tamaño de los datos en uso.
KNN funciona encontrando las distancias entre una consulta y todos los ejemplos en los datos, seleccionando los ejemplos de números especificados (K) más cercanos a la consulta, luego vota por la etiqueta más frecuente (en el caso de clasificación) o promedia las etiquetas (en el caso de regresión).
En el caso de clasificación y regresión, vimos que elegir la K correcta para nuestros datos se hace probando varias K y eligiendo la que funciona mejor.
Finalmente, vimos un ejemplo de cómo se podría usar el algoritmo KNN en sistemas de recomendación, una aplicación de KNN-search.