Interpolation contre Extrapolation
Dans le chapitre précédent, nous avons remarqué que nos prédictions à l'aide de différents modèles deviennent plus variées aux extrémités.
Les prédictions deviennent peu fiables dès que l'on sort de l'intervalle des données d'entraînement. Prédire au-delà de cet intervalle correspond à l'extrapolation, tandis que prédire à l'intérieur correspond à l'interpolation.
La régression ne gère pas bien l'extrapolation. Elle est utilisée pour l'interpolation et peut produire des prédictions absurdes lorsque de nouveaux cas se situent en dehors de l'intervalle du jeu d'entraînement.
Intervalles de confiance
OLS peut également fournir des intervalles de confiance pour la ligne de régression :
lower = model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_lower']
upper = model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_upper']
alpha correspond au niveau de confiance (généralement 0.05). Cela fournit les bornes inférieure et supérieure pour chaque valeur de X_new_tilde.
Il est ensuite possible de tracer la courbe de régression accompagnée de son intervalle de confiance.
12345678910111213141516171819202122import 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()
Comme la distribution réelle de la variable cible n’est pas connue, la courbe de régression constitue uniquement une approximation. L’intervalle de confiance indique où la vraie courbe est susceptible de se situer. Cet intervalle s’élargit à mesure que l’on s’éloigne des données d’entraînement.
Les intervalles de confiance sont construits en supposant que le modèle a été correctement choisi (par exemple, Régression Linéaire Simple ou Régression Polynomiale de degré 4).
Si le modèle est mal choisi, l'intervalle de confiance n'est pas fiable, tout comme la courbe elle-même. Vous apprendrez à sélectionner le meilleur modèle dans la section suivante.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 5.26
Interpolation contre Extrapolation
Glissez pour afficher le menu
Dans le chapitre précédent, nous avons remarqué que nos prédictions à l'aide de différents modèles deviennent plus variées aux extrémités.
Les prédictions deviennent peu fiables dès que l'on sort de l'intervalle des données d'entraînement. Prédire au-delà de cet intervalle correspond à l'extrapolation, tandis que prédire à l'intérieur correspond à l'interpolation.
La régression ne gère pas bien l'extrapolation. Elle est utilisée pour l'interpolation et peut produire des prédictions absurdes lorsque de nouveaux cas se situent en dehors de l'intervalle du jeu d'entraînement.
Intervalles de confiance
OLS peut également fournir des intervalles de confiance pour la ligne de régression :
lower = model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_lower']
upper = model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_upper']
alpha correspond au niveau de confiance (généralement 0.05). Cela fournit les bornes inférieure et supérieure pour chaque valeur de X_new_tilde.
Il est ensuite possible de tracer la courbe de régression accompagnée de son intervalle de confiance.
12345678910111213141516171819202122import 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()
Comme la distribution réelle de la variable cible n’est pas connue, la courbe de régression constitue uniquement une approximation. L’intervalle de confiance indique où la vraie courbe est susceptible de se situer. Cet intervalle s’élargit à mesure que l’on s’éloigne des données d’entraînement.
Les intervalles de confiance sont construits en supposant que le modèle a été correctement choisi (par exemple, Régression Linéaire Simple ou Régression Polynomiale de degré 4).
Si le modèle est mal choisi, l'intervalle de confiance n'est pas fiable, tout comme la courbe elle-même. Vous apprendrez à sélectionner le meilleur modèle dans la section suivante.
Merci pour vos commentaires !