Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Interpolation Kontra Extrapolation | Polynomregression
Linjär Regression med Python

bookInterpolation Kontra Extrapolation

I föregående kapitel märkte vi att våra förutsägelser med olika modeller blir mer varierande vid kanterna.

Förutsägelser blir opålitliga när vi rör oss utanför träningsdatats intervall. Att förutsäga utanför detta intervall kallas extrapolering, medan att förutsäga inom det kallas interpolering.

Regression hanterar inte extrapolering väl. Den används för interpolering och kan ge orimliga förutsägelser när nya instanser ligger utanför träningsmängdens intervall.

Konfidensintervall

OLS kan även returnera konfidensintervall för 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 är konfidensnivån (vanligtvis 0.05). Detta ger nedre och övre gränser för varje värde i X_new_tilde. Du kan sedan plotta regressionslinjen tillsammans med dess konfidensintervall.

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

Eftersom vi inte känner till den sanna fördelningen för målet är regressionslinjen endast en approximation. Konfidensintervallet visar var den sanna linjen sannolikt befinner sig. Intervallet blir bredare ju längre bort från träningsdatan vi rör oss.

Note
Observera

Konfidensintervallen konstrueras under antagandet att vi har valt rätt modell (t.ex. Enkel linjär regression eller polynomregression av grad 4).

Om modellen är dåligt vald är konfidensintervallet opålitligt, likaså själva linjen. Du kommer att lära dig hur du väljer den bästa modellen i nästa avsnitt.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 4

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

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 Kontra Extrapolation

Svep för att visa menyn

I föregående kapitel märkte vi att våra förutsägelser med olika modeller blir mer varierande vid kanterna.

Förutsägelser blir opålitliga när vi rör oss utanför träningsdatats intervall. Att förutsäga utanför detta intervall kallas extrapolering, medan att förutsäga inom det kallas interpolering.

Regression hanterar inte extrapolering väl. Den används för interpolering och kan ge orimliga förutsägelser när nya instanser ligger utanför träningsmängdens intervall.

Konfidensintervall

OLS kan även returnera konfidensintervall för 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 är konfidensnivån (vanligtvis 0.05). Detta ger nedre och övre gränser för varje värde i X_new_tilde. Du kan sedan plotta regressionslinjen tillsammans med dess konfidensintervall.

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

Eftersom vi inte känner till den sanna fördelningen för målet är regressionslinjen endast en approximation. Konfidensintervallet visar var den sanna linjen sannolikt befinner sig. Intervallet blir bredare ju längre bort från träningsdatan vi rör oss.

Note
Observera

Konfidensintervallen konstrueras under antagandet att vi har valt rätt modell (t.ex. Enkel linjär regression eller polynomregression av grad 4).

Om modellen är dåligt vald är konfidensintervallet opålitligt, likaså själva linjen. Du kommer att lära dig hur du väljer den bästa modellen i nästa avsnitt.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 4
some-alt