R² Ajustado

El R² Ajustado resuelve un problema del normal: si agregas más variables a tu modelo, R² siempre sube (o se mantiene igual), incluso si las variables son ruido.

R² Ajustado penaliza los modelos con muchas variables, premiando la simplicidad.

La fórmula

Radj2=1(1R2)n1np1R^2_{adj} = 1 - (1 - R^2) \cdot \frac{n - 1}{n - p - 1}

¿Qué significa cada parte?

  • R2R^2 — El R² normal (sin ajustar)
  • nn — Número de observaciones (filas de datos)
  • pp — Número de features (columnas/variables predictoras)
  • n1np1\frac{n - 1}{n - p - 1} — Factor de penalización

¿Cómo funciona la penalización?

El factor n1np1\frac{n - 1}{n - p - 1} es siempre mayor o igual a 1, y crece cuando:

  • Tienes más features (p grande)
  • Tienes menos datos (n pequeño)

Esto significa que (1R2)(1 - R^2) se amplifica, reduciendo el R² ajustado.

Ejemplo

ModeloFeatures (p)R² Ajustado
A20.850.84
B100.870.80
C500.900.65

El modelo A tiene menos features pero mejor R² ajustado. Es probablemente el mejor modelo.


Implementación

Minerva proporciona R² Ajustado directamente. En scikit-learn debes calcularlo manualmente:

MinervaR2adj.java
1
2
3
4
5
import com.minerva.metrics.RegressionMetrics.RegressionMetrics;
RegressionMetrics metrics = new RegressionMetrics();
int numFeatures = X.cols();
double r2adj = metrics.R2adj(actual, predicted, numFeatures);

API Reference

R2adj(Vector actual, Vector predicted, int numFeatures)

Example.java
1
2
int numFeatures = X.cols();
double r2adj = metrics.R2adj(actual, predicted, numFeatures);
ParámetroTipoDescripción
actualVectorValores reales
predictedVectorValores predichos
numFeaturesintNúmero de features (p)

Retorna: double

Requisito

Necesitas más observaciones que features + 1: n > p + 1. Si no, el denominador sería menor o igual a 0.

Interpretación

AspectoValor
Rango(-inf, 1]
Mejor valor1
UnidadesAdimensional

¿Cuándo usar R² Ajustado?

Recomendado:

  • Para comparar modelos con diferente número de features
  • Cuando sospechas que tu modelo tiene variables innecesarias
  • Para evitar overfitting