# Множинна лінійна регресія

> Множинна регресія: як відокремити вплив кількох драйверів одночасно і не потрапити у дві класичні пастки — перенавчання та мультиколінеарність.

- Курс: [Статистика для продакт-менеджерів і маркетологів](https://productovi.com/uk/courses/statistics-for-pm-and-marketers.md)
- Модуль: Зв'язки
- Урок 19/24, ~39 хв
- Джерело: https://productovi.com/uk/courses/statistics-for-pm-and-marketers/multiple-regression

## Множинна регресія: більше ніж один драйвер

**Alex Tutor:** Повертаємося до продуктової команди Котокорму: із замовленнями ми ще не закінчили. Один предиктор — непоганий початок, але реальні замовлення залежать від рекламних витрат, святкових тижнів, можливо, і ціни. А що, якщо використати їх усі разом?

**Sofia:** То ми просто додаємо їхні окремі ефекти?

**Alex Tutor:** Майже — множинна лінійна регресія підбирає одне рівняння з кількома предикторами одразу, кожен зі своїм коефіцієнтом.

![Три лійки з мегафоном, подарунковою коробкою та цінником зверху сиплють корм в одну велику миску, а кіт спостерігає.](https://productovi.com/courses/statistics-for-pm-and-marketers/inline/multiple-regression-illustration-2.webp)

$$
\hat{y} = b_0 + b_1 x_1 + b_2 x_2 + \dots + b_k x_k
$$

*Множинна регресія: один вільний член плюс один нахил на кожен предиктор, і досі підбирається мінімізацією квадратів залишків.*

**Alex Tutor:** Кожен коефіцієнт — це ефект свого предиктора за незмінних усіх інших предикторів у рівнянні — так, ніби більше нічого не змінилося.

**Sofia:** «За незмінних»? Ми ж не можемо насправді заморозити інші змінні в реальному житті.

**Alex Tutor:** Правда — це математичне твердження про підібране рівняння, а не те, що робиться під час збору даних. Але це все одно корисно для чесного порівняння предикторів.

![Пульт із трьома повзунками: два замкнені на замочки, а котяча лапа рухає лише третій, помаранчевий.](https://productovi.com/courses/statistics-for-pm-and-marketers/inline/multiple-regression-illustration-3.webp)

*Кожен коефіцієнт відповідає: що зміниться, якщо рухається лише цей вхід, а решта лишаються на місці?*

> **Вправа:** У рівнянні orders = b0 + b1 x ad_spend + b2 x is_holiday_week, що означає b1?

## Як читати рівняння множинної регресії

**Alex Tutor:** Зробімо це конкретним на прикладі рівняння множинної регресії в стилі Котокорму.

**Alex Tutor:** $\text{orders} = 12 + 0,05 \times \text{ad\_spend} + 4 \times \text{is\_holiday\_week}$, де is_holiday_week дорівнює 1 у святковий тиждень і 0 — в інший.

**Sofia:** Тобто святковий тиждень — це рівно 4 додаткових замовлення, незалежно від витрат?

**Alex Tutor:** Саме так, у цьому рівнянні — фіксована надбавка поверх того, що прогнозують рекламні витрати.

> **Вправа:** Використовуючи orders = 12 + 0,05 x ad_spend + 4 x is_holiday_week, спрогнозуй orders для святкового тижня (is_holiday_week = 1) з ad_spend = 400.

**Alex Tutor:** Чудово. Тепер вимкни прапорець свята.

**Sofia:** Та сама формула витрат, просто без +4?

**Alex Tutor:** Саме так.

**Sofia:** Перевірмо.

> **Вправа:** Використовуючи orders = 12 + 0,05 x ad_spend + 4 x is_holiday_week, спрогнозуй orders для звичайного тижня без свята (is_holiday_week = 0) з ad_spend = 600.

**Alex Tutor:** Ще одна звичка читання, перш ніж рухатися далі: коефіцієнти дуже люблять порівнювати за розміром. Яке порівняння зробиш ти?

> **Вправа:** У рівнянні orders = 12 + 0,05 × ad_spend + 4 × is_holiday_week яке порівняння двох предикторів **правильне**?

## Чому R² росте з кожним предиктором

**Alex Tutor:** Два коефіцієнти позаду. Але ось пастка: додавання дедалі більшої кількості предикторів завжди робить R² на цих даних кращим, навіть якщо предиктор марний.

**Sofia:** Стривай, навіть випадкові дурниці-предиктори покращують R²?

**Alex Tutor:** На дрібку — так, чиста випадковість дає кожній додатковій колонці трохи заслуги. Саме тому й існують скоригований R² і перевірка на тестовій вибірці.

**Sofia:** Тобто саме по собі R² може вводити в оману за великої кількості предикторів?

> **Вправа:** Додавання ще одного предиктора до регресії може лише збільшити або не змінити її R² на тих самих даних, навіть якщо новий предиктор — чиста випадковість.

**Alex Tutor:** Скоригований R² призначає ціну кожному доданому предиктору. Спробуй на моделі з п'ятьма предикторами, підібраній на двадцяти тижнях.

> **Вправа:** Модель тижневих замовлень має k = 5 предикторів, підібрана на n = 20 тижнях, і має R² = 0,90. Обчисли скоригований R² за формулою $R^2_{adj} = 1 - (1 - R^2)\frac{n-1}{n-k-1}$.

## Мультиколінеарність: коли предиктори рухаються разом

**Alex Tutor:** Добре. Є ще друга, підступніша проблема, коли предиктори корелюють між собою, а не лише з відгуком.

**Sofia:** Наприклад, рекламні витрати й... що ще рухається разом?

**Alex Tutor:** Наприклад, рекламні витрати й глибина знижки — Котокорм часто поглиблює знижки саме в ті тижні, коли більше витрачає на рекламу.

> **Мультиколінеарність**
>
> Сильна кореляція між двома чи більше предикторами, через яку їхні окремі коефіцієнти регресії стають нестійкими й важко інтерпретованими, навіть якщо загальні прогнози моделі лишаються нормальними.

**Alex Tutor:** Коли два предиктори рухаються настільки узгоджено, модель не може чітко визначити, кому з них належить заслуга. Коефіцієнти стають нестійкими — додай одну точку даних, і вони можуть різко змінитися.

![Два коти пліч-о-пліч штовхають один візок, а третій кіт зі збільшувальним склом намагається зрозуміти, хто штовхав сильніше.](https://productovi.com/courses/statistics-for-pm-and-marketers/inline/multiple-regression-illustration-4.webp)

*Коли два предиктори завжди рухаються разом, модель не може визначити, кому з них належить заслуга.*

> **Вправа:** Зістав кожну ситуацію з терміном, що її описує.

**Alex Tutor:** Гарне зіставлення. В обох проблем є способи виправлення.

**Alex Tutor:** Для мультиколінеарності: прибрати один із корельованих предикторів, об'єднати їх або підібрати покрокову регресію. Для перенавчання: штрафувати зайві предиктори інформаційним критерієм або перевіряти на тестовій вибірці.

**Alex Tutor:** Ось як перевірка на тестовій вибірці виглядає в числах. Обери модель, яку ти запустиш.

> **Вправа:** Ти підбираєш дві моделі на 80% тижнів і перевіряєш їх на решті 20%. Модель A (12 предикторів): R² = 0,95 на навчальній вибірці, 0,55 на тестовій. Модель B (3 предиктори): 0,85 на навчальній, 0,82 на тестовій. Яку використати для прогнозів наступного кварталу?

**Sofia:** Тобто більше предикторів — це не автоматично краща модель?

**Alex Tutor:** Правильно. Більше предикторів краще, лише якщо кожен із них заслуговує на своє місце.

> **Вправа:** Що з переліченого правда про мультиколінеарність? Обери всі, що підходять.

## Перш ніж запустити формулу в роботу

**Alex Tutor:** Час сформулювати це словами.

**Sofia:** Знову за своє.

**Alex Tutor:** Цього разу швидко.

**Sofia:** Гаразд, кажи.

> **Вправа:** Колега пропонує додати до моделі і ad_spend, і discount_depth, зазначаючи, що Котокорм зазвичай підвищує обидва одночасно під час розпродажів. Який ризик варто позначити і що ти запропонуєш? Відповідь — 2-4 речення.

**Alex Tutor:** Гарна інтуїція — познач це, а не ігноруй. Тепер повний кейс.

**Sofia:** Цього разу три предиктори?

**Alex Tutor:** Три предиктори, і серед них ховається один ризик мультиколінеарності. Знайди його.

**Alex Tutor:** Ось сценарій.

> **Вправа:** Розглянь підібрану модель і напиши свою рекомендацію.

**Alex Tutor:** Чудова робота. Тепер ти вмієш читати рівняння множинної регресії і знаєш дві його класичні пастки. Далі — що робити, якщо сам результат — це «так/ні», а не число: логістична регресія.

- Попередній урок: [Проста лінійна регресія](https://productovi.com/uk/courses/statistics-for-pm-and-marketers/linear-regression.md)
- Наступний урок: [Логістична регресія та класифікація](https://productovi.com/uk/courses/statistics-for-pm-and-marketers/logistic-regression.md)

---
Productovi Learning. Безкоштовно, читати можна без реєстрації.
