Interpolation vs. Extrapolation
Im vorherigen Kapitel haben wir festgestellt, dass unsere Vorhersagen mit verschiedenen Modellen an den Rändern immer unterschiedlicher werden.
Vorhersagen werden unzuverlässig, sobald wir uns außerhalb des Bereichs der Trainingsdaten bewegen. Die Vorhersage außerhalb dieses Bereichs wird als Extrapolation bezeichnet, während die Vorhersage innerhalb dieses Bereichs als Interpolation gilt.
Die Regression eignet sich nicht für die Extrapolation. Sie wird für die Interpolation verwendet und kann zu absurden Vorhersagen führen, wenn neue Instanzen außerhalb des Bereichs des Trainingsdatensatzes liegen.
Konfidenzintervalle
OLS kann auch Konfidenzintervalle für die Regressionslinie zurückgeben:
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 ist das Konfidenzniveau (typischerweise 0.05). Dies liefert untere und obere Grenzen für jeden Wert in X_new_tilde.
Anschließend kann die Regressionslinie zusammen mit ihrem Konfidenzintervall geplottet werden.
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()
Da die wahre Verteilung des Zielwerts unbekannt ist, stellt die Regressionslinie nur eine Annäherung dar. Das Konfidenzintervall zeigt, wo die wahre Linie wahrscheinlich liegt. Das Intervall wird breiter, je weiter man sich von den Trainingsdaten entfernt.
Die Konfidenzintervalle werden unter der Annahme erstellt, dass das Modell korrekt gewählt wurde (z. B. einfache lineare Regression oder Polynomialregression vierten Grades).
Wenn das Modell schlecht gewählt ist, ist das Konfidenzintervall unzuverlässig und ebenso die Regressionslinie selbst. Im nächsten Abschnitt wird erläutert, wie das beste Modell ausgewählt werden kann.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 5.26
Interpolation vs. Extrapolation
Swipe um das Menü anzuzeigen
Im vorherigen Kapitel haben wir festgestellt, dass unsere Vorhersagen mit verschiedenen Modellen an den Rändern immer unterschiedlicher werden.
Vorhersagen werden unzuverlässig, sobald wir uns außerhalb des Bereichs der Trainingsdaten bewegen. Die Vorhersage außerhalb dieses Bereichs wird als Extrapolation bezeichnet, während die Vorhersage innerhalb dieses Bereichs als Interpolation gilt.
Die Regression eignet sich nicht für die Extrapolation. Sie wird für die Interpolation verwendet und kann zu absurden Vorhersagen führen, wenn neue Instanzen außerhalb des Bereichs des Trainingsdatensatzes liegen.
Konfidenzintervalle
OLS kann auch Konfidenzintervalle für die Regressionslinie zurückgeben:
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 ist das Konfidenzniveau (typischerweise 0.05). Dies liefert untere und obere Grenzen für jeden Wert in X_new_tilde.
Anschließend kann die Regressionslinie zusammen mit ihrem Konfidenzintervall geplottet werden.
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()
Da die wahre Verteilung des Zielwerts unbekannt ist, stellt die Regressionslinie nur eine Annäherung dar. Das Konfidenzintervall zeigt, wo die wahre Linie wahrscheinlich liegt. Das Intervall wird breiter, je weiter man sich von den Trainingsdaten entfernt.
Die Konfidenzintervalle werden unter der Annahme erstellt, dass das Modell korrekt gewählt wurde (z. B. einfache lineare Regression oder Polynomialregression vierten Grades).
Wenn das Modell schlecht gewählt ist, ist das Konfidenzintervall unzuverlässig und ebenso die Regressionslinie selbst. Im nächsten Abschnitt wird erläutert, wie das beste Modell ausgewählt werden kann.
Danke für Ihr Feedback!