Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Interpolación vs Extrapolación | Regresión Polinómica
Regresión Lineal con Python

bookInterpolación vs Extrapolación

En el capítulo anterior, observamos que nuestras predicciones utilizando diferentes modelos se vuelven más diversas en los extremos.

Para ser más precisos, las predicciones se vuelven extrañas en el momento en que superamos el rango de valores del conjunto de entrenamiento. Predecir valores fuera del rango del conjunto de entrenamiento se denomina extrapolación, y predecir valores dentro del rango es interpolación.

La regresión no maneja bien la extrapolación. Se utiliza para la interpolación y puede producir predicciones absurdas cuando las nuevas instancias están fuera del rango del conjunto de entrenamiento.

Intervalos de confianza

Usando la clase OLS, también puedes obtener los intervalos de confianza para la línea de regresión en cualquier punto. Pero la sintaxis es un poco complicada:

lower = regression_model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_lower']
upper = regression_model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_upper']

Donde alpha es un nivel de confianza, usualmente establecido en 0.05.
Con el código anterior, obtendrás los límites inferior y superior del intervalo de confianza de la línea de regresión en el punto X_new_tilde (o un arreglo de límites superiores e inferiores si X_new_tilde es un arreglo).

Dado esto, ahora podemos graficar la línea de regresión junto con su intervalo de confianza:

12345678910111213141516171819202122
import pandas as pd import numpy as np import matplotlib.pyplot as plt import statsmodels.api as sm from sklearn.preprocessing import PolynomialFeatures # Import PolynomialFeatures class file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/poly.csv' df = pd.read_csv(file_link) n = 4 # A degree of the polynomial regression X = df[['Feature']] # Assign X as a DataFrame y = df['Target'] # Assign y X_tilde = PolynomialFeatures(n).fit_transform(X) # Get X_tilde regression_model = sm.OLS(y, X_tilde).fit() # Initialize and train the model X_new = np.linspace(-0.1, 1.5, 80) # 1-d array of new feature values X_new_tilde = PolynomialFeatures(n).fit_transform(X_new.reshape(-1,1)) # Transform X_new for predict() method y_pred = regression_model.predict(X_new_tilde) lower = regression_model.get_prediction(X_new_tilde).summary_frame(0.05)['mean_ci_lower'] # Get lower bound for each point upper = regression_model.get_prediction(X_new_tilde).summary_frame(0.05)['mean_ci_upper'] # get upper bound for each point plt.scatter(X, y) # Build a scatterplot plt.plot(X_new, y_pred) # Build a Polynomial Regression graph plt.fill_between(X_new, lower, upper, alpha=0.4) plt.show()
copy

Sin conocer la distribución de un objetivo, no podemos encontrar la línea de regresión exacta. Todo lo que hacemos es intentar aproximarla en base a nuestros datos. El intervalo de confianza de la línea de regresión es el intervalo en el que la línea de regresión exacta se encuentra con el nivel de confianza alpha.
Puedes observar que el intervalo se vuelve cada vez más grande a medida que se aleja del rango del conjunto de entrenamiento.

Note
Nota

Los intervalos de confianza se construyen asumiendo que se eligió correctamente el modelo (por ejemplo, Regresión Lineal Simple o Regresión Polinómica de grado 4).

Si el modelo se elige de manera incorrecta, el intervalo de confianza no es confiable, y la propia línea tampoco lo es. Aprenderá cómo seleccionar el mejor modelo en la siguiente sección.

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 4

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 5.26

bookInterpolación vs Extrapolación

Desliza para mostrar el menú

En el capítulo anterior, observamos que nuestras predicciones utilizando diferentes modelos se vuelven más diversas en los extremos.

Para ser más precisos, las predicciones se vuelven extrañas en el momento en que superamos el rango de valores del conjunto de entrenamiento. Predecir valores fuera del rango del conjunto de entrenamiento se denomina extrapolación, y predecir valores dentro del rango es interpolación.

La regresión no maneja bien la extrapolación. Se utiliza para la interpolación y puede producir predicciones absurdas cuando las nuevas instancias están fuera del rango del conjunto de entrenamiento.

Intervalos de confianza

Usando la clase OLS, también puedes obtener los intervalos de confianza para la línea de regresión en cualquier punto. Pero la sintaxis es un poco complicada:

lower = regression_model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_lower']
upper = regression_model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_upper']

Donde alpha es un nivel de confianza, usualmente establecido en 0.05.
Con el código anterior, obtendrás los límites inferior y superior del intervalo de confianza de la línea de regresión en el punto X_new_tilde (o un arreglo de límites superiores e inferiores si X_new_tilde es un arreglo).

Dado esto, ahora podemos graficar la línea de regresión junto con su intervalo de confianza:

12345678910111213141516171819202122
import pandas as pd import numpy as np import matplotlib.pyplot as plt import statsmodels.api as sm from sklearn.preprocessing import PolynomialFeatures # Import PolynomialFeatures class file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/poly.csv' df = pd.read_csv(file_link) n = 4 # A degree of the polynomial regression X = df[['Feature']] # Assign X as a DataFrame y = df['Target'] # Assign y X_tilde = PolynomialFeatures(n).fit_transform(X) # Get X_tilde regression_model = sm.OLS(y, X_tilde).fit() # Initialize and train the model X_new = np.linspace(-0.1, 1.5, 80) # 1-d array of new feature values X_new_tilde = PolynomialFeatures(n).fit_transform(X_new.reshape(-1,1)) # Transform X_new for predict() method y_pred = regression_model.predict(X_new_tilde) lower = regression_model.get_prediction(X_new_tilde).summary_frame(0.05)['mean_ci_lower'] # Get lower bound for each point upper = regression_model.get_prediction(X_new_tilde).summary_frame(0.05)['mean_ci_upper'] # get upper bound for each point plt.scatter(X, y) # Build a scatterplot plt.plot(X_new, y_pred) # Build a Polynomial Regression graph plt.fill_between(X_new, lower, upper, alpha=0.4) plt.show()
copy

Sin conocer la distribución de un objetivo, no podemos encontrar la línea de regresión exacta. Todo lo que hacemos es intentar aproximarla en base a nuestros datos. El intervalo de confianza de la línea de regresión es el intervalo en el que la línea de regresión exacta se encuentra con el nivel de confianza alpha.
Puedes observar que el intervalo se vuelve cada vez más grande a medida que se aleja del rango del conjunto de entrenamiento.

Note
Nota

Los intervalos de confianza se construyen asumiendo que se eligió correctamente el modelo (por ejemplo, Regresión Lineal Simple o Regresión Polinómica de grado 4).

Si el modelo se elige de manera incorrecta, el intervalo de confianza no es confiable, y la propia línea tampoco lo es. Aprenderá cómo seleccionar el mejor modelo en la siguiente sección.

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 4
some-alt