Какие основные формулы линейных моделей в машинном обучении вы знаете?

«Какие основные формулы линейных моделей в машинном обучении вы знаете?» — вопрос из категории Классическое ML, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Линейные модели основаны на предположении о линейной зависимости между признаками и целевой переменной. Основные формулы:

  1. Линейная регрессия: y = β₀ + β₁x₁ + β₂x₂ + ... + βₙxₙ + ε

    • y — предсказываемое значение (целевая переменная).
    • β₀ — свободный член (intercept).
    • β₁...βₙ — коэффициенты (веса) признаков.
    • x₁...xₙ — независимые переменные (признаки).
    • ε — ошибка (шум), обычно предполагается нормально распределённой.
  2. Логистическая регрессия (для бинарной классификации): Использует логистическую (сигмоидную) функцию для преобразования линейной комбинации в вероятность. p(y=1 | x) = σ(z) = 1 / (1 + e^{-z}), где z = β₀ + β₁x₁ + ... + βₙxₙ

    • p(y=1 | x) — вероятность принадлежности к классу 1.
    • σ(z) — сигмоидная функция, отображающая z в интервал (0, 1).
  3. Функция потерь (MSE для регрессии): MSE = (1/n) * Σ(y_i - ŷ_i)² Минимизация MSE методом наименьших квадратов даёт аналитическое решение для β.

  4. Функция потерь (Log Loss для логистической регрессии): Log Loss = - (1/n) * Σ [y_i * log(p_i) + (1 - y_i) * log(1 - p_i)]

Практический пример с регуляризацией (scikit-learn):

from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler

# Масштабирование признаков для стабильности работы регуляризации
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)

# L1-регуляризация (Lasso) может обнулять коэффициенты, выполняя отбор признаков
model_l1 = LogisticRegression(penalty='l1', solver='liblinear', C=0.1)
model_l1.fit(X_train_scaled, y_train)
print("Коэффициенты (L1):", model_l1.coef_)

# L2-регуляризация (Ridge) уменьшает величину коэффициентов, но не обнуляет их
model_l2 = LogisticRegression(penalty='l2', C=1.0)
model_l2.fit(X_train_scaled, y_train)
print("Коэффициенты (L2):", model_l2.coef_)

Ключевой вывод: Несмотря на простоту, линейные модели с регуляризацией (L1/L2) часто являются сильным базовым решением, интерпретируемым и устойчивым к переобучению.