Основи лінійної регресії

Кероване навчання зі scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Механіка регресії

  • $y = ax + b$

    • Проста лінійна регресія використовує одну ознаку

      • $y$ = ціль

      • $x$ = одна ознака

      • $a$, $b$ = параметри/коефіцієнти моделі — кутовий коефіцієнт і зсув

  • Як обрати $a$ та $b$?

    • Визначити функцію похибки для будь-якої прямої

    • Обрати пряму, що мінімізує цю функцію

  • Функція похибки = функція втрат = функція вартості

Кероване навчання зі scikit-learn

Функція втрат

діаграма розсіяння

Кероване навчання зі scikit-learn

Функція втрат

лінія регресії йде знизу ліворуч угору праворуч через центр спостережень

Кероване навчання зі scikit-learn

Функція втрат

червоні лінії від лінії регресії до кожного спостереження

Кероване навчання зі scikit-learn

Функція втрат

червоні лінії позначають залишки

Кероване навчання зі scikit-learn

Функція втрат

стрілка показує позитивний залишок, бо спостереження вище за лінію регресії

Кероване навчання зі scikit-learn

Метод найменших квадратів (OLS)

друга стрілка вказує на залишок під лінією регресії, що є негативним залишком

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

Звичайні найменші квадрати (OLS): мінімізувати RSS

Кероване навчання зі scikit-learn

Лінійна регресія у вищих вимірах

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

  • Щоб навчити лінійну регресію тут:
    • Потрібно задати 3 змінні: $ a_1,\ a_2,\ b $
  • У вищих вимірах:
    • Зветься множинною регресією
    • Треба задати коефіцієнти для кожної ознаки та змінну $b$

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

  • У scikit-learn усе так само:
    • Передайте два масиви: ознаки та ціль
Кероване навчання зі scikit-learn

Лінійна регресія з усіма ознаками

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)
Кероване навчання зі scikit-learn

R-квадрат

  • $R^2$: частка варіації цілі, пояснена ознаками

    • Значення від 0 до 1
  • Високе $R^2$:

лінія регресії під 45° йде знизу ліворуч угору праворуч і близько до всіх спостережень

 

 

  • Низьке $R^2$:

лінія регресії горизонтальна, спостереження розкидані далеко від лінії

Кероване навчання зі scikit-learn

R-квадрат у scikit-learn

reg_all.score(X_test, y_test)
0.356302876407827
Кероване навчання зі scikit-learn

MSE і RMSE (середньоквадратична похибка та її корінь)

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

  • $MSE$ вимірюється в одиницях цілі, у квадраті

 

$RMSE = $ $\sqrt{MSE}$

  • $RMSE$ вимірюється в тих самих одиницях, що й цільова змінна
Кероване навчання зі scikit-learn

RMSE у scikit-learn

from sklearn.metrics import root_mean_squared_error

root_mean_squared_error(y_test, y_pred)
24.028109426907236
Кероване навчання зі scikit-learn

Давайте потренуємось!

Кероване навчання зі scikit-learn

Preparing Video For Download...