Základy lineární regrese

Supervised Learning with scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Mechanismus regrese

  • $y = ax + b$

    • Jednoduchá lineární regrese používá jeden příznak

      • $y$ = cílová proměnná

      • $x$ = jeden příznak

      • $a$, $b$ = parametry/koeficienty modelu – sklon, průsečík

  • Jak zvolit $a$ a $b$?

    • Definujeme chybovou funkci pro danou přímku

    • Zvolíme přímku, která minimalizuje chybovou funkci

  • Chybová funkce = ztrátová funkce = nákladová funkce

Supervised Learning with scikit-learn

Ztrátová funkce

bodový graf

Supervised Learning with scikit-learn

Ztrátová funkce

regresní přímka vedoucí zleva dolů doprava nahoru, procházející středem pozorování

Supervised Learning with scikit-learn

Ztrátová funkce

červené čáry z regresní přímky ke každému pozorování

Supervised Learning with scikit-learn

Ztrátová funkce

červené čáry znázorňují rezidua

Supervised Learning with scikit-learn

Ztrátová funkce

šipka zvýrazňující kladnou hodnotu, protože pozorování leží nad regresní přímkou

Supervised Learning with scikit-learn

Metoda nejmenších čtverců

druhá šipka ukazující na reziduum pod regresní přímkou, představující záporné reziduum

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

Metoda nejmenších čtverců (OLS): minimalizace RSS

Supervised Learning with scikit-learn

Lineární regrese ve vyšších dimenzích

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

  • Přizpůsobení modelu lineární regrese:
    • Je třeba specifikovat 3 proměnné: $ a_1,\ a_2,\ b $
  • Ve vyšších dimenzích:
    • Označuje se jako vícenásobná regrese
    • Je nutné zadat koeficienty pro každý příznak a proměnnou $b$

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

  • scikit-learn funguje stejným způsobem:
    • Předáme dvě pole: příznaky a cíl
Supervised Learning with scikit-learn

Lineární regrese s využitím všech příznaků

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 with scikit-learn

R-kvadrát

  • $R^2$: vyjadřuje podíl rozptylu cílových hodnot vysvětlený příznaky

    • Hodnoty jsou v rozsahu 0 až 1
  • Vysoké $R^2$:

regresní přímka pod úhlem 45 stupňů vedoucí zleva dolů doprava nahoru, blízko všem pozorováním

 

 

  • Nízké $R^2$:

vodorovná regresní přímka, pozorování jsou od přímky vzdálená

Supervised Learning with scikit-learn

R-kvadrát v scikit-learn

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

Střední kvadratická chyba a odmocnina střední kvadratické chyby

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

  • $MSE$ se měří v jednotkách cílové proměnné na druhou

 

$RMSE = $ $\sqrt{MSE}$

  • $RMSE$ se měří ve stejných jednotkách jako cílová proměnná
Supervised Learning with scikit-learn

RMSE v scikit-learn

from sklearn.metrics import root_mean_squared_error

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

Pojďme procvičovat!

Supervised Learning with scikit-learn

Preparing Video For Download...