Grunderna i linjär regression

Övervakad inlärning med scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Regressionens mekanik

  • $y = ax + b$

    • Simpel linjär regression använder ett särdrag

      • $y$ = målvariabel

      • $x$ = enskilt särdrag

      • $a$, $b$ = modellens parametrar/koefficienter – lutning, intercept

  • Hur väljer vi $a$ och $b$?

    • Definiera en felfunktion för en given linje

    • Välj den linje som minimerar felfunktionen

  • Felfunktion = förlustfunktion = kostnadsfunktion

Övervakad inlärning med scikit-learn

Förlustfunktionen

spridningsdiagram

Övervakad inlärning med scikit-learn

Förlustfunktionen

regressionslinje som löper från nedre vänster till övre höger, genom mitten av observationerna

Övervakad inlärning med scikit-learn

Förlustfunktionen

röda linjer från regressionslinjen till varje observation

Övervakad inlärning med scikit-learn

Förlustfunktionen

de röda linjerna representerar residualer

Övervakad inlärning med scikit-learn

Förlustfunktionen

pil som markerar en positiv residual, eftersom observationen ligger ovanför regressionslinjen

Övervakad inlärning med scikit-learn

Ordinary Least Squares

andra pil som pekar på en residual under regressionslinjen, vilket representerar en negativ residual

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

Ordinary Least Squares (OLS): minimera RSS

Övervakad inlärning med scikit-learn

Linjär regression i högre dimensioner

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

  • För att anpassa en linjär regressionsmodell här:
    • Behöver specificera 3 variabler: $ a_1,\ a_2,\ b $
  • I högre dimensioner:
    • Kallas multipel regression
    • Kräver koefficienter för varje särdrag och variabeln $b$

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

  • scikit-learn fungerar på exakt samma sätt:
    • Skicka in två arrayer: särdrag och målvariabel
Övervakad inlärning med scikit-learn

Linjär regression med alla särdrag

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)
Övervakad inlärning med scikit-learn

R-kvadrat

  • $R^2$: kvantifierar hur stor del av variansen i målvariabeln som förklaras av särdragen

    • Värden varierar mellan 0 och 1
  • Högt $R^2$:

regressionslinje i 45 graders vinkel från nedre vänster till övre höger, nära alla observationer

 

 

  • Lågt $R^2$:

regressionslinje som löper horisontellt, med observationer utspridda långt från linjen

Övervakad inlärning med scikit-learn

R-kvadrat i scikit-learn

reg_all.score(X_test, y_test)
0.356302876407827
Övervakad inlärning med scikit-learn

Medelkvadratfel och roten ur medelkvadratfelet

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

  • $MSE$ mäts i målvariabelns enheter, i kvadrat

 

$RMSE = $ $\sqrt{MSE}$

  • $RMSE$ mäts i samma enheter som målvariabeln
Övervakad inlärning med scikit-learn

RMSE i scikit-learn

from sklearn.metrics import root_mean_squared_error

root_mean_squared_error(y_test, y_pred)
24.028109426907236
Övervakad inlärning med scikit-learn

Nu kör vi en övning!

Övervakad inlärning med scikit-learn

Preparing Video For Download...