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.
¿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.
Elige una respuesta y tu grado de seguridad.
Responde para desbloquear el experimento.
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?
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.
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 dexeydividida por la varianza dex;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.
Descargar el notebook (.ipynb). Ábrelo en Jupyter o súbelo a Google Colab; descarga por sí solo los datos que falten.
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.
¿Te ha sido útil?
¡Gracias! Nos ayuda a mejorar.
Profundiza en el Atlas
Entradas de la enciclopedia sobre las ideas de esta lección: