Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Interpolatie versus Extrapolatie | Polynomiale Regressie
Lineaire Regressie Met Python
course content

Cursusinhoud

Lineaire Regressie Met Python

Lineaire Regressie Met Python

1. Eenvoudige Lineaire Regressie
2. Meervoudige Lineaire Regressie
3. Polynomiale Regressie
4. Het Beste Model Kiezen

book
Interpolatie versus Extrapolatie

In het vorige hoofdstuk merkten we dat onze voorspellingen met verschillende modellen steeds meer uiteenlopen aan de randen.

Om preciezer te zijn, worden de voorspellingen vreemd zodra we buiten het bereik van waarden uit de trainingsset gaan. Het voorspellen van waarden buiten het bereik van de trainingsset wordt extrapolatie genoemd, en het voorspellen van waarden binnen het bereik heet interpolatie.

De regressie gaat niet goed om met extrapolatie. Het wordt gebruikt voor interpolatie en kan absurde voorspellingen opleveren wanneer nieuwe gevallen buiten het bereik van de trainingsset vallen.

Betrouwbaarheidsintervallen

Met behulp van de OLS-klasse kun je ook de betrouwbaarheidsintervallen voor de regressielijn op elk punt verkrijgen. De syntax is echter wat ingewikkeld:

lower = regression_model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_lower']
upper = regression_model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_upper']

Waarbij alpha het betrouwbaarheidsniveau is, meestal ingesteld op 0.05.
Met bovenstaande code verkrijg je de onder- en bovengrens van het betrouwbaarheidsinterval van de regressielijn op het punt X_new_tilde (of een array van onder- en bovengrenzen als X_new_tilde een array is).

Hiermee kunnen we nu de regressielijn samen met het betrouwbaarheidsinterval plotten:

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

Zonder de verdeling van een target te kennen, kan de exacte regressielijn niet worden bepaald. Er wordt slechts geprobeerd deze te benaderen op basis van de beschikbare data. Het betrouwbaarheidsinterval van de regressielijn is het interval waarin de exacte regressielijn zich met het betrouwbaarheidsniveau alpha bevindt.
Het is zichtbaar dat het interval groter wordt naarmate het verder van het bereik van de trainingsset af ligt.

Note
Opmerking

De betrouwbaarheidsintervallen worden geconstrueerd onder de aanname dat het juiste model is gekozen (bijvoorbeeld Eenvoudige Lineaire Regressie of Polynomiale Regressie van graad 4).

Als het model slecht is gekozen, is het betrouwbaarheidsinterval onbetrouwbaar en geldt dit ook voor de lijn zelf. In de volgende sectie leer je hoe je het beste model selecteert.

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 4

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

course content

Cursusinhoud

Lineaire Regressie Met Python

Lineaire Regressie Met Python

1. Eenvoudige Lineaire Regressie
2. Meervoudige Lineaire Regressie
3. Polynomiale Regressie
4. Het Beste Model Kiezen

book
Interpolatie versus Extrapolatie

In het vorige hoofdstuk merkten we dat onze voorspellingen met verschillende modellen steeds meer uiteenlopen aan de randen.

Om preciezer te zijn, worden de voorspellingen vreemd zodra we buiten het bereik van waarden uit de trainingsset gaan. Het voorspellen van waarden buiten het bereik van de trainingsset wordt extrapolatie genoemd, en het voorspellen van waarden binnen het bereik heet interpolatie.

De regressie gaat niet goed om met extrapolatie. Het wordt gebruikt voor interpolatie en kan absurde voorspellingen opleveren wanneer nieuwe gevallen buiten het bereik van de trainingsset vallen.

Betrouwbaarheidsintervallen

Met behulp van de OLS-klasse kun je ook de betrouwbaarheidsintervallen voor de regressielijn op elk punt verkrijgen. De syntax is echter wat ingewikkeld:

lower = regression_model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_lower']
upper = regression_model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_upper']

Waarbij alpha het betrouwbaarheidsniveau is, meestal ingesteld op 0.05.
Met bovenstaande code verkrijg je de onder- en bovengrens van het betrouwbaarheidsinterval van de regressielijn op het punt X_new_tilde (of een array van onder- en bovengrenzen als X_new_tilde een array is).

Hiermee kunnen we nu de regressielijn samen met het betrouwbaarheidsinterval plotten:

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

Zonder de verdeling van een target te kennen, kan de exacte regressielijn niet worden bepaald. Er wordt slechts geprobeerd deze te benaderen op basis van de beschikbare data. Het betrouwbaarheidsinterval van de regressielijn is het interval waarin de exacte regressielijn zich met het betrouwbaarheidsniveau alpha bevindt.
Het is zichtbaar dat het interval groter wordt naarmate het verder van het bereik van de trainingsset af ligt.

Note
Opmerking

De betrouwbaarheidsintervallen worden geconstrueerd onder de aanname dat het juiste model is gekozen (bijvoorbeeld Eenvoudige Lineaire Regressie of Polynomiale Regressie van graad 4).

Als het model slecht is gekozen, is het betrouwbaarheidsinterval onbetrouwbaar en geldt dit ook voor de lijn zelf. In de volgende sectie leer je hoe je het beste model selecteert.

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 4
some-alt