Что такое линейная регрессия и какую задачу она решает
Линейная регрессия - модель зависимости одной переменной от одной или нескольких других переменных, где связь задана линейной функцией. Задача сводится к поиску «линии наилучшего соответствия» через набор точек данных: нужно провести прямую так, чтобы она проходила максимально близко ко всем наблюдениям сразу. В разборе линейной регрессии она описана как базовая модель и простой предшественник нелинейных методов, которые используют для обучения нейронных сетей.
Формулировка становится понятной, когда подставить реальные величины. Цена квартиры и её площадь, температура GPU и время под нагрузкой, дневной спрос и день недели: везде есть вход x и отклик y, и модель проверяет гипотезу «связь между ними близка к линейной». Если гипотеза разумна, прогноз получается быстрым и устойчивым.
Коэффициенты такой модели имеют физический смысл, поэтому линейную регрессию охотно берут в аналитику: можно сказать «каждый дополнительный квадратный метр добавляет столько-то к цене» и защитить это число перед заказчиком. У нейросети такой привилегии нет: её веса по отдельности ничего не объясняют, интерпретировать приходится результат целиком.
Где линейная регрессия применяется на практике
Модель работает в задачах, где нужен числовой прогноз и объяснимая логика:
- прогноз цен и стоимости: недвижимость, товары, услуги;
- прогноз спроса и продаж по историческим рядам и признакам сезона;
- прогноз нагрузки на инфраструктуру: запросы в секунду, утилизация CPU, температура;
- оценка вклада отдельного признака, когда важнее не точность до десятых, а понятное направление влияния.
Чаще всего модель выступает как baseline: быстрый ориентир по качеству, с которым потом сравнивают градиентный бустинг, случайный лес или нейросеть. Если сложная модель не обходит линейную регрессию по метрике на отложенных данных, выигрыша от сложности нет, а стоимость поддержки выросла.
Чем линейная регрессия отличается от нейросети на уровне постановки задачи
Линейная регрессия строит одну линейную функцию от входов. Нейросеть - композиция линейных преобразований и нелинейных функций активации, и уже за счёт этого она описывает изогнутые зависимости и взаимодействия признаков. Разница в постановке определяет разницу в методах: для линейной регрессии есть формула, дающая оптимум сразу, для нейросети к нему идут шагами. Развилка подробно разобрана ниже, в разделах про метод наименьших квадратов и градиентный спуск.
Формула линейной регрессии: f(x) = m·x + b и смысл параметров
В простейшем случае с одной независимой переменной прямая задаётся уравнением f(x) = m·x + b, где m - наклон линии, b - её y-сдвиг. Решение линейной регрессии подбирает значения m и b так, чтобы f(x) оказывалась как можно ближе к фактическим y.
| Параметр | Геометрический смысл | Как читать |
|---|---|---|
| m | Наклон прямой | Рост x на единицу меняет прогноз на m; положительное m даёт рост, отрицательное - спад |
| b | Сдвиг по оси y | Значение f(0), точка пересечения прямой с вертикальной осью |
Прямая f(x) = -0.11·x + 2.5 из разобранного примера убывает: каждое приращение x на единицу снижает прогноз примерно на 0,11. При x = 0 модель выдаёт 2,5. Знак m задаёт направление связи, модуль - чувствительность прогноза к изменению входа.
Как выглядит набор данных и что значит «подогнать прямую»
Набор данных - таблица пар (x, y). В примере из первоисточника таких точек семь, и для них ищется линия, наилучшим образом соответствующая данным. Каждая точка - одно наблюдение: конкретное значение входа и измеренный отклик.
Подогнать прямую значит выбрать такие m и b, при которых прямая проходит близко ко всем точкам одновременно, а не к одной самой удобной. Через все семь точек она обычно не проходит: наблюдения почти никогда не лежат на одной линии. Хорошая модель держится близко ко всей массе точек, и это отличает подгонку от интерполяции, где линия обязана попасть в каждую точку.
Функция потерь и MSE: как сравнивать прямых-кандидатов
Чтобы выбирать между прямыми, нужен числовой критерий. Функция потерь измеряет, сколько модель ошибается на наборе данных: она считает расстояние между предсказанным значением y(x) и фактическим. Разные функции потерь считают это расстояние по-своему, но смысл один: меньше потерь - лучше соответствие.
Самая распространённая функция потерь - средняя квадратичная ошибка (MSE). Чтобы её вычислить, берут все значения ошибок, возводят их длины в квадрат и усредняют:
MSE = (1/n) * ((y1 - f(x1))^2 + (y2 - f(x2))^2 + ... + (yn - f(xn))^2)
Почему именно квадрат ошибки, а не модуль
Квадрат решает две задачи. Он убирает знак: ошибки +3 и -3 не гасят друг друга при сложении. И он сильнее наказывает крупные промахи: ошибка 10 даёт вклад 100, ошибка 1 - всего 1. Для поиска минимума важно, что квадратичная функция гладкая, у неё есть производная в любой точке, а значит, по ней можно считать градиент.
У этой чувствительности есть обратная сторона. Один выброс с большой ошибкой перетягивает прямую на себя, и линия хуже описывает основную массу точек. Если шум в данных тяжёлый, разумнее взять MAE или другую устойчивую метрику. Вторая ловушка: MSE сводит прогноз к условному среднему и предполагает постоянную дисперсию шума, поэтому две модели с одинаковой метрикой могут выдавать разные по смыслу прогнозы. Этот эффект разобран в материале про Gaussian NLL и вероятностное прогнозирование.
Расчёт MSE на примере семи точек
Алгоритм повторяется на любых данных:
- Для каждой точки вычислить прогноз f(x) по выбранным m и b.
- Найти ошибку: y - f(x).
- Возвести ошибку в квадрат, чтобы знак не влиял на сумму.
- Сложить все квадраты ошибок по семи точкам.
- Разделить сумму на количество точек, то есть на 7.
Результат - одно число, по которому прямые сравнимы между собой. Для трёх прямых-кандидатов из разобранного примера расчёт дал MSE 0,17, 0,08 и 0,02; третья функция с самой низкой MSE и признана линией наилучшего соответствия. Автор разбора подчёркивает, что это совпало с визуальной оценкой: кандидат, который на глаз выглядел лучше, оказался лучше и по метрике.
Полезно посмотреть на ошибки глазами. У прямой f(x) = -0.11·x + 2.5 расстояния между фактическими и прогнозируемыми значениями показаны красными пунктирными линиями: длина каждого отрезка - ошибка на конкретной точке, а MSE собирает эти длины в одну цифру. Сравнивать значения 0,17, 0,08 и 0,02 имеет смысл только внутри одной задачи и одного набора данных. Абсолютная величина MSE сама по себе ничего не говорит о качестве модели, у другой задачи масштаб будет другим.
Поверхность MSE в пространстве параметров: ищем дно «чаши»
MSE зависит не от x и y, а от параметров m и b. Каждой паре соответствует одна точка на поверхности ошибки, и задача сводится к поиску пары с минимальной MSE. На графике такая поверхность выглядит как удлинённая чаша, грубо центрированная в окрестности (m, p) ≈ (0.5, 1.0) при диапазонах -2 ≤ m ≤ 4 и -6 ≤ p ≤ 8. В исходной визуализации параметр сдвига подписан p, хотя в уравнении прямой он обозначен b: это один и тот же коэффициент.
Цель - самая низкая точка чаши. Перебор кандидатов вручную, как в предыдущем разделе, это грубая версия такого поиска: мы ткнули в три точки поверхности и выбрали лучшую из трёх. Настоящее решение находит дно.
Почему для линейной регрессии минимум можно найти формулой
MSE линейной регрессии - квадратичная функция параметров. У неё один минимум, и его положение вычисляется аналитически: это и есть метод наименьших квадратов. Решение получают в замкнутой форме, за один расчёт, без итераций и без выбора скорости обучения. Матричный вывод в разобранном первоисточнике не приводится; для понимания достаточно того, что формула даёт ту же пару m и b, к которой ведёт поиск дна чаши.
Для двух параметров чашу легко нарисовать: диаграмма и контурный график с логарифмически распределёнными линиями уровня читаются с одного взгляда. Для тысяч и миллионов параметров рисунок невозможен: пространство многомерное, а вычислять решение в замкнутой форме дорого. Здесь и начинается разница между линейной регрессией и нейросетью.
Множественная линейная регрессия: от одной переменной к n признакам
Обобщение на несколько признаков выглядит так: f(x) = b + w1·x1 + … + wn·xn. Здесь b - сдвиг, w - веса при признаках. Каждый вес показывает, насколько меняется прогноз при изменении своего признака на единицу и неизменных остальных. Вариант с одной переменной - частный случай: w1 играет роль m.
Смысл параметров сохраняется, меняется масштаб задачи. Признаков бывают десятки и сотни, и каждый добавляет измерение в пространство параметров. Нарисовать чашу уже нельзя, а стоимость аналитического решения растёт вместе с числом признаков. Появляется и риск переобучения: при малом объёме данных и большом числе признаков модель подгоняется под шум и теряет качество на новых наблюдениях. Регуляризация и отбор признаков частично снимают проблему, но здесь они не разбираются.
Почему метод наименьших квадратов не применяют для обучения нейросетей
Нейросеть отличается от линейной регрессии структурой, а не размером. Между линейными слоями стоят нелинейные функции активации, поэтому итоговая функция от входов нелинейна. Это ломает условие, на котором держится аналитическое решение: функция потерь перестаёт быть квадратичной и выпуклой. У неё может быть много локальных минимумов, а формулы, дающей глобальный оптимум за один расчёт, не существует. Работу с параметрами ведут численно.
Что делают нелинейные функции активации
Без активаций многослойная сеть бессмысленна: композиция линейных преобразований сводится к одному линейному преобразованию. Сколько слоёв ни ставь, модель останется линейной регрессией с другими коэффициентами. Активация (ReLU, сигмоида, tanh) добавляет излом или насыщение, и сеть получает возможность описывать изогнутые зависимости.
Та же активация отвечает за потерю выпуклости. Как только в композиции появляется нелинейность, поверхность ошибки перестаёт быть чашей с одним дном: на ней возникают овраги, локальные минимумы и плоские участки. Обучение превращается в задачу поиска, где ответ зависит от начальной точки и числа шагов.
Как градиентный спуск ищет минимум по шагам
Рабочий инструмент здесь - градиентный спуск. Считаем градиент функции потерь по параметрам (он показывает направление самого быстрого роста ошибки), делаем шаг в противоположную сторону, повторяем. Каждый шаг немного уменьшает потерю, а число шагов измеряется тысячами и миллионами.
Размер шага задаёт скорость обучения. Слишком большой шаг - потеря скачет и обучение расходится. Слишком маленький - сходимость занимает неоправданно много времени и легко застревает. Градиенты для миллионов параметров считает обратное распространение ошибки: оно переиспользует промежуточные вычисления, поэтому обратный проход по сети стоит примерно столько же, сколько прямой. Пошаговый разбор с числами есть в материале про обратное распространение ошибки, а про экономию вычислений - в статье про цепное правило и повторное использование вычислений.
Честное ограничение: градиентный спуск не гарантирует глобальный минимум. Он находит локальный, зависящий от инициализации и порядка данных. На практике этого хватает, потому что качество сети оценивают по метрике на отложенной выборке, а не по тому, насколько глубоко удалось забраться в поверхность ошибки.
Что даёт линейная регрессия на практике и когда её недостаточно
Линейная регрессия остаётся быстрым и интерпретируемым baseline. Её коэффициенты объяснимы, обучение занимает секунды, результат легко защитить перед заказчиком. Если сложная модель не обходит её по метрике на отложенных данных, усложнять нечего.
- Начинать с линейной регрессии, когда признаков немного, связь предположительно линейна и важна интерпретация коэффициентов.
- Проверять остатки: если они ложатся в узор или зависят от величины прогноза, линейная форма описания не подходит.
- Смотреть в сторону нелинейных моделей, если зависимость явно изогнута, признаки взаимодействуют друг с другом и данных достаточно для оценки большого числа параметров.
- Не тянуть линейную регрессию с MSE в задачи с выбросами и тяжёлым шумом: прямая перетянется на аномалии.
Ограничения стоит держать в голове прямо. Модель не ловит нелинейные зависимости и взаимодействия признаков: произведение двух факторов, пороговые эффекты и насыщение для неё невидимы. При MSE она чувствительна к выбросам. Она требует аккуратной подготовки признаков: масштабирования, обработки пропусков, кодирования категорий. Добавление слоёв наугад эти проблемы не решает, а иногда делает хуже.
Практический вывод простой: линейная регрессия - отправная точка, а не конкурент нейросетей. Она задаёт планку качества, показывает, есть ли в данных сигнал, и объясняет, в какую сторону он работает. Нейросеть нужна там, где линейной модели не хватает гибкости, и цена этой гибкости - отсутствие аналитического решения, невыпуклая функция потерь и обучение шагами вместо одной формулы.