Линейная регрессия
Самая простая модель машинного обучения — и при этом фундамент, на котором строится всё остальное: от логистической регрессии до нейросетей. Если понять её до конца, половина вопросов на собеседовании перестанет пугать.
Интуиция
Представь, что ты риелтор и хочешь предсказывать цену квартиры по её площади. У тебя есть история сделок — точки на графике «площадь → цена». Линейная регрессия (linear regression) говорит: давай проведём через эти точки прямую так, чтобы она в среднем ошибалась как можно меньше. Дальше для любой новой квартиры мы просто смотрим, где её площадь пересекает прямую — это и есть прогноз.
Модель для одного признака выглядит так:
Здесь w — наклон (вес признака), b — сдвиг (bias, где прямая пересекает ось y), а ŷ — предсказание. Для многих признаков всё то же самое, только признаков и весов становится больше: ŷ = w1x1 + w2x2 + … + b.
Как измерить «хорошесть» прямой
Нужна функция потерь (loss function) — число, которое говорит, насколько модель плоха. Стандартный выбор — среднеквадратичная ошибка (MSE, mean squared error): берём разницу между предсказанием и правдой для каждой точки (это называется остаток, residual), возводим в квадрат и усредняем:
Почему именно квадрат? Две причины. Во-первых, квадрат сильнее наказывает большие ошибки: промахнуться на 10 в 100 раз хуже, чем на 1. Во-вторых, парабола гладкая и дифференцируемая — по ней удобно спускаться градиентом. Обратная сторона: из-за квадрата модель очень чувствительна к выбросам (outliers) — одна аномальная точка может сильно развернуть прямую. Если выбросов много, берут MAE (среднюю абсолютную ошибку) — она устойчивее.
Как найти лучшие параметры
Есть два пути, и на собеседовании полезно знать оба:
- Аналитически. Для MSE задача имеет решение в замкнутой форме — нормальное уравнение (normal equation): w = (XᵀX)⁻¹Xᵀy. Одна формула — и готово. Проблема: обращение матрицы стоит ~O(d³) по числу признаков и требует, чтобы XᵀX была обратимой; при миллионах признаков или строк это непрактично.
- Итеративно — градиентным спуском. Начинаем с случайных (w, b), считаем градиент лосса и делаем маленькие шаги против него. Так учат и линейную регрессию на больших данных, и любые нейросети. Подробнее — в теме про градиентный спуск.
Как читать обученную модель
Вес wj — это «на сколько изменится прогноз при увеличении признака j на единицу, при прочих равных». Это делает линейную регрессию любимой моделью там, где важна интерпретируемость. Но осторожно: сравнивать веса между собой можно только если признаки приведены к одному масштабу, а при сильно скоррелированных признаках (мультиколлинеарность) отдельные веса становятся нестабильными и теряют смысл.
Качество обычно описывают метрикой R² — доля дисперсии целевой переменной, которую объясняет модель: 1 — идеально, 0 — не лучше, чем предсказывать среднее.
- «Почему MSE, а не MAE?» — квадрат дифференцируем и сильнее штрафует большие ошибки; MAE устойчивее к выбросам.
- «Когда нормальное уравнение, а когда градиентный спуск?» — аналитика хороша при малом числе признаков; спуск масштабируется на большие данные и стриминг.
- «Что будет при скоррелированных признаках?» — веса нестабильны, помогает регуляризация (L2/ridge) или отбор признаков.
- «Как модель отреагирует на выброс?» — сильно сдвинется из-за квадрата ошибки; проверь в интерактиве мысленно, куда утянула бы прямую точка высоко над остальными.