¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Cómo aprende un ordenador con ejemplos

Después de esta lección: Puedo explicar cómo un ordenador aprende de ejemplos con el método de los vecinos más cercanos.

Lección de 50 min2 comandosLaboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

¿Cómo adivina el móvil la siguiente palabra?

El aprendizaje automático es hacer que un ordenador aprenda de ejemplos, en lugar de seguir reglas que escribe una persona. Con suficientes ejemplos, reconoce casos que nunca ha visto.

Así filtra tu correo basura y así sugiere tu móvil la palabra siguiente. Hoy lo harás con un método sencillo y verás cuándo falla.

Al terminar esta lección

Nota

Puedo explicar cómo un ordenador aprende de ejemplos con el método de los vecinos más cercanos.

Palabras clave

PalabraQué significaEjemplo
Ejemplo etiquetadoun caso con la respuesta correcta ya escritaun día movido
Entrenardejar que el modelo aprenda de ejemplos etiquetados
kNNun método que mira los k ejemplos más parecidos y vota
Precisiónla parte de las respuestas del modelo que son correctas
Sesgouna inclinación injusta que el modelo aprende de sus ejemplos

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un modelo aprende de ejemplos con respuesta

Con las reglas de siempre, una persona escribe qué hacer en cada caso. Con el aprendizaje automático, le das al ordenador muchos casos con la respuesta ya escrita. La respuesta se llama etiqueta.

Para la empresa de bicis, llamaremos «busy» al día con 300 alquileres o más y «quiet» al resto. Dados la temperatura y la lluvia, el modelo debe decir cuál será.

El método kNN pregunta a los vecinos

Para un día nuevo, el método kNN busca los k días guardados que más se le parecen. Cada uno vota con su etiqueta. Gana la etiqueta con más votos.

Parecerse es estar cerca: se resta la temperatura con la temperatura, la lluvia con la lluvia, y se suman los cuadrados.

Ejemplo resuelto: un día de 19 grados

DíaTemperatura y lluviaEtiquetaDistancia al cuadrado
A20 y 0busy1 + 1 = 2
B18 y 2busy1 + 1 = 2
E22 y 1busy9 + 0 = 9
D8 y 10quiet121 + 81 = 202
C5 y 8quiet196 + 49 = 245

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Antes de empezar

Nota

Pulsa Iniciar el laboratorio en la barra de la lección y espera a que esté en marcha. El terminal no tiene Python propio. Cada botón Ejecutar escribe docker exec jupyter, que lanza una orden dentro del contenedor del laboratorio.

El laboratorio entrena con tres cuartos

El script de abajo etiqueta cada día de hires.csv como «busy» o «quiet». Guarda un cuarto de los días aparte para probar y entrena con los demás. Usa k = 5.

Después imprime la precisión y una tabla con los aciertos y los fallos.

Clasifica los días guardados

Comando
docker exec jupyter python3 steps/knn.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejemplo resuelto: aciertos y fallos

Fila de la tablaQué fue de verdadDijo busyDijo quiet
Primerabusy2310
Segundaquiet752
Precisión0,815unos 82 de cada 100
Responder siempre quiet0,641unos 64 de cada 100

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

El valor de k cambia el modelo

Con k = 1 el modelo copia a su vecino más cercano. Se aprende los ejemplos casi de memoria y acierta con ellos, pero se confunde con días nuevos.

Con una k mayor, la respuesta es la de muchos vecinos y se mueve menos. El script de abajo prueba seis valores de k y mide el acierto en los dos grupos de días.

Prueba seis valores de k

Comando
docker exec jupyter python3 steps/knnk.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejemplo resuelto: aprendidos y guardados

kAcierto con días aprendidosAcierto con días guardados
10,9630,728
30,8940,772
50,8830,815
150,8530,815
450,8320,826
1350,8210,826

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error frecuente

Advertencia

Mucha gente cree que un modelo con un 96 % de acierto es excelente. Mira con qué datos se midió. Con k = 1, el 0,963 es de los días que aprendió. Con días nuevos acierta solo 0,728.

Un modelo hereda el sesgo de sus ejemplos

Un modelo solo conoce lo que ve en sus ejemplos. Si un grupo casi no aparece, el modelo lo trata peor. Un asistente de voz entrenado sobre todo con un acento falla más con los demás.

El sesgo no lo pone el ordenador a propósito. Viene de los datos y de quién los eligió. Quien entrena un modelo tiene que comprobar si acierta igual con cada grupo.

Para ir más lejos: cambia el corte

El laboratorio llamó «busy» a los 300 alquileres o más. Si cambias el corte a 250 o a 350, cambia cuántos días son movidos. También cambia la precisión de responder siempre quiet.

Piensa qué corte tiene más sentido para decidir cuántas bicis llevar a cada estación.

Sobre este laboratorio y su código: Laboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.