Podstawy regresji liniowej

Nadzorowane uczenie maszynowe z scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Mechanika regresji

  • $y = ax + b$

    • Prosta regresja liniowa używa jednej cechy

      • $y$ = zmienna docelowa

      • $x$ = pojedyncza cecha

      • $a$, $b$ = parametry/współczynniki modelu – nachylenie, wyraz wolny

  • Jak wybrać $a$ i $b$?

    • Zdefiniuj funkcję błędu dla danej prostej

    • Wybierz prostą minimalizującą funkcję błędu

  • Funkcja błędu = funkcja straty = funkcja kosztu

Nadzorowane uczenie maszynowe z scikit-learn

Funkcja straty

wykres punktowy

Nadzorowane uczenie maszynowe z scikit-learn

Funkcja straty

linia regresji biegnąca od lewego dolnego do prawego górnego rogu, przez środek obserwacji

Nadzorowane uczenie maszynowe z scikit-learn

Funkcja straty

czerwone linie od linii regresji do każdej obserwacji

Nadzorowane uczenie maszynowe z scikit-learn

Funkcja straty

czerwone linie reprezentują residuale

Nadzorowane uczenie maszynowe z scikit-learn

Funkcja straty

strzałka wskazująca dodatni residual powyżej linii regresji

Nadzorowane uczenie maszynowe z scikit-learn

Metoda najmniejszych kwadratów

druga strzałka wskazująca residual poniżej linii regresji – residual ujemny

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

Metoda najmniejszych kwadratów (OLS): minimalizacja RSS

Nadzorowane uczenie maszynowe z scikit-learn

Regresja liniowa w wyższych wymiarach

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

  • Dopasowanie modelu regresji liniowej:
    • Należy określić 3 zmienne: $ a_1,\ a_2,\ b $
  • W wyższych wymiarach:
    • Znana jako regresja wieloraka
    • Należy podać współczynniki dla każdej cechy oraz zmienną $b$

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

  • scikit-learn działa tak samo:
    • Przekaż dwie tablice: cechy i zmienną docelową
Nadzorowane uczenie maszynowe z scikit-learn

Regresja liniowa z użyciem wszystkich cech

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)
Nadzorowane uczenie maszynowe z scikit-learn

R-kwadrat

  • $R^2$: mierzy wariancję zmiennej docelowej wyjaśnioną przez cechy

    • Wartości od 0 do 1
  • Wysokie $R^2$:

linia regresji pod kątem 45° biegnąca od lewego dolnego do prawego górnego rogu, blisko obserwacji

 

 

  • Niskie $R^2$:

pozioma linia regresji, obserwacje szeroko rozproszone wokół niej

Nadzorowane uczenie maszynowe z scikit-learn

R-kwadrat w scikit-learn

reg_all.score(X_test, y_test)
0.356302876407827
Nadzorowane uczenie maszynowe z scikit-learn

Błąd średniokwadratowy i pierwiastek błędu średniokwadratowego

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

  • $MSE$ jest mierzony w jednostkach zmiennej docelowej, do kwadratu

 

$RMSE = $ $\sqrt{MSE}$

  • $RMSE$ mierzony w tych samych jednostkach co zmienna docelowa
Nadzorowane uczenie maszynowe z scikit-learn

RMSE w scikit-learn

from sklearn.metrics import root_mean_squared_error

root_mean_squared_error(y_test, y_pred)
24.028109426907236
Nadzorowane uczenie maszynowe z scikit-learn

Czas na ćwiczenia!

Nadzorowane uczenie maszynowe z scikit-learn

Preparing Video For Download...