Это один из основных инструментов в машинном обучении, используемых для решения задач регрессии и классификации. Обучение линейных моделей включает в себя нахождение оптимальных весов для предсказания целевой переменной как линейной комбинации входных признаков. Рассмотрим этот процесс более подробно.
🟠Математическая формулировка
Для набора данных с входными признаками \(X\) (матрица размера \(n \times p\), где \(n\) — количество примеров, \(p\) — количество признаков) и целевыми значениями \(y\) (вектор размера \(n\)), линейная модель предсказывает \(y\) как:
\[ \hat{y} = Xw + b \]
где \(w\) — вектор весов размера \(p\), а \(b\) — скалярное смещение (bias).
🟠Функция потерь
Чтобы найти оптимальные значения \(w\) и \(b\), необходимо определить функцию потерь, которая минимизируется. В зависимости от задачи это может быть:
Среднеквадратичная ошибка (MSE) для регрессии: \( L = \frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2 \)
Логистическая потеря для классификации: \( L = -\frac{1}{n} \sum_{i=1}^n [y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i)] \)
🟠Оптимизация
Для нахождения оптимальных \(w\) и \(b\), минимизирующих функцию потерь, обычно используется один из следующих методов:
Метод наименьших квадратов: Прямой математический метод, решающий уравнение \(X^T X w = X^T y\) (может включать регуляризацию).
🟠Регуляризация
Для предотвращения переобучения часто используют ее:
L1-регуляризация (Lasso): добавление к функции потерь члена \(\lambda \|w\|_1\), где \(\lambda\) — параметр регуляризации.
L2-регуляризация (Ridge): добавление к функции потерь члена \(\lambda \|w\|^2_2\).
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# Загрузка данных
data = load_boston()
X = data.data
y = data.target
# Разделение данных на обучающую и тестовую выборку
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Создание и обучение модели
model = LinearRegression()
model.fit(X_train, y_train)
# Предсказание и оценка модели
y
_pred = model.predict(X_test)
print("MSE:", mean_squared_error(y_test, y_pred))
Ставь 👍 и забирай 📚 Базу знаний