ML Atlas

Machine learning desde cero · Lección 1.5 · 6 de 33 lecciones listas · 10 min

Regresión lineal: ajustar una recta

En pocas palabras

La regresión lineal traza la recta que menos se equivoca. Con datos de diabetes, el error cuadrático medio decide cuál es la mejor recta.

Calentamiento Dos preguntas de lecciones anteriores. Un minuto, y no bloquea la lección.
De la lección 1.4: Vecinos más cercanos: el modelo más simple ¿Cómo responde kNN a una pregunta sobre un caso nuevo?

Ver la respuesta

Respuesta correcta: Toma los k ejemplos de aprendizaje más cercanos y elige su mayoría

kNN no tiene regla: votan los k ejemplos guardados más cercanos. El fondo del lab muestra el resultado de esa votación en cada punto.

De la lección 1.3: La referencia: ¿con qué comparas tu modelo? La prueba tiene 108 biopsias, 1 de ellas maligna. «Siempre benigno» obtiene un 99,1 %, la regla un 90,7 %. ¿Cuál es mejor para el cribado?

Ver la respuesta

Respuesta correcta: La regla, porque detecta la maligna y «siempre benigno» no lo hará nunca

Con una clase rara, la exactitud premia ignorarla. «Siempre benigno» nunca detectará una biopsia maligna, haya las que haya.

¿Dice algo el peso corporal sobre lo rápido que empeora una enfermedad? Los médicos tienen muchas corazonadas así. El aprendizaje automático permite convertir una corazonada en un número: trazar la mejor recta a través de los datos y leer cuánto se inclina. La única pregunta es qué significa «mejor», y la respuesta a esa pregunta es la semilla de todo lo que viene en este curso. Pruébalo tú mismo antes de leer la explicación.

Predice y comprueba Ajustas la mejor recta al gráfico del IMC y la progresión de la enfermedad. ¿Qué parte de la variación de la progresión, es decir, de las diferencias entre pacientes, explica el IMC por sí solo? Esa parte se llama R².
¿Qué tan seguro estás?

Experimento interactivo

Este experimento interactivo funciona en un navegador con JavaScript activado. El texto que lo rodea describe lo que muestra.

Ver la respuesta

Respuesta correcta: Alrededor del 34 %

La mejor recta tiene R² = 0,34 (error cuadrático medio de 3890, frente a 5930 de una línea plana en la media): el IMC explica más o menos un tercio de la variación, y el 66 % restante depende de otra cosa.

Prueba esto

  • Mueve el control de la pendiente y observa cómo se inclina la recta y cambia el MSE. Luego mueve el de la ordenada en el origen. Intenta bajar el MSE todo lo que puedas a mano.
  • Pulsa Mejor ajuste y compara la recta de mínimos cuadrados con la tuya. ¿Cuánto te acercaste?
  • Pon la pendiente en cero, para que la recta quede plana, y mueve solo la ordenada en el origen hasta que el MSE sea lo más bajo posible. Acabas de encontrar la progresión media: sin ninguna característica, la mejor apuesta para todos es la media.
  • Compara el MSE de esa recta plana con el del mejor ajuste. La diferencia es lo que vale conocer el IMC.

La idea en pocas palabras

En la lección 1 el modelo respondía «sí» o «no». Ahora responde con un número, y eso se llama regresión. El modelo de regresión más sencillo es una recta:

predicción = pendiente × característica + ordenada en el origen

La pendiente dice cuánto cambia la predicción cuando la característica aumenta una unidad. La ordenada en el origen sube o baja toda la recta. Aprender significa encontrar los dos números que hacen que la recta pase lo más cerca posible de los puntos.

Imagina a un vendedor de autos usados que fija precios según la antigüedad. Su regla práctica es una recta: parte del precio de un auto nuevo (la ordenada en el origen) y resta una cantidad fija por cada año (la pendiente). Ningún auto real se vende exactamente a ese precio, pero la recta capta la tendencia y es fácil de explicar.

En esta lección usamos datos de un estudio médico clásico con 442 pacientes con diabetes. De cada uno conocemos el índice de masa corporal (IMC) y una medida de cuánto avanzó la enfermedad un año después de la primera consulta. Así, cada paciente es un par de números, es decir, un punto: el IMC en horizontal y la progresión en vertical.

Por qué funciona

Para cada paciente la recta hace una predicción, y la diferencia entre el valor real y la predicción se llama residuo: la distancia vertical del punto a la recta. Para puntuar una recta hay que convertir cientos de residuos en un solo número. La opción estándar es el error cuadrático medio:

MSE = (1/n) · Σ (yᵢ − ŷᵢ)²

donde yᵢ es el valor real del paciente i, ŷᵢ es la predicción de la recta y n es el número de pacientes. Elevar al cuadrado cumple dos funciones. Hace positivo cada fallo, para que los fallos por encima y por debajo de la recta no se compensen. Y castiga los fallos grandes mucho más que los pequeños: un punto el doble de lejos de la recta cuesta cuatro veces más. Una recta que se equivoca un poco con todos suele ganar a una que es perfecta para la mayoría y desastrosa para unos pocos.

La recta con el MSE más bajo se llama ajuste por mínimos cuadrados. Para una recta ni siquiera hace falta buscarla: una fórmula breve, conocida desde principios del siglo XIX, da la pendiente y la ordenada en el origen óptimas exactas. Fíjate en lo que esto significa. Aprender es la misma receta de antes —una familia de reglas (todas las rectas posibles), una puntuación (el MSE) y la regla con la mejor puntuación—, solo que ahora la familia es infinita y la puntuación es continua.

Hay algo más que conviene notar: incluso la mejor recta deja residuos grandes en estos datos. El IMC está relacionado con la progresión, pero dista mucho de explicarla entera. Un modelo solo puede ser tan bueno como la información que contienen sus características.

Error frecuente

Una recta ajustada no es una ley de la naturaleza. De olvidarlo salen dos errores clásicos. El primero es leer la pendiente como causa: en estos datos, los pacientes con un IMC más alto progresan más rápido en promedio, pero la recta por sí sola no puede decir si el peso causa la progresión o si ambas cosas se deben a otra. El segundo es la extrapolación: usar la recta muy lejos del rango de los datos. Los pacientes de este estudio tienen IMC dentro de un rango limitado; la recta no dice nada fiable sobre valores que nunca ha visto.

Encontrar la mejor recta con una fórmula es un lujo que la mayoría de los modelos no tiene. En la próxima lección encontramos la misma recta de otra manera, dando pequeños pasos cuesta abajo, que es como aprenden las redes neuronales.

Atrapa el error de la IA

Así respondió un chatbot. Una frase es incorrecta. ¿Cuál?

Pregunta: Ajusté una recta de progresión de la enfermedad sobre el IMC de 442 pacientes con diabetes y obtuve R² = 0,34. ¿Qué me dice eso?

Respuesta del chatbot

Mostrar la frase incorrecta

La frase incorrecta: En la práctica significa que la recta predice correctamente la progresión de alrededor del 34 % de los pacientes y falla en el resto.

R² no es una proporción de pacientes: R² = 0,34 significa que el IMC explica más o menos un tercio de la variación de la progresión (error cuadrático medio de 3890 frente a 5930 de la línea plana), y el 66 % restante depende de otra cosa. La regresión predice un número, y casi todos los pacientes conservan algún residuo.

Test

Tres preguntas para comprobar lo aprendido. Elige una respuesta o despliega la solución bajo cada pregunta. Con el teclado: las flechas eligen, Enter o Espacio confirma.

1. ¿Por qué la regresión lineal eleva los residuos al cuadrado en lugar de simplemente sumarlos?
Ver la respuesta

Respuesta correcta: Para que los fallos por encima y por debajo no se anulen y los grandes pesen más

Los cuadrados siempre son positivos y crecen deprisa, así que la puntuación refleja cada fallo y castiga con fuerza los grandes.

2. Con la pendiente fija en cero, ¿qué ordenada en el origen da el MSE más bajo?
Ver la respuesta

Respuesta correcta: La media de los valores objetivo

Para una recta plana, el error cuadrático es mínimo en el promedio, y por eso la media es la línea base natural en regresión.

3. La mejor recta tiene pendiente positiva. ¿Qué puedes concluir?
Ver la respuesta

Respuesta correcta: Que en estos datos un IMC más alto va unido, en promedio, a mayor progresión

Una pendiente describe una asociación en los datos, no una causa, y los residuos restantes muestran que queda mucho sin explicar.

Ideas clave

  • La regresión predice un número; una recta es el modelo de regresión más sencillo.
  • El error cuadrático medio puntúa una recta promediando los residuos al cuadrado, así que los fallos grandes pesan más.
  • La recta de mínimos cuadrados es la de menor MSE y tiene una fórmula exacta.
  • Sin ninguna característica útil, la mejor predicción constante es la media.
  • Una pendiente es una asociación dentro del rango de los datos, no una causa ni un permiso para extrapolar.

Más a fondo: fórmula, código, práctica

Las matemáticas

Para una variable x la recta es ŷ = w·x + b. Los mínimos cuadrados eligen los w y b que minimizan MSE(w, b) = (1/n) · Σ (yᵢ − w·xᵢ − b)². Al igualar a cero las dos derivadas parciales se obtiene la forma cerrada:

  • w = Σ (xᵢ − x̄)(yᵢ − ȳ) / Σ (xᵢ − x̄)², la covarianza de x e y dividida por la varianza de x;
  • b = ȳ − w·x̄, de modo que la recta siempre pasa por el punto de las medias (x̄, ȳ).

Con la pendiente fijada en 0, el MSE es mínimo en b = ȳ, y ese mínimo es igual a la varianza de y. Por eso R² = 1 − MSE(line) / MSE(mean) mide qué parte de la varianza explica la variable. Para una recta con una variable, R² es el cuadrado de la correlación de Pearson entre x e y.

En código (Python)

Los mismos 442 pacientes del lab, con el IMC en sus unidades originales (scaled=False):

from sklearn.datasets import load_diabetes
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score

X, y = load_diabetes(return_X_y=True, as_frame=True, scaled=False)
bmi = X[["bmi"]]  # una variable, conservada como tabla (sklearn espera una entrada 2-D)
model = LinearRegression().fit(bmi, y)
pred = model.predict(bmi)

print(f"slope {model.coef_[0]:.2f}, intercept {model.intercept_:.1f}")
print(f"MSE of the line: {mean_squared_error(y, pred):.0f}")
print(f"MSE of the mean: {mean_squared_error(y, [y.mean()] * len(y)):.0f}")
print(f"R2: {r2_score(y, pred):.2f}")

Resultado

slope 10.23, intercept -117.8
MSE of the line: 3890
MSE of the mean: 5930
R2: 0.34

Cada punto de IMC suma unos 10 a la progresión prevista. La ordenada de −118 es solo una extrapolación a IMC 0, muy fuera de los datos (IMC 18–42), así que por sí sola no significa nada.

Para profesionales
  • Las puntuaciones calculadas con los datos de entrenamiento son optimistas. Aquí es inofensivo (dos parámetros, 442 puntos), pero en general informa el MSE y el R² en un conjunto de prueba (lección 2).
  • Revisa los residuos, no solo el R². Grafícalos contra la predicción: una curva o una forma de embudo significa que la recta, o el ruido constante, es un supuesto equivocado.
  • El MSE está en unidades al cuadrado de la variable objetivo (aquí, progresión²). Su raíz cuadrada (RMSE, unos 62 aquí) es más fácil de explicar a cualquier otra persona.
  • Un solo valor atípico con un residuo grande puede arrastrar mucho una recta de mínimos cuadrados. Cuando unos pocos puntos son inusuales, míralos primero y solo después considera una pérdida robusta como Huber.
  • Una pendiente solo es comparable entre variables cuando comparten escala. Estandariza las variables antes de leer los coeficientes como «importancia», y aun así es asociación, no causa.

Profundiza en el Atlas

Entradas de la enciclopedia sobre las ideas de esta lección: