Что такое регрессия для аналитика
Коротко
Регрессия — метод поиска зависимости между переменными.
Y = f(X) + шумГде Y — что хотим предсказать, X — что известно.
Для аналитика — инструмент для поиска связей: «какие факторы влияют на revenue?», «что двигает retention?».
Линейная регрессия
Самый простой вид:
Y = a + b₁·X₁ + b₂·X₂ + ... + bₙ·Xₙ + ε- Y — target (выручка).
- X — features (реклама, сезон, платформа).
- b — коэффициенты.
- ε — ошибка.
Пример
import pandas as pd
from sklearn.linear_model import LinearRegression
df = pd.read_csv('sales.csv')
X = df[['marketing_spend', 'num_promotions', 'day_of_week']]
y = df['revenue']
model = LinearRegression()
model.fit(X, y)
print('Коэффициенты:', model.coef_)
print('Intercept:', model.intercept_)
print('R²:', model.score(X, y))Интерпретация коэффициентов
- b₁ = 5 — увеличение marketing_spend на 1 руб даёт +5 руб revenue.
- b₂ = -2 — каждая промо-акция снижает revenue на 2 руб.
Важно: это связь, не обязательно причинность. Корреляция vs причинность.
Больше таких примеров с разборами — в Telegram-тренажёре. Короткие сессии, прогресс по темам, объяснения после каждого ответа.
R² (коэффициент детерминации)
Насколько модель объясняет данные (0 до 1):
- R² = 0.9 — 90% вариации объяснено. Отличная модель.
- R² = 0.3 — 30%. Средне.
- R² = 0.05 — плохо.
Внимание: R² можно искусственно «раздуть» добавлением features. Лучше adjusted R².
Логистическая регрессия
Для бинарных target (купит / не купит, churn / not churn):
P(Y=1) = 1 / (1 + exp(-(a + b·X)))Возвращает вероятность, не число.
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X, y_binary)
probabilities = model.predict_proba(X_test)[:, 1]Множественная регрессия
Несколько independent переменных:
Y = a + b₁·X₁ + b₂·X₂ + b₃·X₃Классика. Позволяет контролировать переменные: «как marketing_spend влияет на revenue, при прочих равных».
Типы регрессий
| Тип | Для чего |
|---|---|
| Linear | Непрерывный Y |
| Logistic | Бинарный Y (0/1) |
| Poisson | Счётчики (количество) |
| Multinomial | Многокатегориальный Y |
| Ridge / Lasso | Регуляризированная (для многих features) |
| Polynomial | Нелинейная зависимость |
Проверки модели
1. Residuals
Разница между предсказанием и реальностью. Должны быть нормально распределены, без паттерна.
residuals = y - model.predict(X)
import matplotlib.pyplot as plt
plt.scatter(model.predict(X), residuals)2. Multicollinearity
Features не должны сильно коррелировать между собой.
import numpy as np
corr = X.corr()
# Ищем корреляции > 0.83. Значимость коэффициентов (p-value)
import statsmodels.api as sm
X_ = sm.add_constant(X)
model = sm.OLS(y, X_).fit()
print(model.summary())
# Смотрим p-value для каждого коэффициентаЕсли готовишься к собесу — бот @kariernik_bot закрывает 80% технических вопросов. SQL, Python, A/B, продуктовые метрики — всё в одном месте.
Зачем аналитику
1. Explaining
«Какие факторы влияют на метрику?» — коэффициенты дают ответ.
2. Forecasting
Предсказание будущих значений (revenue на следующий месяц).
3. Attribution
Multi-touch атрибуция маркетинга — через multivariate регрессию.
4. A/B как регрессия
A/B с ковариатами — регрессия даёт более точный lift, чем простое сравнение средних.
Ограничения
1. Только линейная связь
Если Y зависит от X квадратично или экспоненциально — линейная регрессия не поймает.
Решение: polynomial regression или nonlinear models.
2. Чувствительна к выбросам
Один outlier может сильно сместить коэффициенты.
3. Требует много наблюдений
Для надёжных коэффициентов нужно n ≥ 10 на каждую feature.
4. Не показывает причинность
«Регрессия показала, что мороженое коррелирует с утоплениями» — это не значит, что мороженое топит. Лето топит и мороженое, и людей.
Сложность для аналитика
- Junior: знать, что такое регрессия, как применить sklearn.
- Middle: интерпретировать коэффициенты, проверять предположения.
- Senior: regularization, multicollinearity, feature engineering.
Для чистого DS — деревья и градиентный бустинг часто вытесняют регрессию. Для аналитика — регрессия остаётся потому что интерпретируема.
Читайте также
- Линейная регрессия
- Логистическая регрессия
- Корреляция vs причинность
- Корреляция Пирсон-Спирмен
- Что такое машинное обучение
FAQ
Линейная или логистическая?
Зависит от Y. Непрерывный (revenue) → линейная. Бинарный (churn / no churn) → логистическая.
R² хороший с 0.3?
Зависит от домена. В социальных науках 0.3 — хорошо. В экономике/маркетинге ожидают выше.
Когда не использовать регрессию?
Если связь очевидно нелинейная. Используйте Decision Tree или XGBoost.
sklearn или statsmodels?
sklearn — для ML-предсказаний. statsmodels — для интерпретации (p-values, stderr, CI). Для аналитики чаще statsmodels.