- BrainTools - https://www.braintools.ru -
Линейная регрессия – это первый алгоритм, который осваивает аналитик, и последний, который он перестает использовать. Разберем, что это такое, как работает, где применяется и с какими подводными камнями вы обязательно столкнетесь.
Линейная регрессия – это метод моделирования зависимости между зависимой переменной (target) и одной или несколькими независимыми переменными (features).
Регрессия пытается «подогнать» функцию под наблюдаемые данные, чтобы спрогнозировать новые, в случае с линейной регрессией – к данным подгоняется максимально близкая к ним прямая линия. Для наглядности лучше посмотреть на изображение ниже.
В простейшем случае (одна переменная) уравнение линейной регрессии выглядит так:
y = β₀ + β₁x + ε
Где:
y — зависимая переменная (то, что предсказываем);
x — независимая переменная (фактор);
β₀ — свободный член (intercept);
β₁ — коэффициент регрессии (показывает, на сколько изменится y при изменении x на единицу);
ε — ошибка [1] модели (то, что не объяснили факторы).
Для множественной регрессии (несколько факторов):
y = β₀ + β₁x₁ + β₂x₂ + … + βₙxₙ + ε
Линейная регрессия решает две ключевые задачи для аналитика:
Построить модель, которая предсказывает целевую переменную по заранее известным факторам. Например:
– прогноз продаж на основе рекламного бюджета;
– ожидаемая стоимость квартиры по ее характеристикам;
– прогноз оттока клиентов.
Понять, какие факторы и как влияют на целевую переменную:
– какие факторы значимы для данных, а какие нет;
– направление влияния: влияние положительное или отрицательное;
– сила влияния – размер коэффициента влияния.
Это критически важно, когда нужно не просто предсказать, а объяснить бизнесу, что происходит (задача интерпретации результата).
Стандартный метод – метод наименьших квадратов (МНК, OLS).
Для удобства дублирую изображение. Итак, мы хотим провести линию (или гиперплоскость) так, чтобы она максимально близко проходила ко всем точкам данных, но как измерить «близость»? Обычная сумма расстояний не подходит так как положительные и отрицательные отклонения будут компенсировать друг друга, то есть если просто сложить ошибки, можно получить ноль при ужасной модели. Поэтому есть необходимость возводить отклонения в квадрат и суммировать, так и положительные, и отрицательные отклонения дают вклад, и большие ошибки штрафуются сильнее (из-за квадрата).
Почему именно квадраты, а не модули?
Исторически сложилось, что квадраты дают красивое аналитическое решение, если брать модули (сумму абсолютных отклонений), получится другая оценка LAD-регрессия (Least Absolute Deviations), она устойчивее к выбросам, но у нее нет простой формулы, и решается она итеративно.

То есть, идея: подобрать коэффициенты так, чтобы сумма квадратов отклонений фактических значений от предсказанных была минимальна, математически [2]:
Q = Σ(yᵢ – ŷᵢ)² → min
Где:
yᵢ — фактическое значение
ŷᵢ — предсказанное значение (β₀ + β₁xᵢ)
Для множественной регрессии решение в матричном виде:
β = (XᵀX)⁻¹Xᵀy
Где:
X — матрица факторов (с первым столбцом из единиц для свободного члена).
Это аналитическое решение -> регрессия считается мгновенно, без каких либо итераций.
Модель построили, дальше вопрос: а можно ли ей вообще верить? Тут пригодится ряд показателей:
R² = 1 – (RSS / TSS)
Где:
RSS = Σ(yᵢ – ŷᵢ)² — сумма квадратов остатков (то, что не объяснили)
TSS = Σ(yᵢ – ȳ)² — общая сумма квадратов (вся дисперсия)
Значение показателя варьируется от 0 до 1, если R² = 0,7 – значит модель объясняет 70% того, что происходит, а остальное – это случайность [3] или неучтенные факторы.
Обычный R² можно накрутить, добавив любой мусорный фактор — он немного вырастет. Скорректированный R² штрафует за лишние переменные, поэтому на него смотрят при выборе между моделями.
Для каждого коэффициента проверяется гипотеза: «а не равен ли он нулю?», тут считается t-статистика:
t = βᵢ / SE(βᵢ)
Где:
SE – стандартная ошибка.
По t-статистике получаем p-value, если p-value < 0,05 – то коэффициент статистически значим (с вероятностью 95% он не ноль), а если больше – то скорее всего, фактор влияет случайно, можно выбрасывать.
Проверяет, есть ли вообще смысл в модели, то есть тут нулевая гипотеза: все коэффициенты (кроме свободного члена) равны нулю. Если p-value < 0,05 – модель лучше, чем просто среднее.
Линейная регрессия применима везде, где есть:
– табличные данные;
– предположение о линейности связи (хотя бы приблизительное);
– потребность [4] в интерпретации для бизнеса.
Примеры задач:
Маркетинг: прогноз LTV, влияние каналов трафика на конверсию;
Финансы: кредитный скоринг, оценка стоимости активов (CAPM-модели);
Ритейл: прогноз спроса, эластичность цен;
Недвижимость: оценка стоимости объектов;
Производство: контроль качества, зависимость брака от параметров.
✅ Интерпретируемость модели – каждый коэффициент имеет четкий смысл: «при увеличении фактора на единицу целевая переменная меняется на β единиц».
✅ Скорость – обучается за секунды, не нужны сутки расчетов, сделал и сразу получил результат.
✅ Статистическая обоснованность – есть теория: доверительные интервалы, проверка гипотез, p-value.
✅ Прозрачность – вы видите, что происходит внутри модели, никаких черных ящиков.
✅ Надежность – при правильном использовании модель не переобучается, она не начинает запоминать шум вместо сигнала.
✅ Простота внедрения – есть во всех языках и библиотеках, не требует GPU и сложной инфраструктуры.
❌ Линейность – предполагает линейную связь, если связь нелинейная, нужно либо преобразовывать переменные (полиномы, сплайны), либо использовать другие методы.
❌ Чувствительность к выбросам – один аномальный объект может сильно сместить коэффициенты, нужно чистить данные или использовать другие методы оценки.
❌ Мультиколлинеарность – если факторы сильно коррелируют между собой, оценки становятся неустойчивыми, диагностируется через VIF.
❌ Гомоскедастичность – предполагается, что дисперсия остатков постоянна, если нет – стандартные ошибки занижаются.
❌ Нормальность остатков – необязательна для несмещенности оценок, но нужна для корректных p-value при малых выборках.
❌ Качество сильно зависит от спецификации – если упустили важный фактор или включили лишний — модель может врать.
Не смотрят на выбросы -> получили кривую модель и удивляются.
Игнорируют мультиколлинеарность -> включили коррелирующие факторы, а потом пытаются интерпретировать коэффициенты.
Забывают [5] про нелинейность -> рисуют прямую там, где должна быть парабола.
Путают корреляцию с причиной -> нашли связь и объявили, что одно вызывает другое.
Не проверяют значимость -> смотрят только на R², хотя p-value говорят, что модель бесполезна.
Не смотрят на остатки -> после построения модели надо всегда строить график остатков, если там видна структура, например, «воронка» или периодичность – модель неправильная.
import pandas as pd
import statsmodels.api as sm
from sklearn.linear_model import LinearRegression
# Подготовка данных
X = df[['feature1', 'feature2']]
y = df['target']
# Для statsmodels (нужен константа)
X_with_const = sm.add_constant(X)
model_sm = sm.OLS(y, X_with_const).fit()
print(model_sm.summary())
# Для sklearn
model_sk = LinearRegression()
model_sk.fit(X, y)
print(model_sk.coef_)
* Statsmodels дает больше диагностической информации (p-value, R², тесты).
Sklearn – быстрее для предсказаний.
Линейная регрессия – это фундаментальный инструмент, который должен быть в арсенале каждого аналитика, она не решает все задачи, но там, где нужна прозрачность и интерпретируемость, ей нет равных. Понимание регрессии – это понимание того, как работают более сложные методы, без этой базы вы не станете хорошим специалистом, сколько бы нейросетей ни выучили.
✔️Больше про будни и задачи аналитика в Авито в моем тг канале 🌸Таня и Данные📊 [7]
Автор: TanyaVSdannye
Источник [8]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/26282
URLs in this post:
[1] ошибка: http://www.braintools.ru/article/4192
[2] математически: http://www.braintools.ru/article/7620
[3] случайность: http://www.braintools.ru/article/6560
[4] потребность: http://www.braintools.ru/article/9534
[5] Забывают: http://www.braintools.ru/article/333
[6] Image: https://sourcecraft.dev/
[7] 🌸Таня и Данные📊: https://t.me/+ngceWABYnHZhOWUy
[8] Источник: https://habr.com/ru/articles/1004248/?utm_campaign=1004248&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.