Regresión Polinómica
Regresión por polinomios
Regresión Polinómica Grado 3
La regresión polinómica es una extensión de la regresión lineal que permite modelar relaciones no lineales entre la variable dependiente Y, y la variable independiente X mediante un polinomio. Esto se logra añadiendo términos elevados a diferentes potencias de la variable independiente.
La regresión polinómica se usa cuando la relación entre X e Y no es lineal, pero los datos pueden aproximarse razonablemente bien con una curva polinómica. A diferencia de la regresión lineal, que solo puede trazar una línea recta, una regresión polinómica de grado n puede trazar una curva con hasta ncambios de dirección.
La regresión polinómica es una de varias regresiones no líneales, como puede verse en el cuadro de la figura correspondiente.
Ecuación de regresión polinómica
Para una regresión polinómica de grado 2, por ejemplo, el modelo es:
Y = ß₀ + ß₁ X + ß₂ X² + ɛ
Para una regresión polinómica de grado 3:
Y = ß₀ + ß₁ X + ß₂ X² + ß₃ X³ + ɛ
donde:
ß₀, ß₁, ß₂, ß₃,...., ßn son los coeficientes que determinan la forma de la curva.,
ɛ es el término de error.
Utilidad de la regresión polinómica
La regresión polinómica es útil cuando observamos una relación curva o más compleja en los datos. Sin embargo, es importante no abusar de ella, ya que un grado demasiado alto del polinomio puede llevar a un sobreajuste, es decir, el modelo se adapta muy bien a los datos de entrenamiento pero generaliza mal en datos nuevos.
Un buen enfoque es comenzar con un grado bajo (como el cuadrático) e ir aumentando el grado solo si es necesario y si mejora el ajuste de manera significativa.
Ajuste de una regresión polinómica
Para ajustar una regresión polinómica, el proceso sigue estos pasos:
Transformar los datos: Generamos nuevas variables (o "características") que son las potencias de X, es decir, X, X², X³, etc., hasta el grado deseado.
Ajustar un modelo lineal: Una vez que las variables están transformadas, podemos aplicar la regresión lineal sobre estas variables. Aunque el modelo final es no lineal en X, sigue siendo lineal en los parámetros ß, lo cual facilita el ajuste.
Evaluar el modelo: Usamos métricas de error para verificar si el grado del polinomio proporciona un buen ajuste sin sobreajustarse.
Ejemplo en Python
Supongamos que queremos ajustar una regresión polinómica de grado 3 para modelar la relación entre X e Y en un conjunto de datos.
Este ejemplo se comparte en jupyter notebook en github.
Paso 1: Crear datos de ejemplo
Primero, generamos datos de ejemplo con una relación no lineal.
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics import mean_squared_error
# Crear datos de ejemplo
np.random.seed(0)
X = np.linspace(0, 10, 50).reshape(-1, 1)
Y = 2 + 3*X - 0.5*X**2 + 0.1*X**3 + np.random.normal(0, 2, X.shape)
# Graficar los datos
plt.scatter(X, Y, color="red", label="Datos")
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Datos para Regresión Polinómica")
plt.legend()
plt.show()
```
Paso 2: Transformar las características
Creamos una matriz de características donde incluimos X, X^2, X^3, etc., hasta el grado que queremos ajustar.
```python
# Generar características polinómicas de grado 3
poly_features = PolynomialFeatures(degree=3)
X_poly = poly_features.fit_transform(X)
```
Paso 3: Ajustar el modelo de regresión lineal
Utilizamos `LinearRegression` de `sklearn`, que ahora ajustará el modelo sobre las características transformadas.
```python
# Ajustar el modelo lineal con características polinómicas
model = LinearRegression()
model.fit(X_poly, Y)
# Parámetros obtenidos
coeficientes = model.coef_
intercepto = model.intercept_
print(f"Coeficientes: {coeficientes}")
print(f"Intercepto: {intercepto}")
```
Paso 4: Realizar predicciones y graficar el ajuste
Usamos el modelo para predecir valores de Y a partir de los valores de X y luego graficamos la curva ajustada.
```python
# Predicciones
Y_pred = model.predict(X_poly)
# Graficar los datos originales y el ajuste
plt.scatter(X, Y, color="red", label="Datos")
plt.plot(X, Y_pred, color="blue", label=f"Ajuste polinómico de grado 3")
plt.xlabel("X")
plt.ylabel("Y")
plt.legend()
plt.show()
```
5. Evaluación del modelo
Podemos evaluar el modelo con métricas como el error cuadrático medio (MSE) para ver qué tan bien ajusta los datos.
```python
# Evaluación del modelo
mse = mean_squared_error(Y, Y_pred)
print(f"Error cuadrático medio (MSE): {mse}")
```
Los resultados son:
Error cuadrático medio (MSE): 4.284469469535701
Coeficiente de determinación R^2: 0.9908475723112274
6. Interpretación
Interpretación en términos de error promedio:
Dado que el MSE es el promedio de los errores al cuadrado, se puede usar la raíz cuadrada del MSE (o RMSE, por sus siglas en inglés) para entender el error en unidades originales.
Esto es útil para tener una interpretación en la misma escala que 𝑌:
RMSE = √MSE = √4.284 ≈ 2.07
Esto significa que, en promedio, los valores predichos 𝑌^ están a una distancia de aproximadamente 2.07 unidades de los valores reales 𝑌.
Comparación con otros modelos
Otro enfoque es comparar el MSE de este modelo con el de otros modelos (por ejemplo, regresión lineal simple o polinómica de otro grado) para ver si la complejidad añadida en este modelo de grado 3 realmente reduce el error.
Juicio de calidad del ajuste
Un MSE de 4.28 puede considerarse bueno si:
El rango de valores de 𝑌 no es muy pequeño.
No hay un modelo alternativo que reduzca el MSE de manera significativa sin caer en sobreajuste.
Coeficiente de determinación
Este coeficiente es ≈ 1 lo cual es un indicio de buena calidad de ajuste del modelo si se lo agrega a la interpretación del RMSE
Consideraciones generales de bondad de ajuste
En regresión polinómica se pueden utilizar tanto el coeficiente de determinación R2 como el Error Cuadrático Medio (MSE) o su raíz cuadrada (RMSE) para evaluar la calidad del ajuste, de forma similar a la regresión lineal. Ambos son aplicables y útiles, pero cada uno ofrece una perspectiva diferente sobre el rendimiento del modelo:
1. R^2 (coeficiente de determinación)
Mide qué tan bien los valores predichos por el modelo explican la variabilidad observada en los datos. Un R^2 más cercano a 1 indica que el modelo explica una gran proporción de la variabilidad en los datos. Se trata de un buen modelo.
Funciona bien para comparar modelos dentro del mismo conjunto de datos, permitiéndonos ver qué modelo captura mejor la relación entre X e Y. Solo una X (y no Xis)
Limitación en regresión polinómica: A medida que aumentas el grado del polinomio, R^2 tiende a aumentar, incluso si el modelo comienza a sobreajustarse, es decir, a capturar el ruido en lugar de la verdadera relación subyacente. Por eso, un R^2 muy alto en un modelo de grado alto puede no ser confiable.
2. RMSE (Raíz del Error Cuadrático Medio)
Mide el error de predicción promedio en unidades originales de Y, ofreciendo una interpretación directa de la precisión de las predicciones.
Un RMSE bajo indica que las predicciones están, en promedio, cerca de los valores reales, lo cual es un buen indicador de un buen ajuste.
Ventaja en modelos no lineales: El RMSE no aumenta automáticamente con el grado del polinomio, por lo que es una medida más robusta para verificar si el ajuste realmente ha mejorado. También es útil cuando se quieren comparar modelos de diferentes tipos (no solo lineal vs. polinómico).
Usar RMSE sirve para entender la precisión del modelo en unidades de Y y para comparar modelos de distinta naturaleza, como un modelo lineal vs. uno polinómico. También es adecuado para evaluar si la complejidad adicional realmente mejora la precisión sin llevar a un sobreajuste.
En regresión polinómica es recomendable revisar ambas métricas:
R2 para observar la capacidad de explicación del modelo y
RMSE para verificar la precisión de las predicciones en términos absolutos y controlar el riesgo de sobreajuste.
Ejemplos
En un jupyter notebook se comparten en github, ajustes polinómicos en donde no solo se observan las graficas de ajuste, que están en las figuras correspondientes de este apartado sino también los indicadores de bondad de ajuste R2, MSE y RMSE. En ambos casos se generan datos con ruido que luego se ajustan utilizando la librería sklearn. Lo mismo sucede tanto en el primer ejemplo como en el segundo. Y se observa la diferencia en la bondad de ajuste dada por la dispersión de los datos y la escala de los valores de y.
Ventajas y desventajas de la regresión polinómica
Ventajas:
Es flexible y permite modelar relaciones curvas.
Conserva la estructura lineal en los coeficientes, lo cual facilita el ajuste.
Desventajas:
Tiende a sobreajustar si se usan polinomios de grado alto.
La interpretación de los coeficientes se vuelve más difícil a medida que aumenta el grado.
No siempre es la mejor opción para relaciones no lineales complejas, ya que puede oscilar demasiado fuera de los rangos observados.
La regresión polinómica es una herramienta poderosa para capturar relaciones no lineales, pero debe usarse con cuidado para evitar sobreajustarse. Para eso se complementa con regresiones del tipo Ridge o Lasso.
Regresiones no lineales
Existen diversas formas de ajustar una curva a un conjunto de datos no lineales. Tal es el caso de regresiones como las que se ven en el cuadro de la figura correspondiente. Entonces en función del caso se procederá al uso y aplicación de método de regresión que más convenga por su calidad de ajuste.