Interpolasjon vs Ekstrapolasjon
I forrige kapittel la vi merke til at våre prediksjoner med ulike modeller blir mer varierende i ytterkantene.
Prediksjoner blir upålitelige når vi beveger oss utenfor området til treningsdataene. Å predikere utenfor dette området kalles ekstrapolering, mens å predikere innenfor området kalles interpolering.
Regresjon håndterer ikke ekstrapolering godt. Den brukes til interpolering og kan gi absurde prediksjoner når nye tilfeller ligger utenfor treningssettets område.
Konfidensintervaller
OLS kan også returnere konfidensintervaller for regresjonslinjen:
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 konfidensnivået (vanligvis 0.05). Dette gir nedre og øvre grenser for hver verdi i X_new_tilde.
Du kan deretter plotte regresjonslinjen sammen med dens konfidensintervall.
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()
Siden vi ikke kjenner den sanne fordelingen til målet, er regresjonslinjen kun en tilnærming. Konfidensintervallet viser hvor den sanne linjen sannsynligvis ligger. Intervallet blir bredere jo lenger vi beveger oss fra treningsdataene.
Konfidensintervallene er konstruert under forutsetning av at vi har valgt riktig modell (for eksempel Enkel Lineær Regresjon eller Polynomregresjon av grad 4).
Hvis modellen er dårlig valgt, er konfidensintervallet upålitelig, og det samme gjelder selve linjen. Du vil lære hvordan du velger den beste modellen i neste seksjon.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
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
Interpolasjon vs Ekstrapolasjon
Sveip for å vise menyen
I forrige kapittel la vi merke til at våre prediksjoner med ulike modeller blir mer varierende i ytterkantene.
Prediksjoner blir upålitelige når vi beveger oss utenfor området til treningsdataene. Å predikere utenfor dette området kalles ekstrapolering, mens å predikere innenfor området kalles interpolering.
Regresjon håndterer ikke ekstrapolering godt. Den brukes til interpolering og kan gi absurde prediksjoner når nye tilfeller ligger utenfor treningssettets område.
Konfidensintervaller
OLS kan også returnere konfidensintervaller for regresjonslinjen:
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 konfidensnivået (vanligvis 0.05). Dette gir nedre og øvre grenser for hver verdi i X_new_tilde.
Du kan deretter plotte regresjonslinjen sammen med dens konfidensintervall.
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()
Siden vi ikke kjenner den sanne fordelingen til målet, er regresjonslinjen kun en tilnærming. Konfidensintervallet viser hvor den sanne linjen sannsynligvis ligger. Intervallet blir bredere jo lenger vi beveger oss fra treningsdataene.
Konfidensintervallene er konstruert under forutsetning av at vi har valgt riktig modell (for eksempel Enkel Lineær Regresjon eller Polynomregresjon av grad 4).
Hvis modellen er dårlig valgt, er konfidensintervallet upålitelig, og det samme gjelder selve linjen. Du vil lære hvordan du velger den beste modellen i neste seksjon.
Takk for tilbakemeldingene dine!