Ir al contenido

Métricas, outliers y polinomios

En simple: lee esto primero

Para saber si el modelo es bueno, medimos cuánto se equivoca en promedio; y si una recta no alcanza, podemos usar curvas.

Imagínalo así

Es como calificar a un pronosticador del clima: ¿por cuántos grados se equivoca en promedio? ¿Y es mejor que simplemente decir «hará la temperatura de siempre»?

Lo que tienes que llevarte
  • MSE / RMSE / MAE miden el error típico (RMSE y MAE en las mismas unidades que lo que predices).
  • R² responde: ¿qué tanto mejor que predecir siempre el promedio? 1 = perfecto, 0 = igual que el promedio.
  • Con curvas (polinomios) puedes ajustar mejor, pero si te pasas el modelo empieza a «memorizar» el ruido.
Palabras raras de esta página
outlier
un dato raro, muy lejos del resto, que puede jalar la recta hacia él.
features polinómicas
agregar x², x³… como nuevas columnas para que la «recta» pueda curvarse.
overfitting (sobreajuste)
el modelo se aprende de memoria los datos de entrenamiento, incluido el ruido, y falla con datos nuevos.
underfitting
el modelo es demasiado simple y ni siquiera acierta en los datos de entrenamiento.

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.

Con residuales ri=yi−y^ir_i = y_i-\hat y_i sobre nn puntos de validación o test:

MSE=1n∑iri2,RMSE=MSE,MAE=1n∑i∣ri∣\text{MSE} = \frac1n\sum_i r_i^2,\qquad \text{RMSE} = \sqrt{\text{MSE}},\qquad \text{MAE} = \frac1n\sum_i |r_i|
  • RMSE vuelve a las unidades del target («un error de 50 soles», no «50 soles²»): es lo más fácil de reportar y es justo lo que minimizan los mínimos cuadrados.
  • MAE pesa cada error linealmente: mucho más robusto a outliers.
  • Siempre RMSE ≥ MAE; la brecha crece cuando unos pocos errores son grandes: una pista de outliers.

Estas métricas dicen qué tan grande es el error, no si es bueno. Para eso comparamos contra el modelo tonto que siempre predice yˉ\bar y:

R2=1−SSresSStot=1−∑i(yi−y^i)2∑i(yi−yˉ)2R^2 = 1-\frac{SS_\text{res}}{SS_\text{tot}} = 1-\frac{\sum_i (y_i-\hat y_i)^2}{\sum_i (y_i-\bar y)^2}

R2=1R^2 = 1 perfecto; 00 = igual que la media; puede ser negativo en datos de validación (peor que la media). No tiene unidades, así que compara entre problemas. Ejemplo de la slide: SSres=22.6SS_\text{res}=22.6, SStot=68.6⇒R2=1−0.33=0.67SS_\text{tot}=68.6 \Rightarrow R^2 = 1-0.33 = 0.67.

SituaciónMétrica recomendadaPor qué
Comunicar el error a un no expertoRMSE o MAEestán en las unidades del target («S/ 230 de error típico»)
Los errores grandes son graves (sobrecarga, stock)RMSE / MSEeleva al cuadrado: castiga fuerte los errores grandes
Hay outliers que no quieres que dominenMAElineal: un outlier pesa como uno más
Comparar entre problemas distintosR2R^2sin unidades: «qué fracción de la variación explico»
Elegir hiperparámetrosla misma métrica, en validaciónnunca en train ni en test

Graficar y^\hat y contra yy en datos no vistos: puntos pegados a la diagonal = preciso; curvas o abanicos sistemáticos revelan sesgo o varianza cambiante. Ese dibujo muestra dónde falla el modelo, cosa que R2R^2 esconde en un número.

Los mínimos cuadrados son sensibles a outliers: al elevar al cuadrado, un punto lejano domina el costo e inclina la recta hacia él (pruébalo en el simulador de la página anterior). Inspecciona tus datos; considera pérdidas robustas si los outliers son reales.

Cada wjw_j es el cambio esperado en y^\hat y por una unidad más de xjx_j, manteniendo las demás fijas. El signo da la dirección y la magnitud la fuerza, pero las magnitudes solo son comparables si las features comparten escala: estandariza primero. Cuidado: con features correlacionadas «mantener las demás fijas» es frágil, y un peso es asociación, no causalidad.

Cuando una recta no basta: features polinómicas

Sección titulada «Cuando una recta no basta: features polinómicas»

Una recta solo tiene dos perillas: puede inclinarse pero no doblarse. Señal de underfitting: los residuales no son ruido aleatorio, todavía trazan un patrón.

El truco: mantener la misma máquina pero alimentarla con potencias de xx como features nuevas:

ϕ(x)=(1,x,x2,…,xM),y^=w0+w1x+w2x2+⋯+wMxM=ϕ(x)⊤w\phi(x) = (1, x, x^2, \dots, x^M),\qquad \hat y = w_0 + w_1x + w_2x^2+\dots+w_Mx^M = \phi(x)^\top\mathbf{w}

La matriz de diseño (de Vandermonde) solo gana columnas. Nada más cambia: sigue siendo mínimos cuadrados lineales, mismas ecuaciones normales, mismo descenso de gradiente. La curva es una suma ponderada de funciones base fijas; los mínimos cuadrados solo eligen los pesos.

Con dos entradas, grado 2 agrega también el término cruzado: ϕ(x1,x2)=(1,x1,x2,x12,x1x2,x22)\phi(x_1,x_2) = (1, x_1, x_2, x_1^2, x_1x_2, x_2^2). Si la verdad es y=x1x2y = x_1x_2 (una silla), un plano da R2=−0.02R^2 = -0.02; agregar la columna x1x2x_1x_2 da R2=0.93R^2 = 0.93: ahora el efecto de x1x_1 depende de x2x_2. Pero grado pp sobre dd entradas necesita (d+pp)\binom{d+p}{p} columnas (286 para grado 3 y 10 entradas): se sobreajusta rápido.

Subiendo de grado: under → bien → overfit

Sección titulada «Subiendo de grado: under → bien → overfit»

Sube el grado… y mira la validación

Datos de sin(2πx) + ruido. El modelo sigue siendo lineal en los pesos: solo añadimos columnas x², x³… a la matriz de diseño. Los puntos llenos entrenan; los huecos validan.

00.20.40.60.81-2-1012x02468101200.20.40.60.811.2grado (complejidad)RMSE
ajuste actualverdad sin(2πx)RMSE trainRMSE validaciónmínimo de validación
RMSE train0.160
RMSE validación0.297
mayor |wⱼ|4.15
diagnósticobien
w0w1w2w3
Ambos errores bajos y cercanos: el punto dulce de la U. El error de entrenamiento siempre baja con el grado; el de validación tiene forma de U.
  • Grado 1: muy rígido (underfit). Grado 3: sigue la señal. Grado 9+: persigue el ruido (overfit).
  • El síntoma del overfitting son los pesos enormes: una curva ondulante se arma con coeficientes gigantes de signos opuestos que casi se cancelan.
  • ¿Y si simplemente prohibimos que los pesos crezcan? Eso es ridge: Jλ(w)=∥y−Xw∥2+λ∥w∥2J_\lambda(\mathbf{w}) = \|\mathbf{y}-\mathbf{X}\mathbf{w}\|^2 + \lambda\|\mathbf{w}\|^2, con solución (X⊤X+λI)−1X⊤y(\mathbf{X}^\top\mathbf{X}+\lambda\mathbf{I})^{-1}\mathbf{X}^\top\mathbf{y}. Mueve el slider de λ arriba. Es el tema de la siguiente unidad.

Un modelo tiene en validación SSres=30SS_\text{res} = 30 y SStot=25SS_\text{tot} = 25. ¿R2R^2? ¿Qué significa?

Ver solución

R2=1−30/25=−0.2R^2 = 1 - 30/25 = -0.2. Es negativo: el modelo predice peor en validación que simplemente responder la media yˉ\bar y siempre. Típico de un modelo sobreajustado evaluado fuera de su training set.

Autoevaluación

0/5 correctas · 0 respondidas
1. ¿Qué métrica es más robusta a outliers?
2. R2R^2 en datos de validación…
3. Un ajuste polinómico de grado 9 sigue siendo «regresión lineal» porque…
4. Residuales que dibujan una onda clara indican…
5. La «huella» del overfitting en un polinomio de alto grado es…
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import PolynomialFeatures, StandardScaler
from sklearn.linear_model import LinearRegression, Ridge
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
for deg in [1, 3, 9]:
m = make_pipeline(PolynomialFeatures(deg), StandardScaler(), LinearRegression())
m.fit(X_tr, y_tr)
p = m.predict(X_val)
print(deg,
mean_squared_error(y_val, p) ** 0.5, # RMSE
mean_absolute_error(y_val, p), # MAE
r2_score(y_val, p)) # R² (puede ser < 0)
# grado alto + ridge: misma flexibilidad, pesos controlados
m = make_pipeline(PolynomialFeatures(9), StandardScaler(), Ridge(alpha=1e-3)).fit(X_tr, y_tr)

Fuente ·ML_Course_Linear_Regression.pdf (slides 29–46) · ML_Course/session-02d-evaluation-and-complexity.ipynb · BANCO_DE_PREGUNTAS_ML_PART_1.pdf