Linear vs logistic regression на собеседовании Data Scientist
Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.
Содержание:
Зачем разбирать на собесе
Linear / logistic — два самых базовых алгоритма. На собесе DS обязательно: «выведи log-loss из MLE», «зачем sigmoid в logistic», «как интерпретировать коэффициент logistic regression», «когда linear regression врёт». Senior уровень — Bayesian regression, generalized linear models.
Главная боль без понимания — DS использует logistic regression, на вопрос «что такое odds» отвечает «вероятность» — это критическая ошибка интерпретации.
Linear regression: модель и MSE
Модель:
ŷ = w₀ + w₁·x₁ + w₂·x₂ + ... + wₙ·xₙ = w·x + bLoss — MSE (Mean Squared Error):
MSE = (1/N) · Σ (yᵢ - ŷᵢ)²Решение в закрытой форме:
w = (XᵀX)⁻¹ XᵀyСтоимость O(d³) на инверсию матрицы. На больших d (фичи) — gradient descent, иначе медленно или не влезает в память.
Вариации:
- Ridge — L2 регуляризация:
MSE + λ·||w||². Решение:w = (XᵀX + λI)⁻¹ Xᵀy. Помогает при мультиколлинеарности. - Lasso — L1:
MSE + λ·||w||₁. Не имеет closed form — coordinate descent или proximal methods. Зануляет коэффициенты. - Elastic Net — комбинация L1 + L2.
Допущения:
- Линейная связь между фичами и target.
- Гомоскедастичность (постоянная дисперсия ошибок).
- Нормальное распределение ошибок (для t-test'ов и CI).
- Отсутствие мультиколлинеарности.
- Независимость наблюдений.
Logistic regression: sigmoid и log-loss
Модель. Logistic regression предсказывает вероятность класса 1.
P(y=1 | x) = σ(w·x + b)
σ(z) = 1 / (1 + e^(-z))σ — sigmoid, отображает любое число в (0, 1).
Loss — binary cross-entropy (log-loss):
L = -(1/N) Σ [yᵢ log(p̂ᵢ) + (1-yᵢ) log(1-p̂ᵢ)]Нет closed form — gradient descent (или его варианты: SGD, Newton-Raphson, IRLS).
Multi-class: softmax регрессия (logistic regression для K классов).
P(y=k | x) = exp(wₖ·x) / Σⱼ exp(wⱼ·x)MLE для обоих случаев
Оба регрессии можно вывести из maximum likelihood estimation.
Linear (с допущением y ~ N(w·x, σ²)):
log L = -(1/2σ²) Σ (yᵢ - w·xᵢ)² + constМаксимизация log-likelihood = минимизация MSE.
Logistic (Bernoulli y):
log L = Σ [yᵢ log(σ(w·xᵢ)) + (1-yᵢ) log(1-σ(w·xᵢ))]Максимизация log-likelihood = минимизация log-loss.
Вывод на собесе. Senior-кандидаты должны вывести оба за 5 минут. Это базовый литмус-тест.
Регуляризация L1 / L2 / Elastic Net
В обоих случаях добавляется regularization term к loss:
- L2 (Ridge):
+ λ · ||w||₂². Сжимает коэффициенты к нулю (но не до нуля). Хорошо при мультиколлинеарности и большом числе фич. - L1 (Lasso):
+ λ · ||w||₁. Зануляет «лишние» коэффициенты — полезно для feature selection. - Elastic Net:
+ α·||w||₁ + (1-α)·||w||₂². Компромисс — не такой жёсткий как L1, но с feature selection.
Где это в sklearn:
LogisticRegression(penalty='l2', C=1.0) # C = 1/λ
LogisticRegression(penalty='l1', solver='liblinear')
LogisticRegression(penalty='elasticnet', l1_ratio=0.5, solver='saga')Стандартизация фич обязательна — без неё регуляризация смещена в пользу больших scale.
Интерпретация коэффициентов
Linear regression. wᵢ — на сколько изменится y при увеличении xᵢ на 1 при фиксированных остальных. Линейная и легко читаемая.
Logistic regression. Это критический момент.
log(odds(y=1)) = w·x + b
odds = P(y=1) / P(y=0) = exp(w·x + b)wᵢ — изменение log-odds при увеличении xᵢ на 1. exp(wᵢ) — odds ratio.
Если w_age = 0.1, exp(0.1) ≈ 1.105
→ при увеличении возраста на 1 год odds того, что y=1, растёт в 1.105 раза
→ это НЕ "вероятность растёт на 10%"Odds ratio vs probability: odds 4:1 — это P=0.8, не P=4. Путаница частая.
Marginal effect. На малых вероятностях (P → 0) odds ≈ probability. На P близких к 0.5 разница большая. Поэтому интерпретация в терминах вероятности нелинейна.
Допущения и проверка
Linear regression проверяй:
- Q-Q plot residuals vs нормальное (нормальность).
- Residuals vs predicted (гомоскедастичность).
- VIF (Variance Inflation Factor) для мультиколлинеарности.
- Durbin-Watson для автокорреляции (важно для time series).
Logistic regression проверяй:
- Multicollinearity (VIF).
- Linearity of logit — отношение log-odds к фичам линейно.
- No outliers/high leverage points.
- Adequate sample size — дефолт правило: ≥ 10 событий на каждую фичу (rule of thumb).
Частые ошибки
Считать wᵢ в logistic regression «изменением вероятности». Это log-odds, не вероятность. Используй exp(wᵢ) для odds ratio.
Не масштабировать фичи для regularization. L2 будет жёстче штрафовать колонки с большими значениями.
Linear regression на бинарном target. Может работать, но даёт предсказания вне [0,1] и нарушает гомоскедастичность. Используй logistic.
Logistic regression на multiclass без softmax. В sklearn по умолчанию OvR (one-vs-rest). Для true multinomial — multi_class='multinomial', solver='lbfgs'.
Игнорировать имбаланс. На сильном дисбалансе logistic regression смещена. Помогают class_weight='balanced', threshold-tuning, AP-метрики.
Делать feature selection на test. Lasso для feature selection нужно делать на train (или CV), не подсматривая test.
**Сравнивать coefficients без standardization.** Без нормализации w_ageиw_income` несравнимы по «важности».
Использовать R² на logistic. R² для regression. Для classification — log-loss, AUC, F1, accuracy (если сбалансировано).
Связанные темы
- Регуляризация L1 и L2 на собесе DS
- Loss функции на собесе DS
- ROC-AUC vs PR-AUC на собесе DS
- Bias-variance trade-off на собесе DS
- Подготовка к собесу Data Scientist
FAQ
Можно ли использовать MSE в logistic regression?
Технически — да, но получится non-convex loss с плохими свойствами. Log-loss выводится из MLE Bernoulli и даёт convex optimization.
Зачем sigmoid, а не другая функция?
Потому что sigmoid обратна к log-odds (logit link function). Это естественный link для Bernoulli в семействе GLM. Альтернативы — probit (CDF нормали), но интерпретация хуже.
Когда linear regression лучше деревьев?
На малых данных, при линейной связи, при нужде в интерпретации коэффициентов и доверительных интервалах. Деревья на маленьких данных переобучаются.
Что такое perfect separation в logistic?
Когда фича идеально разделяет классы — коэффициент стремится к бесконечности, loss идёт в 0 без сходимости. Лечение: регуляризация.
Линеарная регрессия может предсказать вне [0,1]?
Да, легко. Поэтому на binary target она плоха — предсказывает -0.3 или 1.5. Logistic ограничена sigmoid.
Это официальная информация?
Нет. Статья основана на классических работах (Hastie 2009 «ESL», Bishop 2006 «PRML»), документации scikit-learn.
Тренируйте Data Science — откройте тренажёр с 1500+ вопросами для собесов.