Регуляризация Тихонова (Ridge Regression) для линейной моделирования

Beginner

This tutorial is from open-source community. Access the source code

Введение

В этом лабе мы научимся использовать Регуляризацию Тихонова (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-регуляризацией для предотвращения переобучения. Мы сгенерировали случайные данные, обучили модель Регуляризации Тихонова с разными степенями регуляризации и построили графики коэффициентов и ошибок в зависимости от степени регуляризации.