Перейти к содержанию
Публикация AiManual

Линейная регрессия в машинном обучении: линия наилучшего соответствия, MSE и почему нейросети устроены сложнее

Линейная регрессия ищет прямую f(x) = m·x + b с минимальной MSE и служит отправной точкой для нейросетей. Разбираем формулу, расчёт MSE на семи точках, форму по

Коротко

Что будет в материале

  1. 01

    Что такое линейная регрессия и какую задачу она решает

  2. 02

    Формула линейной регрессии: f(x) = m·x + b и смысл параметров

  3. 03

    Функция потерь и MSE: как сравнивать прямых-кандидатов

  4. 04

    Поверхность MSE в пространстве параметров: ищем дно «чаши»

Что такое линейная регрессия и какую задачу она решает

Линейная регрессия - модель зависимости одной переменной от одной или нескольких других переменных, где связь задана линейной функцией. Задача сводится к поиску «линии наилучшего соответствия» через набор точек данных: нужно провести прямую так, чтобы она проходила максимально близко ко всем наблюдениям сразу. В разборе линейной регрессии она описана как базовая модель и простой предшественник нелинейных методов, которые используют для обучения нейронных сетей.

Формулировка становится понятной, когда подставить реальные величины. Цена квартиры и её площадь, температура 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 на примере семи точек

Алгоритм повторяется на любых данных:

  1. Для каждой точки вычислить прогноз f(x) по выбранным m и b.
  2. Найти ошибку: y - f(x).
  3. Возвести ошибку в квадрат, чтобы знак не влиял на сумму.
  4. Сложить все квадраты ошибок по семи точкам.
  5. Разделить сумму на количество точек, то есть на 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 она чувствительна к выбросам. Она требует аккуратной подготовки признаков: масштабирования, обработки пропусков, кодирования категорий. Добавление слоёв наугад эти проблемы не решает, а иногда делает хуже.

Практический вывод простой: линейная регрессия - отправная точка, а не конкурент нейросетей. Она задаёт планку качества, показывает, есть ли в данных сигнал, и объясняет, в какую сторону он работает. Нейросеть нужна там, где линейной модели не хватает гибкости, и цена этой гибкости - отсутствие аналитического решения, невыпуклая функция потерь и обучение шагами вместо одной формулы.

Подписаться на канал