De basis van lineaire regressie

Supervised Learning met scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Mechaniek van regressie

  • $y = ax + b$

    • Eenvoudige lineaire regressie gebruikt één feature

      • $y$ = target

      • $x$ = enkele feature

      • $a$, $b$ = parameters/coëfficiënten van het model: helling, intercept

  • Hoe kiezen we $a$ en $b$?

    • Definieer voor elke lijn een foutfunctie

    • Kies de lijn die de foutfunctie minimaliseert

  • Foutfunctie = verliesfunctie = kostfunctie

Supervised Learning met scikit-learn

De verliesfunctie

spreidingsdiagram

Supervised Learning met scikit-learn

De verliesfunctie

regressielijn van linksonder naar rechtsboven, door het midden van de observaties

Supervised Learning met scikit-learn

De verliesfunctie

rode lijnen van de regressielijn naar elke observatie

Supervised Learning met scikit-learn

De verliesfunctie

de rode lijnen stellen residuen voor

Supervised Learning met scikit-learn

De verliesfunctie

pijl markeert een positief residu: de observatie ligt boven de regressielijn

Supervised Learning met scikit-learn

Kleinste kwadraten (OLS)

tweede pijl naar een residu onder de regressielijn: negatief residu

$RSS = $ $\displaystyle\sum_{i=1}^{n}(y_i-\hat{y_i})^2$

Ordinary Least Squares (OLS): minimaliseer RSS

Supervised Learning met scikit-learn

Lineaire regressie in hogere dimensies

$$ y = a_{1}x_{1} + a_{2}x_{2} + b$$

  • Zo pas je hier een lineair regressiemodel:
    • Specificeer 3 variabelen: $ a_1,\ a_2,\ b $
  • In hogere dimensies:
    • Heet multiple regression
    • Geef voor elke feature een coëfficiënt en de variabele $b$ op

$$ y = a_{1}x_{1} + a_{2}x_{2} + a_{3}x_{3} +... + a_{n}x_{n}+ b$$

  • scikit-learn werkt hetzelfde:
    • Geef twee arrays door: features en target
Supervised Learning met scikit-learn

Lineaire regressie met alle features

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
reg_all = LinearRegression()
reg_all.fit(X_train, y_train)
y_pred = reg_all.predict(X_test)
Supervised Learning met scikit-learn

R-kwadraat

  • $R^2$: meet de variantie in de target die door de features wordt verklaard

    • Waarden lopen van 0 tot 1
  • Hoog $R^2$:

regressielijn onder 45 graden van linksonder naar rechtsboven, dicht bij alle observaties

 

 

  • Laag $R^2$:

horizontale regressielijn, observaties liggen ver van de lijn

Supervised Learning met scikit-learn

R-kwadraat in scikit-learn

reg_all.score(X_test, y_test)
0.356302876407827
Supervised Learning met scikit-learn

Mean squared error en root mean squared error

$MSE = $ $\displaystyle\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y_i})^2$

  • $MSE$ wordt gemeten in target-eenheden, in het kwadraat

 

$RMSE = $ $\sqrt{MSE}$

  • Meet $RMSE$ in dezelfde eenheden als de targetvariabele
Supervised Learning met scikit-learn

RMSE in scikit-learn

from sklearn.metrics import root_mean_squared_error

root_mean_squared_error(y_test, y_pred)
24.028109426907236
Supervised Learning met scikit-learn

Laten we oefenen!

Supervised Learning met scikit-learn

Preparing Video For Download...