Ir al contenido

El trade-off sesgo–varianza

En simple: lee esto primero

Un modelo puede fallar de dos maneras: por ser demasiado simple (sesgo) o por ser demasiado nervioso y cambiar con cada dato (varianza).

Imagínalo así

Piensa en tiro al blanco. Sesgo: todos tus tiros caen juntos pero lejos del centro (apuntas mal). Varianza: tus tiros quedan dispersos por todos lados (pulso tembloroso). Lo ideal: juntos y en el centro.

Lo que tienes que llevarte
  • Modelo muy simple → mucho sesgo (underfitting). Modelo muy complejo → mucha varianza (overfitting).
  • Diagnóstico rápido: error alto en train y en test → sesgo. Error bajo en train pero alto en test → varianza.
  • Más datos ayudan contra la varianza; un modelo más flexible ayuda contra el sesgo.
Palabras raras de esta página
sesgo
error sistemático: el modelo se equivoca siempre hacia el mismo lado porque es muy rígido.
varianza
qué tanto cambiaría el modelo si lo entrenaras con otros datos parecidos.
ruido irreducible
la parte del error que ningún modelo puede eliminar (azar real en los datos).
trade-off
compromiso: bajar uno suele subir el otro.

Más abajo viene la versión completa, con fórmulas. Si una palabra aparece subrayada con puntos, pasa el mouse (o tócala) para ver qué significa.

Más flexibilidad siempre baja el error de entrenamiento. El arte es mantener bajo el error de generalización. Esta unidad hace precisa esa tensión y la gobierna con regularización y selección de modelos.

Ajusta con train y mide el error en train y validación; la comparación es el diagnóstico:

CasoTrainValidaciónLectura
Underfit (grado 1)alto (0.38)alto (0.70)demasiado simple para captar el patrón
Bien (grado 4)bajo (0.08)bajo (0.16)ambos bajos y cercanos: el objetivo
Overfit (grado 12)ínfimo (0.03)enorme (7.69)brecha grande: memorizó el ruido

La curva de complejidad: el error de entrenamiento cae monótonamente con la complejidad; el de validación tiene forma de U (underfit a la izquierda, overfit a la derecha). El punto dulce es el mínimo de la U. Un error de entrenamiento bajo no prueba nada: puede ser memorización.

El experimento mental: re-muestrear y re-ajustar

Sección titulada «El experimento mental: re-muestrear y re-ajustar»

Solo vemos un training set, pero es una muestra aleatoria de un proceso y=f(x)+εy = f(x)+\varepsilon. Imagina sacar muchos training sets nuevos del mismo proceso y re-ajustar el mismo modelo en cada uno: datos distintos → ajustes distintos. Promédialos: fˉ(x)=E[y^(x)]\bar f(x) = \mathbb{E}[\hat y(x)]. Dos cosas pueden salir mal:

  • fˉ\bar f puede estar lejos de la verdad → sesgo.
  • Los ajustes pueden dispersarse mucho → varianza.

Re-muestrear y re-ajustar: sesgo y varianza medidos

Cada línea gris es el mismo modelo entrenado con un training set distinto (otra muestra del mismo proceso). La línea violeta es su promedio f̄. Sesgo = distancia de f̄ a la verdad; varianza = cuánto se dispersan las grises.

00.20.40.60.81-2-1012x
un ajuste (un training set)promedio f̄ = E[ŷ]verdad f(x)
sesgo²
0.184varianza
0.036ruido σ²
0.063error esperado
0.282
Domina el sesgo: las grises están juntas (baja varianza) pero lejos de la verdad. Es underfitting: el estudiante que siempre responde «C». El piso σ² = 0.0625 no lo baja ningún modelo.
sesgo bajo · varianza bajasesgo bajo · varianza altasesgo alto · varianza bajasesgo alto · varianza alta
Cada dardo es un modelo re-entrenado con una muestra nueva; el centro rojo es la verdad. Sesgo = distancia del centro de los dardos (× verde) a la diana; varianza = qué tan esparcidos están.

En cada entrada xx, promediando sobre training sets re-muestreados:

  • Sesgo =fˉ(x)−f(x)= \bar f(x) - f(x): error sistemático que la familia de modelos no puede quitarse.
  • Varianza =E[(y^(x)−fˉ(x))2]= \mathbb{E}\big[(\hat y(x)-\bar f(x))^2\big]: cuánto tambalea un ajuste alrededor del promedio cuando cambia el training set.
  • Ruido irreducible σ2\sigma^2: la varianza de ε\varepsilon, presente aun con el modelo perfecto.

Para pérdida cuadrática, el error esperado en un punto nuevo se parte exactamente en tres:

E[(y−y^)2]=(fˉ−f)2⏟sesgo2+E[(y^−fˉ)2]⏟varianza+σ2⏟ruido\mathbb{E}\big[(y-\hat y)^2\big] = \underbrace{(\bar f - f)^2}_{\text{sesgo}^2} + \underbrace{\mathbb{E}\big[(\hat y-\bar f)^2\big]}_{\text{varianza}} + \underbrace{\sigma^2}_{\text{ruido}}

No puedes anular ambos: bajar uno suele subir el otro. La U de validación es sesgo² + varianza (+ σ²): el sesgo² cae con la complejidad, la varianza sube, y el valle de la suma es la mejor complejidad.

Derivación (opcional pero sale en exámenes)

Sección titulada «Derivación (opcional pero sale en exámenes)»

Tres hechos: (1) linealidad: E[aX+bY]=aE[X]+bE[Y]\mathbb{E}[aX+bY] = a\mathbb{E}[X]+b\mathbb{E}[Y]; (2) Var(Z)=E[(Z−EZ)2]\text{Var}(Z) = \mathbb{E}[(Z-\mathbb{E}Z)^2] y E[Z−EZ]=0\mathbb{E}[Z-\mathbb{E}Z]=0; (3) independencia: si X⊥YX\perp Y y E[X]=0\mathbb{E}[X]=0, entonces E[XY]=0\mathbb{E}[XY]=0.

Ver la derivación completa

Fija un punto de test xx. y=f+εy = f + \varepsilon con E[ε]=0\mathbb{E}[\varepsilon]=0, Var(ε)=σ2\text{Var}(\varepsilon)=\sigma^2, ε\varepsilon independiente del training set. y^\hat y depende del training set y fˉ:=E[y^]\bar f := \mathbb{E}[\hat y].

Identidad clave. Para una constante aa y cualquier ZZ aleatorio: E[(a−Z)2]=(a−EZ)2+Var(Z)\mathbb{E}[(a-Z)^2] = (a-\mathbb{E}Z)^2 + \text{Var}(Z). Prueba: escribe a−Z=(a−EZ)+(EZ−Z)a - Z = (a-\mathbb{E}Z) + (\mathbb{E}Z - Z) y eleva al cuadrado. El término cruzado es 2(a−EZ) E[EZ−Z]=02(a-\mathbb{E}Z)\,\mathbb{E}[\mathbb{E}Z - Z] = 0 (hecho 1). Queda (a−EZ)2+E[(Z−EZ)2](a-\mathbb{E}Z)^2 + \mathbb{E}[(Z-\mathbb{E}Z)^2]. ∎

Paso 1 — separar el ruido. E[(y−y^)2]=E[(f−y^+ε)2]=E[(f−y^)2]+2E[(f−y^)ε]+E[ε2]\mathbb{E}[(y-\hat y)^2] = \mathbb{E}[(f-\hat y+\varepsilon)^2] = \mathbb{E}[(f-\hat y)^2] + 2\mathbb{E}[(f-\hat y)\varepsilon] + \mathbb{E}[\varepsilon^2]. El término cruzado es 0 (hecho 3: ε⊥y^\varepsilon\perp\hat y y de media cero) y E[ε2]=σ2\mathbb{E}[\varepsilon^2]=\sigma^2.

Paso 2 — aplicar la identidad con a=fa=f, Z=y^Z=\hat y: E[(f−y^)2]=(f−fˉ)2+Var(y^)\mathbb{E}[(f-\hat y)^2] = (f-\bar f)^2 + \text{Var}(\hat y).

Juntando: E[(y−y^)2]=sesgo2+varianza+σ2\mathbb{E}[(y-\hat y)^2] = \text{sesgo}^2 + \text{varianza} + \sigma^2. ∎

Departamento de 70 m², 2 cuartos, alquiler justo €1000. Re-entrenando con anuncios de distintos meses, las predicciones para este depa son €860, €880, €900, €950, €960… con promedio fˉ=€910\bar f = €910.

  • Sesgo =910−1000=−€90= 910 - 1000 = -€90: en promedio, sistemáticamente €90 abajo.
  • Varianza: cuánto se dispersan esas predicciones alrededor de €910.
  • Modelo simple («alquiler ≈ promedio del barrio»): apretado pero corrido → sesgo alto, varianza baja.
  • Modelo flexible (un árbol profundo): oscila entre €700 y €1300 → sesgo bajo, varianza alta.
  • Ruido irreducible: dos depas idénticos en todo lo registrado igual se alquilan a €980 y €1080 (vista, fecha…). Ningún modelo lo borra.
Para bajar…Haz…
Sesgo (underfit)modelo más flexible: más features, más grado, menos λ, más C, más γ, árbol más profundo
Varianza (overfit)más datos, regularizar (λ ↑), modelo más simple, podar el árbol, promediar modelos (bagging)
SíntomaCausa probableQué hacer
Train alto, validación alto (parecidos)sesgo alto / underfitmodelo más flexible, más features, menos regularización
Train bajo, validación mucho más altovarianza alta / overfitmás datos, más regularización, modelo más simple, podar, ensembles
Ambos bajos y cercanosbuen balanceparar; reportar el test una vez
Validación cambia mucho entre particionesvarianza de la estimaciónK-fold en vez de una sola partición
Más datos no mejoran nadasesgo domina o ruido irreduciblecambiar de familia de modelos o mejorar las features

En código: curvas de complejidad y de aprendizaje

Sección titulada «En código: curvas de complejidad y de aprendizaje»
from sklearn.model_selection import validation_curve, learning_curve
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
import numpy as np
model = make_pipeline(PolynomialFeatures(), LinearRegression())
degrees = np.arange(1, 13)
tr, va = validation_curve(model, X, y, param_name='polynomialfeatures__degree',
param_range=degrees, cv=5, scoring='neg_root_mean_squared_error')
# −tr.mean(1) baja siempre; −va.mean(1) dibuja la U → elegir el mínimo
sizes, tr, va = learning_curve(model.set_params(polynomialfeatures__degree=9), X, y, cv=5)
# brecha grande que se cierra con más n ⇒ varianza; ambas altas y planas ⇒ sesgo

Autoevaluación

0/5 correctas · 0 respondidas
1. La varianza de un modelo mide…
2. Un modelo de grado 1 sobre datos senoidales tiene…
3. ¿Qué término NO puede reducir ningún modelo?
4. Agregar muchos más datos de entrenamiento principalmente reduce…
5. En la derivación, el término cruzado 2E[(f−y^)ε]2\mathbb{E}[(f-\hat y)\varepsilon] se anula porque…

Fuente ·ML_Course_regularization_and_model_selection.pdf (slides 4–18) · ML_Course/session-03a-bias-variance.ipynb