Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Interpolointi vs Ekstrapolointi | Polynominen Regressio
Quizzes & Challenges
Quizzes
Challenges
/
Lineaarinen Regressio Pythonilla

bookInterpolointi vs Ekstrapolointi

Edellisessä luvussa huomasimme, että ennusteemme eri mallien avulla poikkeavat yhä enemmän aineiston reunoilla.

Ennusteista tulee epäluotettavia, kun siirrytään koulutusdatan ulkopuolelle. Ennustamista tämän alueen ulkopuolella kutsutaan ekstrapolaatioksi, kun taas ennustaminen sen sisällä on interpolointia.

Regressio ei käsittele ekstrapolaatiota hyvin. Sitä käytetään interpolointiin, ja se voi tuottaa absurdeja ennusteita, kun uudet havainnot ovat koulutusdatan alueen ulkopuolella.

Luottamusvälit

OLS voi myös palauttaa regressiosuoran luottamusvälit:

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 on luottamustaso (yleensä 0.05). Tämä antaa ala- ja ylärajat jokaiselle arvolle X_new_tilde:ssa. Voit tämän jälkeen piirtää regressiosuoran yhdessä sen luottamusvälin kanssa.

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

Koska emme tiedä tavoitteen todellista jakaumaa, regressiosuora on vain likimääräinen. Luottamusväli osoittaa, missä todellinen suora todennäköisesti sijaitsee. Väli levenee, kun siirrytään kauemmas opetusdatasta.

Note
Huomio

Luottamusvälit rakennetaan olettaen, että malli on valittu oikein (esim. yksinkertainen lineaarinen regressio tai neljännen asteen polynomiregressio).

Jos malli on valittu huonosti, luottamusväli ei ole luotettava, eikä myöskään itse suora. Seuraavassa osiossa opit, kuinka paras malli valitaan.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 4

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

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

bookInterpolointi vs Ekstrapolointi

Pyyhkäise näyttääksesi valikon

Edellisessä luvussa huomasimme, että ennusteemme eri mallien avulla poikkeavat yhä enemmän aineiston reunoilla.

Ennusteista tulee epäluotettavia, kun siirrytään koulutusdatan ulkopuolelle. Ennustamista tämän alueen ulkopuolella kutsutaan ekstrapolaatioksi, kun taas ennustaminen sen sisällä on interpolointia.

Regressio ei käsittele ekstrapolaatiota hyvin. Sitä käytetään interpolointiin, ja se voi tuottaa absurdeja ennusteita, kun uudet havainnot ovat koulutusdatan alueen ulkopuolella.

Luottamusvälit

OLS voi myös palauttaa regressiosuoran luottamusvälit:

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 on luottamustaso (yleensä 0.05). Tämä antaa ala- ja ylärajat jokaiselle arvolle X_new_tilde:ssa. Voit tämän jälkeen piirtää regressiosuoran yhdessä sen luottamusvälin kanssa.

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

Koska emme tiedä tavoitteen todellista jakaumaa, regressiosuora on vain likimääräinen. Luottamusväli osoittaa, missä todellinen suora todennäköisesti sijaitsee. Väli levenee, kun siirrytään kauemmas opetusdatasta.

Note
Huomio

Luottamusvälit rakennetaan olettaen, että malli on valittu oikein (esim. yksinkertainen lineaarinen regressio tai neljännen asteen polynomiregressio).

Jos malli on valittu huonosti, luottamusväli ei ole luotettava, eikä myöskään itse suora. Seuraavassa osiossa opit, kuinka paras malli valitaan.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 4
some-alt