03

Un modelo y su error

¿Cómo se mide qué tan equivocado está un modelo?

11 min

Un modelo y su error

Con voz. Puedes pausar y saltar a cualquier paso.

Lección completa

Subtítulos

Ya sabes que un modelo es una regla con números ajustables. Construyamos el más sencillo con un caso inventado: diez estudiantes, las horas que estudió cada uno y la calificación que sacó.

Voz

Sin voz: la lección avanza sola con subtítulos.

La voz de esta lección está en preparación: por ahora avanza sola con subtítulos.

0:00 / 0:00

Qué lograrás

  • Leer una recta por sus dos parámetros, el peso (cuánto sube por cada unidad de la entrada) y el sesgo (su altura cuando la entrada vale cero), y calcular con ellos una predicción.
  • Calcular el error de un punto y explicar por qué se eleva al cuadrado antes de promediar: los signos dejan de cancelarse y los errores grandes pesan más.
  • Calcular la pérdida (MSE) de unos pocos puntos y reconocer que aprender es elegir los parámetros que la dejan lo más baja posible.

Ideas clave

  1. Una recta sube (o baja) a ritmo constante. Su peso w, la pendiente, es cuánto sube la predicción por cada unidad de la entrada; su sesgo b es la altura cuando la entrada vale cero. La predicción es w·x + b.
  2. El error de un punto es lo real menos lo predicho: la distancia vertical entre el punto y la recta. Sumar los errores con su signo falla, porque los positivos y los negativos se cancelan.
  3. Elevar cada error al cuadrado quita el signo y hace pesar más los errores grandes: un error de 2 cuenta 4; uno de 4, 16. La pérdida MSE es el promedio de esos cuadrados.
  4. Aprender es elegir el peso y el sesgo que dejan la pérdida lo más baja posible. Para una recta hay fórmula (mínimos cuadrados, Legendre y Gauss), pero ni así la pérdida llega a cero.
  5. Elevar al cuadrado es una decisión: un punto atípico puede torcer la recta, mientras que el error absoluto casi no lo escucha.

Lo que mucha gente cree

Creencia común Un buen modelo es el que pasa por todos los puntos: su pérdida debería ser cero.

Lo correcto Con datos reales siempre hay ruido, y una recta no puede pasar por todos los puntos: incluso la mejor tiene pérdida mayor que cero. Un modelo con pérdida cero en los datos de entrenamiento suele haber memorizado el ruido, y falla con casos nuevos (lección 10).

Compruébalo

Cuatro preguntas. Sin nota ni cuenta: sirven para ver si la idea quedó.

ConceptoUna recta predice la nota con predicción = 4 · horas + 30. ¿Qué dice el 4?
Concepto¿Por qué no basta con sumar los errores con su signo para medir qué tan mal está una recta?
CálculoUn modelo predice 70 y 60 para dos estudiantes que sacaron 82 y 55. ¿Cuál es la pérdida (MSE)?
AplicaciónUn proveedor te muestra un modelo que predice ventas con una pérdida (MSE) de 120. ¿Qué necesitas para saber si es bueno?

Por dentroPara quien quiere las fórmulas y el código. No hace falta para seguir el curso.

La recta, pieza por pieza

Una recta es la gráfica de y^=wx+b\hat y = wx + b (se lee «y gorro»: la predicción). El peso ww es la pendiente: si la entrada aumenta en Δx\Delta x, la predicción aumenta en w Δxw\,\Delta x, así que w=Δy^/Δxw = \Delta \hat y / \Delta x, lo que sube entre lo que avanza. El sesgo bb es la ordenada al origen: y^(0)=b\hat y(0) = b. En la lección, w=5w = 5 y b=40b = 40: con 7 horas, y^=5⋅7+40=75\hat y = 5\cdot 7 + 40 = 75.

El modelo y la pérdida

Con varias características (lección 2) la entrada es un vector x\mathbf{x} y la predicción es y^=w⋅x+b\hat y = \mathbf{w}\cdot\mathbf{x} + b: un peso por característica y un solo sesgo. Los diez estudiantes de la lección son inventados.

El error de un punto es ei=yi−y^ie_i = y_i - \hat y_i. Con nn puntos, las dos pérdidas de la lección son

MAE=1n∑i=1n∣ei∣L(w,b)=MSE=1n∑i=1n(yi−wxi−b)2\mathrm{MAE}=\frac1n\sum_{i=1}^{n}|e_i| \qquad\qquad L(w,b)=\mathrm{MSE}=\frac1n\sum_{i=1}^{n}\bigl(y_i-wx_i-b\bigr)^2

El MSE se mide en puntos al cuadrado. Su raíz, L\sqrt{L}, vuelve a puntos: con la mejor recta de la lección, 42.5≈6.5\sqrt{42.5}\approx 6.5 puntos de error típico. La recta de ejemplo (w=5w = 5, b=40b = 40) tiene L=45.775L = 45.775; la recta plana del promedio, L=244.04L = 244.04.

Por qué el cuadrado

  • Es suave. L(w,b)L(w,b) es un paraboloide: tiene un único fondo y una pendiente definida en todas partes, lo que permitirá bajar por ella (lección 4). El valor absoluto tiene un pico en cero.
  • Tiene fórmula. Al igualar a cero las derivadas parciales de LL se obtiene un sistema lineal, las ecuaciones normales.
  • Tiene una justificación probabilística. Si yi=wxi+b+εiy_i = wx_i+b+\varepsilon_i con ruido normal εi∼N(0,σ2)\varepsilon_i\sim\mathcal N(0,\sigma^2), la verosimilitud es máxima justo donde el MSE es mínimo (Goodfellow et al., 2016, sec. 5.5.1, que lo llama un criterio introducido «más o menos arbitrariamente» antes de justificarlo así). Gauss lo planteó en 1809 (Theoria motus, arts. 175–179): si los errores siguen la curva normal, el sistema de valores más probable es el de menor suma de cuadrados. Con ruido de Laplace, de colas más pesadas, el criterio equivalente es el error absoluto.
  • Es sensible a los atípicos. Con un solo parámetro (predecir una constante), el MSE se minimiza con la media y el error absoluto con la mediana. En los datos de la lección, la media es 64.4 y la mediana 59.5 (con diez datos, cualquier valor entre 57 y 62 minimiza el error absoluto; se toma el punto medio).

Un poco de historia

Legendre presentó los mínimos cuadrados en 1805, en un apéndice, como el principio que, a su juicio, es el «más general, más exacto y de aplicación más fácil», y que establece entre los errores «una especie de equilibrio» que impide a los extremos prevalecer. Gauss escribió en 1809 que lo usaba desde 1795 (Theoria motus, art. 186) y que, de todas las potencias pares del error, el cuadrado era «el más simple»; la prioridad se discutió (Plackett, 1972; Stigler, 1981).

En ese mismo artículo Gauss cuenta que Laplace usaba el error absoluto, propuesto antes por Boscovich. Observa que con él la recta pasa, en general, por dos de los puntos y que otro dato cualquiera podría haberse observado sin cambiar la solución, con tal de quedar del mismo lado: es lo que viste con el atípico, cuya recta absoluta no se movió al bajarle la nota. Entre los dos extremos existen pérdidas híbridas, como la de Huber (1964): cuadrática para errores pequeños y lineal para los grandes.

La mejor recta

w∗=∑i(xi−xˉ)(yi−yˉ)∑i(xi−xˉ)2=cov⁡(x,y)var⁡(x)b∗=yˉ−w∗xˉw^*=\frac{\sum_i (x_i-\bar x)(y_i-\bar y)}{\sum_i (x_i-\bar x)^2}=\frac{\operatorname{cov}(x,y)}{\operatorname{var}(x)}\qquad\qquad b^*=\bar y-w^*\bar x

Con xˉ=4.55\bar x = 4.55 y yˉ=64.4\bar y = 64.4 resultan w∗≈5.26w^*\approx 5.26 y b∗≈40.45b^*\approx 40.45, con pérdida mínima Lmin⁡≈42.5L_{\min}\approx 42.5. La mejor recta siempre pasa por el punto promedio (xˉ,yˉ)(\bar x,\bar y). En forma matricial son las ecuaciones normales, w∗=(X⊤X)−1X⊤y\mathbf{w}^*=(X^\top X)^{-1}X^\top\mathbf{y} (en XX, una columna de unos se encarga del sesgo).

Si dejamos b=b∗b=b^* y movemos solo ww, la pérdida es exactamente una parábola:

L(w)=Lmin⁡+x2‾ (w−w∗)2,x2‾≈28.0L(w)=L_{\min}+\overline{x^2}\,(w-w^*)^2,\qquad \overline{x^2}\approx 28.0

Es el valle de la última escena. El nombre «regresión» viene de Galton. En su estudio de 1886 sobre la estatura (930 hijos adultos de 205 familias) halló que la desviación de estatura de los hijos es, en promedio, dos tercios de la de sus padres: los hijos de padres muy altos tienden a ser menos altos, y los de padres muy bajos, más altos. Lo llamó «regresión hacia la mediocridad», es decir, hacia el promedio.

En código

# diez estudiantes inventados para la lección
horas = [0.5, 1.5, 2, 3, 4, 5, 6, 6.5, 8, 9]
nota = [43, 49, 52, 57, 62, 72, 73, 56, 87, 93]
n = len(horas)
mx, my = sum(horas) / n, sum(nota) / n

# mínimos cuadrados: w = cov(x, y) / var(x),  b = media(y) - w * media(x)
w = sum((x - mx) * (y - my) for x, y in zip(horas, nota)) / sum((x - mx) ** 2 for x in horas)
b = my - w * mx

def perdida(w, b):  # error cuadrático medio (MSE)
    return sum((y - (w * x + b)) ** 2 for x, y in zip(horas, nota)) / n

print(round(w, 2), round(b, 2))   # 5.26 40.45   (mejor peso y sesgo)
print(round(perdida(w, b), 1))    # 42.5         (pérdida mínima)
print(round(perdida(0, my), 1))   # 244.0        (recta plana: predecir el promedio)
print(round(perdida(5, 40), 1))   # 45.8         (la recta de ejemplo: peso 5, sesgo 40)

Lo que viene

La fórmula cerrada sirve para una recta. En una red con miles de millones de pesos no existe, y el fondo se busca paso a paso: es el descenso del gradiente (lección 4). Y bajar la pérdida en los datos de entrenamiento no basta: hay que medirla con datos que el modelo no vio (lección 10).

Lente de decisión

Qué significa esta idea si tu trabajo es decidir, no programar.

  • La función de pérdida es una decisión de negocio, no un detalle técnico. Elevar al cuadrado dice que un error grande cuesta mucho más que varios pequeños. Pregunta si eso refleja tu costo real: no es lo mismo equivocarse mucho una vez que poco muchas veces.
  • Pide siempre una línea base. Aquí, predecir el promedio daba una pérdida de 244 y la mejor recta, 42.5. Un modelo complejo solo se justifica si supera a la base por un margen que pague su costo. Y pregunta en qué unidades está la métrica: el MSE está al cuadrado.
  • Los datos atípicos se deciden antes de entrenar: ¿son errores de captura, que se corrigen o se descartan, o casos reales que importan? Con pérdida cuadrática, un solo caso raro puede torcer el modelo. Pide que se reporte cuánto cambia el resultado sin él.
  • Una pérdida baja no garantiza un buen modelo: se midió con los mismos datos con que se ajustó, y fuera del rango visto el modelo extrapola (con doce horas, esta recta predice más de cien). La lección 10 explica cómo evaluar con datos nuevos.

Términos de la lección

Transcripción completa
ComentariosConversación pública de esta lección: dudas, datos por revisar, ideas.

Los comentarios viven en GitHub Discussions, en el repositorio público del curso; para escribir se necesita una cuenta de GitHub. Se cargan desde giscus.app al abrir esta sección. Las personas que revisan el curso los leen, y si un cambio se acepta, se aplica en los dos idiomas. Abrir el hilo en GitHub

Fuentes