Введение
В этом лабе мы научимся использовать Регуляризацию Тихонова (Ridge Regression) для линейной регрессии с L2-регуляризацией, чтобы предотвратить переобучение. Мы будем использовать scikit-learn, популярную библиотеку машинного обучения для Python.
Советы по работе с ВМ
После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Валидация операций не может быть автоматизирована из-за ограничений в Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импортируем необходимые библиотеки
Начнем с импорта необходимых библиотек для этого лаб.
import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import make_regression
from sklearn.linear_model import Ridge
from sklearn.metrics import mean_squared_error
Генерируем случайные данные
Мы сгенерируем случайные данные с помощью функции make_regression из scikit-learn. Мы установим n_samples равным 10, n_features равным 10 и random_state равным 1. Эта функция вернет наши входные признаки X, наш целевой переменной y и истинные значения коэффициентов w.
X, y, w = make_regression(
n_samples=10, n_features=10, coef=True, random_state=1, bias=3.5
)
Инициализируем модель Регуляризации Тихонова (Ridge Regression)
Мы инициализируем модель Регуляризации Тихонова с ее стандартными гиперпараметрами.
clf = Ridge()
Обучаем модель с разными степенями регуляризации
Мы обучим модель с разными степенями регуляризации с использованием цикла. Мы установим степень регуляризации, изменив значение alpha в функции set_params. Мы сохраним коэффициенты и ошибки для каждого значения alpha.
coefs = []
errors = []
alphas = np.logspace(-6, 6, 200)
for a in alphas:
clf.set_params(alpha=a)
clf.fit(X, y)
coefs.append(clf.coef_)
errors.append(mean_squared_error(clf.coef_, w))
Построим графики результатов
Мы построим графики коэффициентов и ошибок в зависимости от степени регуляризации с использованием Matplotlib.
plt.figure(figsize=(20, 6))
plt.subplot(121)
ax = plt.gca()
ax.plot(alphas, coefs)
ax.set_xscale("log")
plt.xlabel("alpha")
plt.ylabel("weights")
plt.title("Ridge coefficients as a function of the regularization")
plt.axis("tight")
plt.subplot(122)
ax = plt.gca()
ax.plot(alphas, errors)
ax.set_xscale("log")
plt.xlabel("alpha")
plt.ylabel("error")
plt.title("Coefficient error as a function of the regularization")
plt.axis("tight")
plt.show()
Резюме
В этом практическом занятии мы узнали, как использовать Регуляризацию Тихонова (Ridge Regression) с L2-регуляризацией для предотвращения переобучения. Мы сгенерировали случайные данные, обучили модель Регуляризации Тихонова с разными степенями регуляризации и построили графики коэффициентов и ошибок в зависимости от степени регуляризации.