Ответ
Линейные модели основаны на предположении о линейной зависимости между признаками и целевой переменной. Основные формулы:
-
Линейная регрессия:
y = β₀ + β₁x₁ + β₂x₂ + ... + βₙxₙ + εy— предсказываемое значение (целевая переменная).β₀— свободный член (intercept).β₁...βₙ— коэффициенты (веса) признаков.x₁...xₙ— независимые переменные (признаки).ε— ошибка (шум), обычно предполагается нормально распределённой.
-
Логистическая регрессия (для бинарной классификации): Использует логистическую (сигмоидную) функцию для преобразования линейной комбинации в вероятность.
p(y=1 | x) = σ(z) = 1 / (1 + e^{-z}), гдеz = β₀ + β₁x₁ + ... + βₙxₙp(y=1 | x)— вероятность принадлежности к классу 1.σ(z)— сигмоидная функция, отображающаяzв интервал (0, 1).
-
Функция потерь (MSE для регрессии):
MSE = (1/n) * Σ(y_i - ŷ_i)²Минимизация MSE методом наименьших квадратов даёт аналитическое решение дляβ. -
Функция потерь (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) часто являются сильным базовым решением, интерпретируемым и устойчивым к переобучению.