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 vielfältiger werden.

Genauer gesagt, werden die Vorhersagen seltsam, sobald wir den Wertebereich des Trainingssatzes überschreiten. Das Vorhersagen von Werten außerhalb des Wertebereichs des Trainingssatzes wird als Extrapolation bezeichnet, und das Vorhersagen von Werten innerhalb des Bereichs als Interpolation.

Die Regression behandelt die Extrapolation nicht gut. Sie wird für die Interpolation verwendet und kann absurde Vorhersagen liefern, wenn neue Instanzen außerhalb des Bereichs des Trainingssatzes liegen.

Konfidenzintervalle

Mit der OLS-Klasse können Sie auch die Konfidenzintervalle für die Regressionslinie an jedem Punkt erhalten. Aber die Syntax ist etwas kompliziert:

Dabei ist alpha ein Konfidenzniveau, das normalerweise auf 0.05 gesetzt wird.
Mit dem obigen Code erhalten Sie die unteren und oberen Grenzen des Konfidenzintervalls der Regressionslinie am Punkt X_new_tilde (oder ein Array von oberen und unteren Grenzen, wenn X_new_tilde ein Array ist).

Lassen Sie uns dies verwenden, um die Regressionslinie zusammen mit ihrem Konfidenzintervall zu zeichnen.

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 die Verteilung eines Ziels zu kennen, können wir die genaue Regressionslinie nicht finden. Alles, was wir tun, ist, sie basierend auf unseren Daten zu approximieren. Das Konfidenzintervall der Regressionslinie ist das Intervall, in dem die genaue Regressionslinie mit dem Konfidenzniveau alpha liegt.
Man kann sehen, dass das Intervall größer und größer wird, je weiter es sich vom Bereich des Trainingssatzes entfernt.

Hinweis

Die Konfidenzintervalle werden unter der Annahme erstellt, dass wir das Modell korrekt gewählt haben (z.B. einfache lineare Regression oder polynomiale Regression vom Grad 4).

Wenn das Modell schlecht gewählt ist, ist das Konfidenzintervall unzuverlässig, und ebenso die Linie selbst. Sie werden im folgenden Abschnitt lernen, wie man das beste Modell auswählt.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 4
We're sorry to hear that something went wrong. What happened?
some-alt