Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Interpolation vs. Extrapolation | Polynomiale Regression
Lineare Regression mit Python
course content

Kursinhalt

Lineare Regression mit Python

Lineare Regression mit Python

1. Einfache Lineare Regression
2. Multiple Lineare Regression
3. Polynomiale Regression
4. Das Beste Modell Auswählen

book
Interpolation vs. Extrapolation

Im vorherigen Kapitel haben wir festgestellt, dass unsere Vorhersagen mit verschiedenen Modellen an den Rändern immer unterschiedlicher werden.

Genauer gesagt werden die Vorhersagen merkwürdig, sobald wir den Wertebereich des Trainingsdatensatzes überschreiten. Die Vorhersage von Werten außerhalb des Trainingsbereichs wird als Extrapolation bezeichnet, während die Vorhersage von Werten innerhalb des Bereichs als Interpolation gilt.

Die Regression eignet sich nicht gut für die Extrapolation. Sie wird für die Interpolation verwendet und kann zu absurden Vorhersagen führen, wenn neue Instanzen außerhalb des Trainingsbereichs liegen.

Konfidenzintervalle

Mit der OLS-Klasse können auch die Konfidenzintervalle für die Regressionslinie an jedem Punkt ermittelt werden. Die Syntax ist jedoch etwas kompliziert:

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']

Dabei ist alpha das Konfidenzniveau, üblicherweise auf 0.05 gesetzt.
Mit dem obigen Code erhält man die unteren und oberen Grenzen des Konfidenzintervalls der Regressionslinie am Punkt X_new_tilde (oder ein Array von oberen und unteren Grenzen, falls X_new_tilde ein Array ist).

Damit kann nun die Regressionslinie zusammen mit ihrem Konfidenzintervall dargestellt werden:

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

Ohne Kenntnis der Verteilung des Zielwerts kann die exakte Regressionslinie nicht bestimmt werden. Es wird lediglich versucht, diese auf Basis der vorhandenen Daten zu approximieren. Das Konfidenzintervall der Regressionslinie ist das Intervall, in dem die exakte Regressionslinie mit dem Konfidenzniveau alpha liegt.
Es ist erkennbar, dass das Intervall umso größer wird, je weiter es sich vom Wertebereich des Trainingsdatensatzes entfernt.

Note
Hinweis

Die Konfidenzintervalle werden unter der Annahme erstellt, dass das Modell korrekt gewählt wurde (z. B. einfache lineare Regression oder Polynomregression vierten Grades).

Wenn das Modell schlecht gewählt ist, ist das Konfidenzintervall unzuverlässig und ebenso die Regressionslinie selbst. Wie Sie das beste Modell auswählen, erfahren Sie im nächsten Abschnitt.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 4

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

course content

Kursinhalt

Lineare Regression mit Python

Lineare Regression mit Python

1. Einfache Lineare Regression
2. Multiple Lineare Regression
3. Polynomiale Regression
4. Das Beste Modell Auswählen

book
Interpolation vs. Extrapolation

Im vorherigen Kapitel haben wir festgestellt, dass unsere Vorhersagen mit verschiedenen Modellen an den Rändern immer unterschiedlicher werden.

Genauer gesagt werden die Vorhersagen merkwürdig, sobald wir den Wertebereich des Trainingsdatensatzes überschreiten. Die Vorhersage von Werten außerhalb des Trainingsbereichs wird als Extrapolation bezeichnet, während die Vorhersage von Werten innerhalb des Bereichs als Interpolation gilt.

Die Regression eignet sich nicht gut für die Extrapolation. Sie wird für die Interpolation verwendet und kann zu absurden Vorhersagen führen, wenn neue Instanzen außerhalb des Trainingsbereichs liegen.

Konfidenzintervalle

Mit der OLS-Klasse können auch die Konfidenzintervalle für die Regressionslinie an jedem Punkt ermittelt werden. Die Syntax ist jedoch etwas kompliziert:

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']

Dabei ist alpha das Konfidenzniveau, üblicherweise auf 0.05 gesetzt.
Mit dem obigen Code erhält man die unteren und oberen Grenzen des Konfidenzintervalls der Regressionslinie am Punkt X_new_tilde (oder ein Array von oberen und unteren Grenzen, falls X_new_tilde ein Array ist).

Damit kann nun die Regressionslinie zusammen mit ihrem Konfidenzintervall dargestellt werden:

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

Ohne Kenntnis der Verteilung des Zielwerts kann die exakte Regressionslinie nicht bestimmt werden. Es wird lediglich versucht, diese auf Basis der vorhandenen Daten zu approximieren. Das Konfidenzintervall der Regressionslinie ist das Intervall, in dem die exakte Regressionslinie mit dem Konfidenzniveau alpha liegt.
Es ist erkennbar, dass das Intervall umso größer wird, je weiter es sich vom Wertebereich des Trainingsdatensatzes entfernt.

Note
Hinweis

Die Konfidenzintervalle werden unter der Annahme erstellt, dass das Modell korrekt gewählt wurde (z. B. einfache lineare Regression oder Polynomregression vierten Grades).

Wenn das Modell schlecht gewählt ist, ist das Konfidenzintervall unzuverlässig und ebenso die Regressionslinie selbst. Wie Sie das beste Modell auswählen, erfahren Sie im nächsten Abschnitt.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 4
some-alt