складність 2/5 Безкоштовно
Linear regression
Модель, яка передбачає числовий результат як зважену суму вхідних ознак, підігнана вибором ваг, що роблять квадрати похибок прогнозу якомога меншими.
Інтуїція
У вас є хмара точок, і ви хочете одну пряму крізь неї, яка хибить якомога менше. Лінійна регресія і є та пряма, узагальнена на будь-яку кількість входів.
Кожен вхід дістає вагу. Прогноз — це входи, помножені на свої ваги й додані. Підігнати модель означає шукати той набір ваг, який робить сумарну квадратичну похибку найменшою [2, §3.1.1.2].
Слово «лінійна» описує ваги, а не картинку. Модель лінійна, бо прогноз є зваженою сумою — ви й далі можете подати їй піднесену до квадрата чи прологарифмовану ознаку й дістати криву.
Формальне визначення
Для спостереження з ознаками від до модель передбачає зважену суму плюс вільний член. Коефіцієнти обирають так, щоб мінімізувати суму квадратів залишків — сумарні квадрати розривів між тим, що спостерігали, і тим, що передбачає пряма.
У матричній формі scikit-learn формулює ціль, яку мінімізує LinearRegression,
як квадрат евклідової норми вектора залишків [1, §1.1.1].
Як це працює
Процедура підгонки пряма, а не ітеративна. Оскільки квадратична похибка є гладкою функцією коефіцієнтів у формі чаші, вона має рівно одну найнижчу точку, доки жоден вхід не є лінійною комбінацією інших, і цю точку можна розв’язати в замкненій формі [2, §3.1.1.3]. Немає ні швидкості навчання, ні випадкової ініціалізації — ті самі дані завжди дають ті самі коефіцієнти.
Саме цей розв’язок у замкненій формі робить лінійну регресію дешевою в підгонці. Це найпоширеніший метод моделювання [3, §4.1.4.1], і саме її зазвичай беруть за базовий рівень, який усе інше має побити.
Де застосовується
Лінійна регресія виринає всюди, де числовий прогноз треба не просто дістати, а й комусь пояснити [3, Advantages]:
- Ціноутворення й оцінювання — оцінити ціну будинку за площею, кількістю кімнат і розташуванням, де покупець очікує побачити, який саме чинник зрушив число.
- Кредитний і ризиковий скоринг — умови, де вплив моделі на рішення треба пояснити коефіцієнт за коефіцієнтом.
- Дослідження «доза–відгук» — оцінити, як результат змінюється на одиницю впливу, з довірчим інтервалом на цю оцінку.
- Базові рівні прогнозування — перша модель, підігнана на новій задачі, щоб установити похибку, яку складніша модель має поліпшити.
- Просіювання ознак — читати величини й значущість коефіцієнтів, щоб вирішити, які входи варто тримати.
Чому і коли
Обирайте її, коли інтерпретовність важить так само, як точність. Кожен коефіцієнт читається звичайною мовою: якщо тримати все інше сталим, одна зайва одиниця цього входу зсуває прогноз ось настільки [5, §5.1.4]. Дуже мало родин моделей таке пропонують.
Вона також багато припускає, і ці припущення і є критеріями вибору:
- зв’язок між входами й ціллю справді адитивний і лінійний [3, §4.1.4.1]
- похибки приблизно незалежні, з приблизно сталим розкидом [4, §4.2.1]
- входи не є майже дублікатами один одного [1, §1.1.1]
Беріть щось інше, коли зв’язок видимо викривлений або має взаємодії, яких ознаки не кодують (градієнтний бустинг, сплайни) [3, Disadvantages], коли входів незрівнянно більше, ніж спостережень (Ridge або Lasso) [5, §7.3], або коли точність важить куди більше за можливість пояснити модель.
Практичний приклад
Python 17 рядків Показати код Сховати код
from sklearn.datasets import fetch_california_housing
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
X, y = fetch_california_housing(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=0
)
model = LinearRegression().fit(X_train, y_train)
pred = model.predict(X_test)
print(f"MSE {mean_squared_error(y_test, pred):.3f}")
names = fetch_california_housing().feature_names
for name, coef in zip(names, model.coef_):
print(f"{name:>10} {coef:+.3g}")Вивід
MSE 0.529
MedInc +0.433
HouseAge +0.00929
AveRooms -0.0986
AveBedrms +0.593
Population -7.56e-06
AveOccup -0.00475
Latitude -0.421
Longitude -0.434Перший рядок — це MSE на відкладених даних, тобто та величина, яку підгонка мінімізувала, тепер виміряна на рядках, яких модель ніколи не бачила [1, §1.1.1].
Коефіцієнти і є весь сенс виводу. Додатна вага на медіанному доході (+0.433) каже, що, за фіксованих інших ознак, райони з вищим доходом несуть вищу вартість житла — твердження, з яким ви можете піти до когось і яке можете відстояти.
Не кожен знак читається так чисто. Середня кількість кімнат отримує від’ємну вагу, а середня кількість спалень — велику додатну, і кожна має знак, протилежний тому, що дає підгонка лише на ній. Ці два стовпці корелюють на рівні 0.85 — це ті самі майже дублікати серед входів, про які попереджено вище, — і з такими ознаками оцінка найменших квадратів «стає дуже чутливою до випадкових похибок у спостережуваній цілі» [1, §1.1.1].
Варіанти
| Варіант | Що змінюється | Коли брати |
|---|---|---|
| Ridge | Додає штраф на квадрат величини коефіцієнта | Ознаки корельовані, або ознак більше, ніж рядків |
| Lasso | Додає штраф на модуль величини коефіцієнта | Ви хочете, щоб модель занулила непотрібні ознаки геть |
| Еластична сітка | Змішує обидва штрафи | Корельовані групи ознак, які ви хочете відбирати разом |
| Поліноміальна регресія | Додає степені ознак | Зв’язок викривлений, але все ще гладкий |
Усі чотири лишаються лінійними за коефіцієнтами, тож кожен коефіцієнт зберігає своє прочитання. Ridge зберігає розв’язок у замкненій формі [5, §7.1.1], як і поліноміальна регресія — це найменші квадрати на розширених ознаках [1, §1.1.16]. Lasso від нього відмовляється й підганяється ітеративно, покоординатним спуском [1, §1.1.3], як і еластична сітка, яка натомість тримає корельовані ознаки разом, а не вибирає одну навмання [1, §1.1.5].
Типові помилки
Коефіцієнт — це не причина. Модель повідомляє асоціацію за тих ознак, які їй показали. Пропустіть конфаундер — і коефіцієнт увібере його ефект.
Висока оцінка не є доброю підгонкою. Додавання будь-якої ознаки — включно з чистим шумом — ніколи не знижує оцінку на навчанні. Модель може мати добру оцінку і при цьому бути хибною в усьому, що важить.
Екстраполяція нічим не підперта. Підгонка описує діапазон навчальних даних. Передбачати далеко за його межами — це арифметика, а не свідчення.
Ще не прочитаноДочитайте сторінку до кінця — і вона вважатиметься прочитаною.
Зберігайте свій прогресЗ доступом назавжди кожна дочитана сторінка позначається, і ви продовжуєте з того місця, де зупинилися, на всіх своїх пристроях.
Відкрити доступПеревірте себе
3 запитання
Кожну відповідь пояснено: який розділ вона перевіряє і з якого джерела.
Джерела
- scikit-learn User Guide — Linear Modelsdocs · звірено 2026-08-29https://scikit-learn.org/stable/modules/linear_model.html
- Dive into Deep Learning — 3.1 Linear Regressionbookhttps://d2l.ai/chapter_linear-regression/linear-regression.html
- e-Handbook of Statistical Methods — 4.1.4.1 Linear Least Squares Regressionstandard · звірено 2026-10-04https://www.itl.nist.gov/div898/handbook/pmd/section1/pmd141.htm
- e-Handbook of Statistical Methods — 4.2.1 Typical underlying assumptions in process modelingstandard · звірено 2026-10-04https://www.itl.nist.gov/div898/handbook/pmd/section2/pmd21.htm
- Deep Learning (2016)bookhttps://www.deeplearningbook.org/