Пример Регуляризованной линейной регрессии (Ridge Regression) с использованием Scikit-Learn

Machine LearningMachine LearningBeginner
Практиковаться сейчас

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии показано, как использовать Регуляризованную линейную регрессию (Ridge Regression) для оценки коэффициентов, которые могут быть линейно зависимы. Ridge Regression - это линейная регрессия, которая применяет L2-регуляризацию к модели.

В этом примере мы сгенерируем матрицу Гильберта размером 10x10 и применим Ridge Regression для оценки коэффициентов этой матрицы.

Советы по использованию ВМ

После запуска ВМ кликните в верхнем левом углу, чтобы переключиться на вкладку Notebook и приступить к практике в Jupyter Notebook.

Иногда может потребоваться подождать несколько секунд, пока Jupyter Notebook полностью загрузится. Проверка операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы столкнетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49270{{"Пример Регуляризованной линейной регрессии (Ridge Regression) с использованием Scikit-Learn"}} end

Импортируем необходимые библиотеки

В этом шаге мы импортируем необходимые библиотеки для данного примера.

import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model

Генерируем данные

В этом шаге мы сгенерируем матрицу Гильберта размером 10x10 и зададим целевую переменную y в виде вектора, состоящего из единиц.

X = 1.0 / (np.arange(1, 11) + np.arange(0, 10)[:, np.newaxis])
y = np.ones(10)

Вычисляем пути Регуляризованной линейной регрессии (Ridge Regression)

В этом шаге мы вычислим пути Регуляризованной линейной регрессии для различных значений коэффициента регуляризации.

n_alphas = 200
alphas = np.logspace(-10, -2, n_alphas)

coefs = []
for a in alphas:
    ridge = linear_model.Ridge(alpha=a, fit_intercept=False)
    ridge.fit(X, y)
    coefs.append(ridge.coef_)

Визуализируем результаты

В этом шаге мы визуализируем результаты путей Регуляризованной линейной регрессии (Ridge Regression).

ax = plt.gca()

ax.plot(alphas, coefs)
ax.set_xscale("log")
ax.set_xlim(ax.get_xlim()[::-1])  ## reverse axis
plt.xlabel("alpha")
plt.ylabel("weights")
plt.title("Ridge coefficients as a function of the regularization")
plt.axis("tight")
plt.show()

Резюме

В этом практическом занятии мы показали, как использовать Регуляризованную линейную регрессию (Ridge Regression) для оценки коэффициентов, которые могут быть линейно зависимы. Мы сгенерировали матрицу Гильберта размером 10x10 и использовали Регуляризованную линейную регрессию для оценки коэффициентов этой матрицы. Затем мы визуализировали результаты путей Регуляризованной линейной регрессии. Регуляризованная линейная регрессия полезна для уменьшения вариации (шума) в сильно плохообусловленных матрицах. Задав определенную силу регуляризации, мы можем достичь баланса между эффектом регуляризации и квадратичной функцией потерь.