Уяви, що тобі треба назвати ціну будинку, знаючи лише його площу. У тебе є записи про два десятки вже проданих будинків. Точки на графіку лежать не на одній лінії — вони розкидані хмарою, бо ціну визначає ще й район, стан ремонту, поверх, настрій продавця. Але крізь цю хмару вгадується напрямок: більша площа — дорожче.
Лінійна регресія — це спроба провести крізь хаос одну пряму так, щоб вона описувала загальний напрямок якнайточніше. Звучить примітивно. Проте саме тут ховаються ідеї, на яких тримається все машинне навчання: як виміряти помилку, як її зменшувати, як не перенавчитись і як зрозуміти, чи можна вірити результату.
ПостановкаМодель у три символи
Формально ми припускаємо, що цільова величина y складається зі зваженої суми
ознак плюс щось, чого ми не знаємо:
Розберімо кожен символ окремо:
β₀— вільний член (intercept). Значення прогнозу, коли всі ознаки дорівнюють нулю. Часто не має фізичного сенсу (будинок площею 0 м²), але потрібен, щоб пряма могла зсуватися вгору-вниз.β₁…βₚ— ваги (коефіцієнти). Ті самі числа, які модель «вивчає». Кожна вага каже, наскільки змінюється прогноз при зміні своєї ознаки на одиницю.x₁…xₚ— ознаки (features). Те, що ми знаємо про обʼєкт.ε— незвідна помилка. Усе, чого модель не здатна пояснити в принципі: шум вимірювання, невраховані фактори, випадковість світу.
x², отримаємо криву —
і це все ще буде лінійна регресія, бо β входять у формулу лінійно.Далі для наочності залишимо одну ознаку. Тоді модель — звичайна пряма на площині, і вся задача зводиться до питання: які саме β₀ і β₁ вважати найкращими?
ПомилкаЩо означає «найкраща» пряма
Для кожного будинку різниця між справжньою ціною і нашим прогнозом називається залишком (residual):
На графіку це вертикальний відрізок від точки до прямої. Ідеальної прямої не існує — завжди хтось продався дорожче чи дешевше за очікуване. Тому питання не «як прибрати залишки», а «як зробити їх сумарно найменшими».
Покрути повзунки. Увімкни «показати квадрати» — і побачиш ті самі квадрати, що дали методу імʼя: мінімізувати помилку означає буквально зменшити їхню сумарну площу.
Підбери пряму
Тягни β₀ і β₁. Бурштинові відрізки — залишки. Пунктир — оптимум за формулою МНК.
Вибір метрикиЧому саме квадрат
Здавалося б, навіщо квадрат? Можна ж просто додати модулі залишків. Обидва варіанти використовують, і різниця між ними — не формальність, а різна поведінка:
Σ — це
наказ «склади все, що написано праворуч, по всіх обʼєктах». Індекс i
пробігає номери обʼєктів від 1 до n, а n — скільки їх усього.
Тобто Σ(yᵢ − ŷᵢ)² читається так: «візьми кожен обʼєкт, відніми від
справжньої ціни прогноз, піднеси різницю до квадрата — і додай усі ці числа». Множник
1/n перетворює суму на середнє, щоб результат не залежав від того, скільки
рядків у таблиці. Вертикальні риски |…| — модуль: він викидає знак,
лишаючи саму величину промаху.Як метрики звіту MSE, RMSE і MAE розібрано в темі 04 · Метрики регресії. Тут нас цікавить інше питання — не «як звітувати», а як вибір метрики змінює саму пряму, яку ми проведемо. І тут у квадрата дві властивості, кожна з наслідками.
Перша: квадрат гладкий. Уяви графік штрафу залежно від величини промаху. У квадрата це чаша з плавним дном: біля нуля вона стає дедалі пологішою, і в кожній точці видно, куди веде схил. У модуля це «V» — дві прямі, що сходяться в гострий кут. У самому куті нахилу немає: ліворуч він −1, праворуч +1, а в нулі не існує жодного. Наслідок для нас прямий: для квадрата існує замкнена формула — готовий вираз, у який підставляєш дані й одразу отримуєш найкращу пряму. Ми виведемо її в розділі 05. Для модуля такої формули немає взагалі: MAE-пряму доводиться шукати ітераціями, наближенням.
Друга: квадрат непропорційно карає великі промахи. Помилка 10 коштує 100, помилка 20 — вже 400. Учетверо більше за вдвічі більшу помилку. Модуль карає рівно пропорційно: 10 коштує 10, 20 коштує 20.
У другої властивості є точний наслідок, і його видно вже на пʼятьох числах. Візьмімо
найпростішу можливу модель — без жодної ознаки. Вона зобовʼязана назвати одне число
c для всіх обʼєктів одразу. Ціни такі (тис. грн): 100, 110, 120, 130,
500 — чотири звичайні квартири й одна вілла. Яке c обере кожна метрика?
| прогноз c | MSE | MAE | звідки взялось це c |
|---|---|---|---|
| 192 | 23 816 | 123.2 | середнє арифметичне пʼяти цін |
| 120 | 29 000 | 84.0 | медіана — середнє за порядком число |
Порахуймо перший рядок руками, щоб не вірити на слово. Середнє: (100 + 110 + 120 + 130 + 500) ÷ 5 = 960 ÷ 5 = 192. Промахи від нього: −92, −82, −72, −62, +308. Квадрати: 8 464, 6 724, 5 184, 3 844, 94 864; сума 119 080, поділити на 5 → 23 816. Модулі тих самих промахів: 92, 82, 72, 62, 308; сума 616, поділити на 5 → 123.2. Для c = 120 арифметика така сама й дає 29 000 та 84.0.
Кожна метрика виграла у своєму стовпці, і це не збіг цих пʼятьох чисел, а загальне правило: MSE обирає середнє, MAE обирає медіану. Тепер подивись на число 192 — воно вище за чотири ціни з пʼятьох. Одна вілла зсунула прогноз для всіх звичайних квартир, бо квадрат промаху 308 такий великий, що вигідніше зіпсувати чотири прогнози, аби трохи зменшити його. Медіана 120 на віллу не зважає взагалі: їй байдуже, коштує найдорожчий обʼєкт 500 чи 5 000, поки він лишається найдорожчим.
Пряма поводиться так само, тільки в кожній точці осі x. МНК-пряма — це
«середнє, протягнуте вздовж x», і тому одна аномальна точка тягне її на себе. MAE-пряма —
це «медіана, протягнута вздовж x», і одна точка її майже не рухає. Посунь викид в
інтерактиві нижче й порівняй, як реагують дві прямі.
MSE проти MAE: хто стійкіший до викидів
Тягни повзунок — він піднімає одну-єдину точку. Дивись, яка пряма за нею побіжить.
| метрика | що це | коли брати |
|---|---|---|
| MSE | середній квадрат залишку | для навчання: гладка, є похідна |
| RMSE | корінь із MSE | для звіту: в одиницях ціни |
| MAE | середній модуль залишку | коли в даних є викиди |
| R² | частка поясненої дисперсії | щоб порівняти з «нічого не роблю» |
Далі в темі ми всюди мінімізуємо MSE. Спосіб «провести пряму так, щоб сума квадратів
залишків була найменшою» має власне імʼя, яке ти зустрінеш у кожному підручнику:
метод найменших квадратів, скорочено МНК (англійською
ordinary least squares, звідси OLS в іменах функцій). Кнопка
«Знайти оптимум МНК» у першому інтерактиві ставить пряму саме туди, куди її поставила б
формула з розділу 05.
R²З чим ми взагалі порівнюємо
MSE = 500 — це добре чи погано? Без контексту сказати неможливо: усе залежить від масштабу цін. Тому потрібна метрика без одиниць, яка порівнює нашу модель із чимось осмисленим. Таким «чимось» беруть найдурнішу можливу модель: завжди прогнозувати середнє.
Тут SS — це скорочення від sum of squares, «сума квадратів».
SS_res (residual) — сума квадратів залишків нашої моделі:
Σ(y − ŷ)². SS_tot (total) — сума квадратів відхилень від середнього
Σ(y − ȳ)², тобто помилка тієї самої дурної моделі; риска над y позначає
середнє. Обидві величини — це буквально сумарна площа квадратів, тільки відкладених від
різних ліній. Перемикай режим і порівняй їх наочно:
З чого складається R²
Ліворуч — квадрати від середнього (SStot). Праворуч — від нашої прямої (SSres).
Порахуймо R² руками, щоб він перестав бути значком. Три будинки: площі 50, 100 і
150 м², ціни 100, 150 і 230 тис. Пряму візьмімо готову — ŷ = 30 + 1.3·площа;
у розділі 05 буде видно, звідки беруться саме ці два числа.
| площа | ціна y | прогноз ŷ | залишок | його квадрат | y − 160 | його квадрат |
|---|---|---|---|---|---|---|
| 50 | 100 | 95 | +5 | 25 | −60 | 3 600 |
| 100 | 150 | 160 | −10 | 100 | −10 | 100 |
| 150 | 230 | 225 | +5 | 25 | +70 | 4 900 |
Середня ціна: (100 + 150 + 230) ÷ 3 = 160 — саме від неї відкладають дві останні колонки. Складаємо: SSres = 25 + 100 + 25 = 150, SStot = 3 600 + 100 + 4 900 = 8 600. Отже R² = 1 − 150 ÷ 8 600 = 1 − 0.017 = 0.983. Читається так: пряма прибрала 98.3% тієї мінливості цін, яку модель-середнє лишала непоясненою.
Чому це працює саме так. Мінливість цін розкладається на дві частини рівно навпіл, без залишку: SStot = SSreg + SSres, де перший доданок — розкид самих прогнозів навколо середнього (у нас 8 450), другий — те, що лишилось непоясненим (150). Разом 8 600, тобто рівно SStot. Це не властивість даних, а властивість МНК: розклад сходиться точно лише тоді, коли пряму підібрано методом найменших квадратів і в моделі є вільний член β₀. Звідси випливає факт, який рятує від паніки: на тих самих даних, на яких МНК навчався, R² відʼємним не буває ніколи — найгірше, що модель може зробити, це поставити β₁ = 0 і повторити середнє, тобто R² = 0.
Ще один факт, корисний саме для однієї ознаки: R² МНК-прямої дорівнює квадрату коефіцієнта кореляції між ознакою і ціною. На наших трьох будинках кореляція дорівнює 0.991241, її квадрат — 0.982558, тобто той самий R², що ми порахували руками. Це пояснює, чому R² нічого не каже про напрямок: кореляція +0.99 і −0.99 дають однакове R², бо квадрат зʼїдає знак.
РозвʼязокНормальне рівняння крок за кроком
Досі ми ставили пряму на око — повзунками. Тепер знайдемо її точно, однією формулою, без жодного перебору. Виглядає вона так:
Це те місце, де більшість читачів здається: три незнайомі значки поспіль. Тому підемо трьома заходами. Спершу розберемо кожен значок окремо, потім побачимо, чому формула саме така, а наприкінці порахуємо її руками на трьох будинках — до останньої цифри.
Три речі з лінійної алгебри, і всі три прості
Матриця — це просто таблиця чисел. Наша матриця X: один
рядок на кожен будинок, один стовпець на кожну ознаку. Плюс перший стовпець із самих
одиниць — він потрібен, щоб у формулу потрапив вільний член β₀ (одиниця, помножена на β₀,
дає β₀). Вектор y — стовпець справжніх цін. Запис Xβ означає:
для кожного рядка перемнож його числа з відповідними коефіцієнтами й склади. Це і є
прогноз, тільки записаний для всіх будинків одним символом.
Транспонування (значок ᵀ угорі) — це поворот таблиці на
бік: рядки стають стовпцями, стовпці рядками. З таблиці 3×2 виходить таблиця 2×3. Навіщо
воно тут: перемножити дві таблиці можна лише тоді, коли ширина першої дорівнює висоті
другої. X на X — це 3×2 на 3×2, не сходиться. А Xᵀ
на X — це 2×3 на 3×2, сходиться, і результат має розмір 2×2.
Обернена матриця (значок ⁻¹) — це аналог ділення. Для
звичайного числа обернене — це 1/a: помножив a на 1/a, дістав одиницю. Для таблиці так
само: A⁻¹ — така таблиця, що добуток A·A⁻¹ дає одиничну матрицю
(одиниці по діагоналі, нулі скрізь). Ділити на матрицю не можна, тому множать на обернену —
це той самий рух, яким із рівняння 3x = 12 дістають x = 12 ÷ 3. І так само, як не можна
ділити на нуль, обернена є не в кожної матриці: якщо один стовпець — копія іншого
(з точністю до множника), оберненої немає взагалі.
Чому формула саме така
Найкоротше пояснення не потребує похідних узагалі — лише геометрії.
Коли ми крутимо β, прогнози Xβ пробігають не всі можливі набори з n чисел,
а тільки вузьку множину: усе, що можна скласти зі стовпців X. Уяви це так.
Стовпець справжніх цін y — точка десь у просторі. Множина досяжних прогнозів —
площина в цьому просторі, і точка y на ній майже напевно не лежить (інакше
пряма пройшла б крізь усі будинки без жодного залишку). Задача «мінімізувати суму квадратів
залишків» дослівно означає: знайти на площині точку, найближчу до y. А
найближча точка площини до точки поза нею — це основа перпендикуляра, тінь від
y, що падає прямо вниз. Будь-яка інша точка площини далі: щоб дійти до неї,
довелось би пройти ще й убік.
Звідси випливає все інше. Якщо відрізок від прогнозу до y перпендикулярний
до площини, то він перпендикулярний і до кожного стовпця X окремо. А
«перпендикулярні» для двох стовпців чисел означає просту річ: перемнож їх поелементно,
склади результати — вийде нуль. Записати цю умову для всіх стовпців одразу — це і є
Xᵀ(y − Xβ) = 0. Розкрий дужки — матимеш нормальне рівняння.
Той самий висновок дістають і формально, через похідну. Функція втрат MSE — квадратична, отже опукла: її поверхня — чаша з єдиним дном, без пасток у вигляді локальних ям. Це рідкісний подарунок, і саме він робить наступні чотири кроки законними.
Складаємо всі обʼєкти в матрицю X (рядок = обʼєкт, стовпець = ознака,
перший стовпець — одиниці для β₀). Тоді всі прогнози одразу:
Сума квадратів залишків — це квадрат довжини стовпця помилок. Подвійні риски
‖…‖ позначають довжину: за теоремою Піфагора це корінь із суми квадратів
координат, тож квадрат довжини — просто сума квадратів залишків, наша
SSres:
Значок ∇ («набла») позначає градієнт — список нахилів
функції L окремо по кожному з коефіцієнтів β. На дні гладкої чаші поверхня
горизонтальна в усіх напрямках, тобто всі ці нахили дорівнюють нулю. Прирівнюємо:
Ділимо на −2 і розкриваємо дужки — отримуємо так зване нормальне рівняння:
Якщо матриця XᵀX оборотна — множимо обидві частини на обернену:
Зверни увагу, що крок 3 дав рівно ту саму умову, яку ми щойно вивели з геометрії:
Xᵀ(y − Xβ) = 0, тільки помножену на −2. Похідна й перпендикуляр — це те саме
твердження двома мовами.
Рахуємо руками
Беремо три будинки з розділу 04: площі 50, 100, 150 м², ціни 100, 150, 230 тис.
Матриця X має два стовпці — одиниці та площу.
Схема · Що формула робить із розмірами
Ті самі три будинки. Стеж не за числами, а за формою таблиць.
X
3 × 2
Xᵀ
2 × 3
XᵀX
2 × 2
β
2 × 1
Висота 3 — це будинки. Ширина 2 — це коефіцієнти. Після XᵀX будинків більше немає.
Далі — самі числа. XᵀX складається з чотирьох сум: скільки всього будинків
(3), сума площ (50 + 100 + 150 = 300, і вона стоїть двічі) та сума квадратів площ
(2 500 + 10 000 + 22 500 = 35 000). Права частина Xᵀy —
дві суми: сума цін (100 + 150 + 230 = 480) і сума добутків «площа × ціна»
(50·100 + 100·150 + 150·230 = 5 000 + 15 000 + 34 500 = 54 500).
Тепер обернемо матрицю 2×2. Для такого розміру є коротке правило: поміняй місцями
числа на головній діагоналі, зміни знак у двох інших і поділи все на визначник
ad − bc. У нас визначник дорівнює 3·35 000 − 300·300 = 105 000 −
90 000 = 15 000. Він не нуль — отже обернена існує, і розвʼязок єдиний.
У чисельниках тут стоять 16 800 000 − 16 350 000 = 450 000 і 163 500 − 144 000 = 19 500; поділи кожен на 15 000 — і матимеш 30 та 1.3.
Ось звідки взялася пряма ŷ = 30 + 1.3·площа з розділу 04. Перевірмо її:
прогнози 95, 160 і 225, залишки +5, −10 і +5. Тепер два контрольні числа. Сума залишків:
5 − 10 + 5 = 0. Сума добутків «площа × залишок»: 50·5 + 100·(−10) + 150·5 = 250 −
1 000 + 750 = 0. Це не випадковість і не аркуш зійшовся — це рівно ті дві
умови перпендикулярності, які ми виписали вище: перша для стовпця одиниць, друга для
стовпця площ. МНК-пряма завжди лишає залишки, що в сумі дають нуль і не корелюють з
ознакою; будь-яке інше значення β цієї умови не виконає.
Формула дає точну відповідь за один крок, без жодних гіперпараметрів. Але в ній ховаються
дві проблеми. Перша: обернути матрицю p×p коштує приблизно як куб числа
p — на десятку ознак це миттєво, на десятках тисяч неприйнятно (куб від
10 000 — це трильйон операцій). Друга, підступніша: якщо дві ознаки майже дублюють
одна одну, стовпці X стають майже паралельними, визначник підповзає до нуля,
і ділення на нього роздуває найменший шум у даних до величезних коливань β. Формально
обернена ще існує, практично — числа з неї не варті довіри.
np.linalg.solve або QR-розклад розвʼязують систему напряму —
це і швидше, і чисельно стійкіше. np.linalg.inv у робочому коді — майже завжди
ознака помилки.ІтераціїГрадієнтний спуск
Другий шлях — не розвʼязувати рівняння, а просто котитися вниз схилом функції втрат:
Обчислюємо градієнт (напрямок найшвидшого зростання помилки), робимо крок у
протилежний бік, повторюємо. Розмір кроку η задаємо самі — і саме він вирішує все.
Замалий: збіжність триватиме вічність. Завеликий: кожне оновлення перестрибуватиме мінімум
і відлітатиме далі, ніж було.
Градієнтний спуск
Ліворуч — карта функції втрат, світле в центрі = мінімум. Праворуч — як падає помилка.
МасштабЧому потрібна стандартизація
Ось пастка, на якій спотикаються майже всі. Якщо ознаки мають різні масштаби — площа в сотнях, кількість кімнат в одиницях — поверхня втрат перестає бути круглою чашею і витягується у довгий вузький яр.
Проблема в тому, що крок η один на всі напрямки. Той крок, що нормальний уздовж пологої осі, виявляється завеликим упоперек крутої — і спуск починає зигзагом відбиватися від стінок яру замість того, щоб іти до дна. Перемкни тумблер і подивись на різницю траєкторій:
Яр проти чаші
Та сама задача, той самий крок η. Різниця лише в тому, чи стандартизовано ознаку.
Для теми 12 з цього важливі рівно два наслідки. Перший: вибір способу розвʼязку змінює вимоги до даних — та сама задача через формулу байдужа до масштабу, а через спуск від нього залежить критично. Другий: стандартизація робить коефіцієнти порівнянними між собою, і саме тому в розділі 11 вона знадобиться ще раз. Як саме масштабують ознаки, які ще бувають способи й де вони ламаються — тема 09 · Передобробка даних.
РозмірністьКілька ознак: від прямої до площини
Досі в нас була одна ознака. У житті їх десятки. Геометрія при цьому змінюється так: одна ознака дає пряму на площині, дві ознаки — площину в просторі, три і більше — гіперплощину, яку вже не намалюєш.
Але математика не змінюється взагалі. Та сама формула β = (XᵀX)⁻¹Xᵀy
працює для будь-якої кількості ознак — треба лише додати стовпців у матрицю X.
Покрути сцену, щоб побачити, що площина робить те саме, що робила пряма:
Дві ознаки — площина
Прогноз ціни за площею та віком будинку. Тягни повзунок повороту.
ГнучкістьНелінійність і перенавчання
А якщо залежність насправді крива? Тут стається несподіване: лінійна регресія вміє
описувати криві. Достатньо додати як ознаки степені x:
Модель лишається лінійною за параметрами — а отже, працює та сама формула. Ми просто підсунули їй нові стовпці. Але ось де починається головна драма всього машинного навчання: чим вищий степінь, тим гнучкіша крива — і тим точніше вона підганяється під шум замість справжньої закономірності.
Рухай повзунок степеня й дивись на дві криві помилки. Вони поводяться зовсім по-різному:
Степінь полінома та перенавчання
Рожеві точки — навчальні, сині — тестові (модель їх ніколи не бачила).
ПриборканняРегуляризація
Подивись на перенавчену модель із розділу 09 ще раз: крива проходить крізь навчальні
точки, а між ними й особливо на краях робить дикі кидки. Механізм у неї один — великі
ваги, які взаємно гасяться. Кожен доданок тягне криву у свій бік, і суми сходяться
рівно в навчальних точках; трохи вбік — і баланс розсипається. Наскільки великими виходять
самі числа, залежить від того, у якому вигляді записані ознаки: на сирих степенях
x, x², …, x¹² коефіцієнти легко доростають до десятків тисяч, а на стійкішому
записі, який використано в інтерактиві нижче, лишаються в межах кількох одиниць. Поводяться
вони однаково: без штрафу максимальні, зі штрафом осідають.
Ідея регуляризації проста: додати штраф за величину ваг прямо у функцію втрат. Тепер моделі невигідно роздувати коефіцієнти без вагомої причини:
Параметр λ керує балансом: нуль — звичайна регресія, велике значення —
всі ваги притиснуті до нуля й модель стає майже прямою. Різниця між L2 і L1: Ridge плавно
стискає всі ваги, а Lasso занулює неважливі повністю — тобто заодно робить відбір ознак.
Для теми 12 важливий один побічний ефект, який рідко називають уголос. Штраф
λ·Σβ² додає λ до діагоналі матриці XᵀX — а це рівно те, чого їй
бракувало в розділі 05, коли дві ознаки майже дублювали одна одну й визначник підповзав до
нуля. Ridge робить матрицю оборотною завжди, за будь-якого λ > 0. Історично
його для цього й придумали: не проти перенавчання, а проти майже виродженої матриці, яку
неможливо надійно обернути. Повний розбір — вибір λ, різниця L1 і L2, геометрія обмежень — у темі
19 · Регуляризація.
Як λ приборкує криву
Степінь фіксовано на 12 — свідомо забагато. Дивись, що робить регуляризація.
СенсЯк читати коефіцієнти
Коефіцієнт β₁ читається так: якщо площа зростає на одиницю, прогноз ціни
змінюється в середньому на β₁ — за умови, що решта ознак не змінилася. Ця остання
обмовка робить лінійну регресію прозорою: можна подивитись на число і сказати, що модель
насправді думає. Градієнтний бустинг чи нейромережа такої розкоші не дають.
У коефіцієнта є одиниці виміру, і без них він не значить нічого. Наш β₁ = 1.3 — це не «1.3», а 1.3 тисячі гривень на квадратний метр: одиниця ціни, поділена на одиницю ознаки. Звідси одразу два наслідки. Перший: переведи площу з метрів у сантиметри — і коефіцієнт стане 0.00013, хоча модель не змінилася ні на йоту. Другий, важливіший: більший коефіцієнт не означає важливішу ознаку. Ознака «вік у роках» і ознака «вік у днях» описують те саме, а їхні коефіцієнти відрізняються в 365 разів. Щоб коефіцієнти стало можна порівнювати між собою, ознаки спершу стандартизують (розділ 07) — тоді кожен коефіцієнт читається як «на скільки зміниться ціна, якщо ознака зросте на одне своє стандартне відхилення», і одиниця в усіх одна.
Вільний член β₀ читається окремо і найчастіше не читається взагалі. У нашому прикладі β₀ = 30 формально означає «ціна будинку площею 0 м²». Такого будинку не буває, і 30 тисяч тут не мають фізичного змісту — це просто висота, на якій пряма перетинає вертикальну вісь, щоб найкраще лягти на дані в тому діапазоні, де вони є. Осмисленим β₀ стає лише після центрування ознак: якщо від площі відняти її середнє, β₀ перетворюється на «ціну будинку середньої площі», і це вже число, яке можна назвати вголос.
Коефіцієнт діє лише там, де були дані. Наші три будинки мали від 50 до 150 м². Формула охоче порахує ціну для 900 м² — 30 + 1.3·900 = 1 200 тис., — але це екстраполяція: припущення, що та сама пряма тягнеться далеко за межі побаченого. Модель цього припущення не перевіряла й перевірити не може. У даних, де ознака ніколи не виходила за 150, немає жодної інформації про те, що діється при 900.
А головне — прозорість зникає, щойно ознаки починають дублювати одна одну. Це мультиколінеарність (multicollinearity), і найчистіший її випадок такий: у таблиці є і «площа в м²», і «площа у футах», бо анкету заповнювали різні люди. Заміряно на 60 згенерованих будинках, де ціна залежить від площі як 1.3 тис. за м², а другий стовпець — та сама площа у футах із похибкою округлення:
| модель | β площа, м² | β площа, фут² | R² |
|---|---|---|---|
| обидві ознаки | −19.5425 | +1.9368 | 0.9783 |
| лише м² | +1.3074 | — | 0.9781 |
Прочитай перший рядок буквально: модель каже, що більша площа знижує ціну на 19.5 тисячі за метр. Це відверта нісенітниця — і водночас прогнози цієї моделі точні рівно так само, як у чесної (R² відрізняється в четвертому знаку). Річ у тім, що два коефіцієнти працюють у парі: у квадратному метрі 10.7639 квадратних фута, тож сумарний вплив зайвого метра дорівнює −19.5425 + 1.9368·10.7639 = 1.3048 — практично те саме, що дає чесна модель. Числа правильні разом і сміттєві поодинці.
Друга біда мультиколінеарності — нестабільність. У тому самому замірі досить прибрати один рядок із шістдесяти, і коефіцієнт при площі в м² гуляє від −39.78 до −9.65: розмах 30.13 при самому коефіцієнті близько −19.5. У чесної моделі з однією ознакою та сама процедура дає розмах 0.0195 — у півтори тисячі разів менший. Практичний висновок: якщо коефіцієнти стрибають від дрібної зміни даних, не шукай сенсу в їхніх значеннях — шукай дубльовані ознаки.
МежіЧотири припущення, які легко порушити
Код виконається на будь-яких даних і видасть числа. Проблема в тому, що ці числа мають сенс лише коли виконуються чотири умови. Їх зручно запамʼятати абревіатурою LINE — за першими літерами англійських назв. Перемикай сценарії: кожен ламає рівно одне припущення, і на нижньому графіку видно, як саме.
Одразу застереження, без якого розділ читається неправильно. Порушення припущення не робить прогнози автоматично хибними. Воно ламає щось конкретне — і для кожної літери своє. Тому нижче після кожного припущення стоїть окремий рядок «що саме зламається».
Коли пряма бреше
Угорі — дані та підгонка. Унизу — графік залишків: головний діагностичний інструмент.
| літера | припущення | як ламається | що робити |
|---|---|---|---|
| L | Linearity — звʼязок лінійний | залишки лягають дугою | поліноміальні ознаки, інша модель |
| I | Independence — спостереження незалежні | часові ряди, повтори обʼєкта | моделі часових рядів, групова валідація |
| N | Normality — залишки нормальні | ламає довірчі інтервали | трансформація y (напр. log) |
| E | Equal variance — розкид сталий | залишки воронкою | зважена регресія, log-таргет |
Чому кожне з них ламається на реальних даних
L · лінійність. Ламається завжди, коли величина має насичення або поріг. Ціна за метр не росте вічно: після певної площі ринок покупців звужується, і крива згинається. Дохід від реклами росте, поки аудиторію не вичерпано. Вік автомобіля зʼїдає ціну круто в перші три роки й майже не зʼїдає після десятого. Як побачити: верхній графік бреше — на хмарі точок дуга непомітна. Дивитись треба на нижній: коли залишки лягли дугою, це означає, що пряма систематично недооцінює середину й переоцінює краї (або навпаки). Що зламається: прогноз стає систематично зміщеним на цілих ділянках діапазону, і жодне збільшення вибірки цього не лікує.
I · незалежність. Найчастіше порушене припущення й найважче помітне. Дані про будинки збирали кварталами: сусідні обʼєкти ділять район, школу й вигляд із вікна, тож їхні залишки схожі. Дані з часом: сьогоднішня ціна знає про вчорашню. Дані з повторами: одна й та сама квартира виставлялась тричі й дала три рядки. Як побачити: побудуй залишки в тому порядку, у якому дані збирались — якщо сусідні точки тримаються за руки й довго йдуть по один бік нуля, незалежності немає. Що зламається: сам коефіцієнт лишається приблизно правильним, бреше оцінка його точності. Заміряно на 4 000 згенерованих вибірок по 80 точок, де кожна помилка на 85% повторює попередню: справжній розкид β₁ дорівнює 0.1438, а стандартна формула похибки, яку виведе будь-яка бібліотека, дає в середньому 0.0408 — занижено в 3.5 раза. Довірчий інтервал виходить рівно в стільки ж разів вужчий за чесний, і звʼязок виглядає «статистично значущим» там, де його немає.
N · нормальність залишків. «Нормальний розподіл» — це форма дзвона: дрібні відхилення часті, великі рідкісні, симетрично в обидва боки. Ціни так не поводяться майже ніколи: знизу вони впираються в нуль, а зверху хвіст тягнеться далеко — розподіл скошений. Як побачити: гістограма залишків має один горб і довгий хвіст в один бік. Що зламається: найменше з усього списку. Самі коефіцієнти лишаються найкращими лінійними оцінками навіть без нормальності; ламаються тільки довірчі інтервали й p-значення, та й ті на великій вибірці вирівнюються самі. Тому N — єдина літера, через яку не варто панікувати: якщо ти будуєш прогноз, а не звіт із p-значеннями, вона тебе майже не стосується. Звичайні ліки — узяти логарифм ціни й моделювати його.
E · сталий розкид (наукова назва — гомоскедастичність, а її порушення — гетероскедастичність). Ламається щоразу, коли похибка пропорційна величині: дешеву однокімнатну квартиру ринок оцінює з точністю до пари тисяч, особняк — до пари сотень тисяч. Як побачити: залишки розходяться воронкою — вузько ліворуч, широко праворуч. Що зламається: два наслідки. Перший — довірчі інтервали знову брешуть. Другий, менш очевидний: МНК зважує всі точки однаково, тобто дозволяє найгаласливішим обʼєктам тягнути пряму нарівні з найточнішими. Заміряно на 4 000 вибірок із розкидом, що росте вздовж x: звичайний МНК дає розкид оцінки β₁ у 0.1066, а зважена регресія (де кожна точка входить із вагою, оберненою до її дисперсії) — 0.0773, тобто у 1.38 раза точніше на тих самих даних.
А четвертий сценарій в інтерактиві — викид — стоїть осторонь списку, бо це не порушення припущення, а порушення даних. Але наслідок найгрубіший. Заміряно на 30 точках: одна точка, піднята на 200 одиниць, зсуває нахил з 1.184 до 1.023, а R² обвалюється з 0.960 до 0.400. Одна точка з тридцяти. Причина вже відома з розділу 03 — квадрат карає великий промах непропорційно.
ПідсумокНавіщо це знати
Лінійна регресія рідко виграє змагання. Її цінність в іншому — це базова лінія, з якою порівнюють усе решта. Вона вчиться за секунди, чесно каже, що думає, і працює на крихітних вибірках. Якщо важкий бустинг ледве обігнав пряму — це сигнал, що в даних просто немає нелінійної структури, і складна модель лише додає ризику без користі.
А ще вона — найдешевший спосіб зрозуміти механіку, яку далі побачиш скрізь:
- функція втрат — як взагалі вимірюють «поганість» моделі;
- градієнт і крок — як її зменшують, від регресії до мовних моделей;
- перенавчання — чому складніша модель не означає кращу;
- регуляризація — як стримують складність;
- припущення — чому працюючий код ще не означає правильний результат.
Змінюватиметься форма моделі. Цикл лишиться тим самим.