in

Conceptos básicos de aprendizaje automático con el algoritmo de vecinos más cercanos K

1Zo9t7i

Conceptos básicos de aprendizaje automático con el algoritmo de vecinos más cercanos K

Onel Harrison

10 de septiembre de 2018·9 min de lectura

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 problemas de clasificación y regresión. ¡Pausa! Desempaquemos eso.

A B C. ¡Lo mantenemos súper simple!

Rompiéndolo

A aprendizaje automático supervisado El algoritmo (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 una salida adecuada cuando se le dan nuevos datos no etiquetados.

Imagina que una computadora es un niño, estamosmi su supervisor (por ejemplo, padre, tutor o maestro), y queremos que el niño (computadora) aprenda 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 cuál sea la imagen. Eso es aprendizaje automático supervisado.

«¡Cerdo!»

Los algoritmos de aprendizaje automático supervisados ​​se utilizan para resolver problemas de clasificación o regresión.

A problema de clasificación tiene un valor discreto como salida. 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.

1*W3paYieyGIlD0uulkhn Eg

Imagen que muestra datos generados aleatoriamente

Esta imagen muestra un ejemplo básico de cómo podrían verse los datos de clasificación. Tenemos un predictor (o conjunto de predictores) y una etiqueta. En la imagen, podríamos estar tratando de predecir si a alguien le gusta la piña (1) en su pizza o no (0) en función de su edad (el predictor).

Es una práctica estándar representar la salida (etiqueta) 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.

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

1*6P1K9Bd7 Fq9CujR0B6SQw

Imagen que muestra una parte del conjunto de datos de peso y altura SOCR

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 un 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 denomina típicamente 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 aprendizaje automático sin supervisión El algoritmo utiliza datos de entrada sin etiquetas; en otras palabras, ningún maestro (etiqueta) le dice al niño (computadora) cuándo es correcto o cuándo 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.

«Birradías de una pluma se juntan «.

1*wW8O

Imagen que muestra cómo los puntos de datos similares suelen existir cerca unos de otros

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: Es necesario comprender cómo calculamos la distancia entre puntos en un gráfico antes de continuar. Si no está familiarizado o necesita un repaso sobre cómo se realiza este cálculo, lea detenidamente «Distancia entre 2 puntos”En su totalidad, y regrese enseguida.

Hay otras formas de calcular la distancia, y una forma puede ser preferible según el 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

  1. Cargar los datos
  2. Inicialice K a su número elegido de vecinos

3. Para cada ejemplo en los datos

3.1 Calcule la 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. Ordene la colección ordenada de distancias e í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 entradas K seleccionadas

7. Si hay regresión, devuelve la media de las etiquetas K

8. Si es clasificación, devuelva la moda de las etiquetas K

La implementación de KNN (desde cero)

Elegir el valor correcto para K

Para seleccionar la K adecuada para sus datos, ejecutamos el algoritmo KNN varias veces con diferentes valores de K y elegimos la K que reduce la cantidad de errores que encontramos mientras se mantiene la capacidad del algoritmo para hacer predicciones con precisión cuando se le dan datos que no tiene. t visto antes.

A continuación, se incluyen algunas cosas a tener en cuenta:

  1. 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 como K = 1, KNN predice incorrectamente que el punto de consulta es verde.
  2. A la inversa, a medida que aumentamos el valor de K, nuestras predicciones se vuelven más estables debido a la mayoría de votos / promedios y, por lo tanto, es más probable que hagan 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.
  3. En los casos en los que obtenemos una mayoría de votos (por ejemplo, eligiendo el modo en un problema de clasificación) entre etiquetas, generalmente hacemos de K un número impar para tener un desempate.

Ventajas

  1. El algoritmo es simple y fácil de implementar.
  2. No es necesario crear un modelo, ajustar varios parámetros o hacer suposiciones adicionales.
  3. El algoritmo es versátil. Puede usarse para clasificación, regresión y búsqueda (como veremos en la siguiente sección).

Desventajas

  1. 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 una opció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 KNN-search.

Sistemas de recomendación

A escala, esto parecería recomendar productos en Amazon, artículos en Medium, películas en Netflix o videos en YouTube. Aunque, podemos estar seguros de que todos utilizan 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 hemos 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ícula?

Recopilar 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 a través de otros medios. Podríamos usar 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.

Explore, limpie y prepare los datos

Dondequiera que obtengamos nuestros datos, puede haber algunos problemas que debamos corregir para prepararlos 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 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 cómo 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.

Conjunto de datos de recomendación de películas hechas a sí mismo

Además, existen relaciones entre las películas que no se tendrán en cuenta (por ejemplo, actores, directores y temas) cuando se utilice 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.

Usa el algoritmo

Imagínese por un momento. Estamos navegando por el sitio web MoviesXb, un derivado ficticio de IMDb, y nos encontramos con El cargo. 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 El cargo. 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ística) por El cargo, luego ejecuta un programa similar al siguiente para buscar las 5 películas que son más similares a El cargoy, finalmente, envía los resultados al sitio web MoviesXb.

Cuando ejecutamos este programa, vemos que MoviesXb recomienda 12 años de esclavitud, Cresta de la sierra, Reina de Katwe, El viento aumenta, y Una mente maravillosa. Ahora que entendemos completamente cómo funciona el algoritmo KNN, podemos explicar exactamente cómo el algoritmo KNN llegó a hacer estas recomendaciones. ¡Felicidades!

Resumen

El algoritmo de k vecinos más cercanos (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 volverse significativamente más lento a medida que aumenta el tamaño de los datos en uso.

KNN funciona encontrando las distancias …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

03SkxKRMK5vWDk2ufSRRsUJ 1.1632152446.fit lim.size 1200x630

La tecnología ‘DLAA’ de Nvidia puede mejorar la calidad de la imagen en juegos más antiguos

Servicio de mensajes Java (JMS)