Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Interpolation vs. Ekstrapolation | Polynomiel Regression
Quizzes & Challenges
Quizzes
Challenges
/
Lineær Regression med Python

bookInterpolation vs. Ekstrapolation

I det foregående kapitel bemærkede vi, at vores forudsigelser ved brug af forskellige modeller bliver mere forskellige i yderområderne.

Forudsigelser bliver upålidelige, når vi bevæger os uden for træningsdataenes interval. At forudsige uden for dette interval kaldes ekstrapolation, mens forudsigelser inden for intervallet kaldes interpolation.

Regression håndterer ikke ekstrapolation godt. Den anvendes til interpolation og kan give absurde forudsigelser, når nye tilfælde ligger uden for træningssættets interval.

Konfidensintervaller

OLS kan også returnere konfidensintervaller for regressionslinjen:

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 er konfidensniveauet (typisk 0.05). Dette giver nedre og øvre grænser for hver værdi i X_new_tilde. Du kan derefter plotte regressionslinjen sammen med dens konfidensinterval.

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

Da vi ikke kender den sande fordeling af målet, er regressionslinjen kun en tilnærmelse. Konfidensintervallet viser, hvor den sande linje sandsynligvis ligger. Intervallet bliver bredere, jo længere vi bevæger os væk fra træningsdataene.

Note
Bemærk

Konfidensintervallerne er konstrueret under antagelse af, at vi har valgt den korrekte model (f.eks. simpel lineær regression eller polynomiel regression af grad 4).

Hvis modellen er dårligt valgt, er konfidensintervallet upålideligt, og det samme gælder selve linjen. Du vil lære, hvordan du vælger den bedste model i det følgende afsnit.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 4

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

Can you explain the difference between interpolation and extrapolation in more detail?

How do confidence intervals help us understand the reliability of predictions?

What happens if I use a different value for alpha in the confidence interval calculation?

Awesome!

Completion rate improved to 5.26

bookInterpolation vs. Ekstrapolation

Stryg for at vise menuen

I det foregående kapitel bemærkede vi, at vores forudsigelser ved brug af forskellige modeller bliver mere forskellige i yderområderne.

Forudsigelser bliver upålidelige, når vi bevæger os uden for træningsdataenes interval. At forudsige uden for dette interval kaldes ekstrapolation, mens forudsigelser inden for intervallet kaldes interpolation.

Regression håndterer ikke ekstrapolation godt. Den anvendes til interpolation og kan give absurde forudsigelser, når nye tilfælde ligger uden for træningssættets interval.

Konfidensintervaller

OLS kan også returnere konfidensintervaller for regressionslinjen:

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 er konfidensniveauet (typisk 0.05). Dette giver nedre og øvre grænser for hver værdi i X_new_tilde. Du kan derefter plotte regressionslinjen sammen med dens konfidensinterval.

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

Da vi ikke kender den sande fordeling af målet, er regressionslinjen kun en tilnærmelse. Konfidensintervallet viser, hvor den sande linje sandsynligvis ligger. Intervallet bliver bredere, jo længere vi bevæger os væk fra træningsdataene.

Note
Bemærk

Konfidensintervallerne er konstrueret under antagelse af, at vi har valgt den korrekte model (f.eks. simpel lineær regression eller polynomiel regression af grad 4).

Hvis modellen er dårligt valgt, er konfidensintervallet upålideligt, og det samme gælder selve linjen. Du vil lære, hvordan du vælger den bedste model i det følgende afsnit.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 4
some-alt