Cómo Medir la Capacidad Explicativa de un Modelo de Regresión
Cuando desarrollamos un modelo de regresión, una de las preguntas más importantes es: ¿qué tan bien explica el modelo los datos observados?. Aunque métricas como el Error Cuadrático Medio (MSE) o el Error Absoluto Medio (MAE) nos indican cuánto se equivoca un modelo en sus predicciones, no nos dicen qué proporción de la información presente en los datos ha sido realmente capturada.
Para responder a esta cuestión utilizamos el coeficiente de determinación, más conocido como R², una de las métricas más utilizadas en Machine Learning, estadística y ciencia de datos para evaluar modelos de regresión.
¿Qué es el coeficiente de determinación?
El coeficiente de determinación mide qué porcentaje de la variabilidad de la variable objetivo puede ser explicado por el modelo. Dicho de forma más sencilla: R² nos indica cuánto mejor es nuestro modelo que una predicción basada únicamente en la media de los datos. Si un modelo logra explicar gran parte de las variaciones observadas, tendrá un valor de R² elevado. Si apenas encuentra patrones útiles, el valor será bajo.

La Idea Intuitiva Detrás del R²
Imaginemos que queremos predecir el precio de viviendas. Supongamos que el precio medio de todas las viviendas del conjunto de datos es de 250.000 €. Una estrategia extremadamente simple sería ignorar todas las características de las viviendas y predecir siempre: 250.000€ para cualquier casa.
Obviamente, esta estrategia produciría errores importantes. Ahora entrenamos un modelo utilizando variables como: metros cuadrados, número de habitaciones, ubicación, antigüedad, etc. Si el modelo consigue reducir significativamente esos errores, significa que está explicando parte de la variabilidad presente en los precios. El R² cuantifica precisamente cuánto ha mejorado el modelo respecto a utilizar únicamente la media.
Variabilidad Total y Variabilidad Residual
Para entender cómo se calcula R² es necesario distinguir dos conceptos fundamentales.
Variabilidad Total
Representa toda la dispersión existente en la variable objetivo respecto a su media. Por ejemplo, si los precios de las viviendas varían entre 100.000 € y 800.000 €, existe una gran variabilidad que el modelo intentará explicar. La variabilidad total se calcula mediante la Suma Total de Cuadrados (SST):
$$SST=\sum_{i=1}^{n}(y_i-\bar{y})^2$$
Donde:
- \(y_i\) es cada valor real.
- \(\bar{y}\) es la media de todos los valores.
Variabilidad Residual
Una vez entrenado el modelo, siempre existirá cierta diferencia entre las predicciones y los valores reales. Esa parte que el modelo no consigue explicar se conoce como variabilidad residual; cuanto menor sea esta cantidad, mejor será el ajuste. Se calcula mediante la Suma de Cuadrados Residuales (SSE):
$$SSE=\sum_{i=1}^{n}(y_i-\hat{y}_i)^2$$
Donde:
- \(y_i\) es el valor real.
- \(\hat{y}_i\) es la predicción del modelo.
Fórmula del Coeficiente de Determinación
El R² compara la variabilidad residual con la variabilidad total. Su fórmula es:
$$R^2=1-\frac{SSE}{SST}$$
Por tanto, mide la proporción de información que el modelo ha conseguido capturar.
Interpretación de los Valores de R²
- R² = 0: El modelo no explica absolutamente nada. Tiene el mismo rendimiento que predecir siempre la media de los datos.
- R² = 0.30: El modelo explica aproximadamente el 30% de la variabilidad observada. El 70% restante permanece sin explicar.
- R² = 0.70: El modelo explica el 70% de la variación presente en los datos. Generalmente se considera un resultado bastante sólido en muchos problemas reales.
- R² = 1: El modelo explica el 100% de la variabilidad. Todas las observaciones son predichas perfectamente. Aunque pueda parecer ideal, en algunos casos puede indicar sobreajuste (overfitting), especialmente cuando se evalúa sobre los mismos datos utilizados para entrenar.
Ventajas
- Fácil de interpretar: Expresa directamente la proporción de información explicada por el modelo.
- Permite comparar modelos: Es muy útil para evaluar diferentes algoritmos o configuraciones.
- Independiente de las unidades: A diferencia del MSE o RMSE, el R² no depende de la escala de la variable objetivo. Puede utilizarse para comparar problemas distintos.
Limitaciones
Aunque es una métrica muy popular, también tiene limitaciones importantes.
- No mide directamente el error: Dos modelos pueden tener valores de R² similares y errores muy diferentes. Por ello suele combinarse con métricas como:
- MAE
- MSE
- RMSE
- Puede aumentar al añadir variables irrelevantes: Una característica importante es que el R² nunca disminuye al incorporar nuevas variables al modelo. Incluso variables sin valor predictivo pueden provocar un ligero aumento. Por esta razón, utilizar únicamente R² puede conducir a conclusiones equivocadas.
- No garantiza causalidad: Un valor elevado de R² no implica que exista una relación causal entre las variables. Simplemente indica que existe una relación estadística capaz de explicar parte de la variabilidad observada. Para solucionar el problema de añadir variables innecesarias, se utiliza el R² Ajustado (Adjusted R²).
Cálculo del Coeficiente de Determinación (R²) en Python
La biblioteca Scikit-Learn incorpora funciones que permiten calcular el coeficiente de determinación de forma sencilla. Una vez entrenado un modelo y generadas las predicciones, podemos evaluar su capacidad explicativa utilizando la función r2_score().
Supongamos que disponemos de los valores reales y las predicciones generadas por nuestro modelo:
from sklearn.metrics import r2_score
# Valores reales
y_true = [100, 150, 200, 250, 300]
# Predicciones del modelo
y_pred = [110, 140, 195, 260, 290]
# Calcular R²
r2 = r2_score(y_true, y_pred)
print(f"R²: {r2:.4f}")
R²: 0.9850Esto indica que el modelo explica aproximadamente el 98,5% de la variabilidad presente en los datos.
Cálculo tras entrenar un modelo
En un flujo de trabajo típico de Machine Learning, primero entrenamos el modelo y posteriormente calculamos el R² sobre el conjunto de prueba.
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
# Dividir datos
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# Crear modelo
model = LinearRegression()
# Entrenar
model.fit(X_train, y_train)
# Realizar predicciones
y_pred = model.predict(X_test)
# Calcular R²
r2 = r2_score(y_test, y_pred)
print(f"R² Score: {r2:.4f}")
Utilizando el método .score()
Muchos modelos de regresión en Scikit-Learn incluyen directamente el cálculo de R² mediante el método .score().
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
r2 = model.score(X_test, y_test)
print(f"R² Score: {r2:.4f}")
Internamente, este método devuelve exactamente el mismo resultado que r2_score() para modelos de regresión.
Comparando Varios Modelos
Una práctica habitual consiste en entrenar varios algoritmos y comparar sus valores de R² para seleccionar el modelo con mayor capacidad explicativa.
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import r2_score
models = {
"Linear Regression": LinearRegression(),
"Random Forest": RandomForestRegressor(random_state=42)
}
for name, model in models.items():
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
r2 = r2_score(y_test, y_pred)
print(f"{name}: R² = {r2:.4f}")
Este enfoque permite comparar objetivamente distintos modelos y seleccionar aquel que mejor explica la variabilidad de los datos.
¿Qué se considera un buen R²?
No existe un valor universal. Depende del problema y del contexto de negocio. Por ejemplo:
| R² | Interpretación |
|---|---|
| < 0.30 | Capacidad explicativa baja |
| 0.30 – 0.50 | Moderada |
| 0.50 – 0.70 | Buena |
| 0.70 – 0.90 | Muy buena |
| > 0.90 | Excelente (o posible sobreajuste) |
Sin embargo, en problemas complejos como economía, comportamiento humano o mercados financieros, valores de R² relativamente modestos pueden seguir siendo extremadamente útiles.
R² Ajustado: Corrigiendo una de sus Limitaciones
Para solucionar el problema de añadir variables innecesarias, se utiliza el R² Ajustado (Adjusted R²). Esta métrica introduce una penalización cuando se agregan variables que no aportan información relevante. Por ello resulta especialmente útil en modelos con múltiples variables predictoras. Mientras que el R² tradicional tiende a aumentar al añadir variables, el R² ajustado puede disminuir si esas variables no mejoran realmente el modelo.
Aunque el coeficiente de determinación (R²) es una métrica muy útil para medir la capacidad explicativa de un modelo, presenta una limitación importante: nunca disminuye cuando añadimos nuevas variables predictoras. Incluso si una variable no aporta información relevante, el valor de R² puede mantenerse igual o aumentar ligeramente, dando la impresión de que el modelo ha mejorado.
Para corregir este problema se utiliza el R² Ajustado (Adjusted R²), una versión modificada del coeficiente de determinación que penaliza la incorporación de variables innecesarias.
¿Por qué necesitamos el R² Ajustado?
Supongamos que estamos construyendo un modelo para predecir el precio de una vivienda. Inicialmente utilizamos variables como:
- Metros cuadrados.
- Número de habitaciones.
- Antigüedad de la vivienda.
Posteriormente añadimos una nueva variable:
- Número de letras del nombre del propietario.
Esta última variable no tiene ninguna relación real con el precio de una vivienda. Sin embargo, el R² tradicional podría aumentar ligeramente simplemente por haber añadido una nueva característica al modelo. El problema es que el R² no distingue entre variables útiles y variables irrelevantes. El R² Ajustado sí lo hace.
¿Cómo Funciona?
El R² Ajustado incorpora una penalización basada en:
- El número de observaciones disponibles.
- El número de variables predictoras utilizadas.
Si una nueva variable aporta información relevante, el R² Ajustado aumentará. Si una nueva variable no mejora realmente la capacidad predictiva del modelo, el R² Ajustado disminuirá. Por esta razón, suele considerarse una métrica más fiable cuando se comparan modelos con distinto número de variables.
Fórmula del R² Ajustado
$$R^2_{adj}=1-(1-R^2)\frac{n-1}{n-p-1}$$
Donde:
- R² = Coeficiente de determinación tradicional.
- n = Número de observaciones.
- p = Número de variables predictoras.
La fórmula introduce una penalización que aumenta a medida que incorporamos más variables al modelo.
Interpretación
La interpretación es similar a la del R² tradicional:
| Valor | Interpretación |
|---|---|
| Cercano a 0 | El modelo explica poca variabilidad |
| Cercano a 1 | El modelo explica gran parte de la variabilidad |
| Disminuye al añadir variables | Las nuevas variables no aportan valor |
¿Cuándo Utilizar R² Ajustado?
El R² Ajustado resulta especialmente útil cuando:
- Trabajamos con regresión múltiple.
- Comparamos modelos con diferente número de variables.
- Realizamos procesos de selección de características (Feature Selection).
- Queremos evitar modelos excesivamente complejos.
- Buscamos reducir el riesgo de sobreajuste (Overfitting).
Si todos los modelos tienen exactamente las mismas variables, el R² tradicional suele ser suficiente. Sin embargo, cuando el número de características cambia entre modelos, el R² Ajustado proporciona una evaluación más justa.
Cálculo en Python
Scikit-Learn no incluye una función específica para calcular el R² Ajustado, pero puede obtenerse fácilmente a partir del R² tradicional.
from sklearn.metrics import r2_score
# R² tradicional
r2 = r2_score(y_test, y_pred)
# Número de observaciones
n = len(y_test)
# Número de variables predictoras
p = X_test.shape[1]
# R² Ajustado
adjusted_r2 = 1 - ((1 - r2) * (n - 1) / (n - p - 1))
print(f"R²: {r2:.4f}")
print(f"Adjusted R²: {adjusted_r2:.4f}")
Conclusión
El coeficiente de determinación (R²) es una de las métricas fundamentales para evaluar modelos de regresión. Su principal objetivo es medir qué proporción de la variabilidad de la variable objetivo es explicada por el modelo. Gracias a su interpretación intuitiva, se ha convertido en una herramienta imprescindible para comparar modelos y evaluar su capacidad predictiva.
El R² Ajustado surge para corregir una de las principales limitaciones del coeficiente de determinación tradicional. Mientras que el R² tiende a favorecer modelos cada vez más complejos, el R² Ajustado introduce una penalización que obliga a que cada nueva variable aporte un valor real al modelo. Por este motivo, cuando se trabaja con regresión múltiple y se comparan modelos con diferente número de características, el R² Ajustado suele ser una métrica más fiable para evaluar la calidad y capacidad explicativa de un modelo.
No obstante, el R² no debe utilizarse de forma aislada. Una evaluación rigurosa requiere complementarlo con métricas de error como MAE, MSE o RMSE, así como validar el comportamiento del modelo sobre datos que no haya visto previamente. Comprender el significado de R² y sus limitaciones es un paso esencial para cualquier profesional que trabaje con Machine Learning y Ciencia de Datos.