Spec-Zone.ru › scikit-learn

Примечание

Перейти в конец, чтобы скачать полный код примера или запустить этот пример в браузере с помощью JupyterLite или Binder.

Коэффициенты Ridge в зависимости от L2-регуляризации

Модель, которая переобучается, слишком хорошо усваивает обучающие данные, улавливая как основные закономерности, так и шум. Однако при применении к данным, которые ей ранее не встречались, выявленные зависимости могут не сохраниться. Обычно это становится заметно, когда мы проверяем прогнозы обученной модели на тестовых данных и видим, что статистические показатели качества значительно хуже, чем на обучающих данных.

Один из способов справиться с переобучением — регуляризация. В линейных моделях для этого можно штрафовать большие веса (коэффициенты), заставляя модель уменьшать все коэффициенты. Регуляризация снижает зависимость модели от отдельных сведений, полученных из обучающих выборок.

В этом примере показано, как L2-регуляризация в регрессии Ridge влияет на качество модели за счёт добавления к функции потерь штрафного слагаемого, растущего вместе с коэффициентами \(\beta\).

Функция потерь с регуляризацией задаётся следующим образом: \(\mathcal{L}(X, y, \beta) = \| y - X \beta \|^{2}_{2} + \alpha \| \beta \|^{2}_{2}\)

Здесь \(X\) — входные данные, \(y\) — целевая переменная, \(\beta\) — вектор коэффициентов, соответствующих признакам, а \(\alpha\) — сила регуляризации.

Функция потерь с регуляризацией помогает найти баланс между точным предсказанием обучающей выборки и предотвращением переобучения.

В этой функции потерь левая часть (например, \(\|y - X\beta\|^{2}_{2}\)) измеряет квадрат разности между фактическим значением целевой переменной \(y\) и предсказанными значениями. Минимизация только этого слагаемого может привести к переобучению: модель может стать слишком сложной и чувствительной к шуму в обучающих данных.

Чтобы устранить переобучение, регуляризация Ridge добавляет к функции потерь ограничение, называемое штрафным слагаемым (\(\alpha \| \beta\|^{2}_{2}\)). Это слагаемое представляет собой сумму квадратов коэффициентов модели, умноженную на силу регуляризации \(\alpha\). Такое ограничение не позволяет отдельному коэффициенту \(\beta_{i}\) принимать чрезмерно большие значения и способствует уменьшению коэффициентов и более равномерному распределению их значений. При больших значениях \(\alpha\) коэффициенты стремятся к нулю. Однако чрезмерно большое значение \(\alpha\) может привести к недообучению модели, которая не сможет выявить важные закономерности в данных.

Таким образом, функция потерь с регуляризацией объединяет слагаемое, отвечающее за точность предсказаний, и штрафное слагаемое. Изменяя силу регуляризации, специалисты могут настраивать степень ограничений на веса и обучать модель, способную хорошо обобщать данные, которые ей ранее не встречались, не допуская переобучения.

# Authors: The scikit-learn developers
# SPDX-License-Identifier: BSD-3-Clause

Цель этого примера

Чтобы показать, как работает регуляризация Ridge, мы создадим набор данных без шума. Затем обучим модели с регуляризацией при разных значениях силы регуляризации (\(\alpha\)) и построим графики коэффициентов обученных моделей и среднеквадратичной ошибки между ними и исходными значениями в зависимости от силы регуляризации.

Создание набора данных без шума

Мы создадим учебный набор данных из 100 образцов и 10 признаков, подходящий для задачи регрессии. Из 10 признаков 8 информативны и влияют на результат регрессии, а оставшиеся 2 не влияют на целевую переменную (их истинные коэффициенты равны 0). Обратите внимание: в этом примере данные не содержат шума, поэтому можно ожидать, что наша регрессионная модель точно восстановит истинные коэффициенты w.

from sklearn.datasets import make_regression

X, y, w = make_regression(
    n_samples=100, n_features=10, n_informative=8, coef=True, random_state=1
)

# Obtain the true coefficients
print(f"The true coefficient of this regression problem are:\n{w}")
The true coefficient of this regression problem are:
[38.32634568 88.49665188  0.         29.75747153  0.         19.08699432
 25.44381023 38.69892343 49.28808734 71.75949622]

Обучение регрессора Ridge

Мы используем Ridge — линейную модель с L2-регуляризацией. Мы обучаем несколько моделей, задавая каждой новое значение параметра модели alpha. Это положительная константа, на которую умножается штрафное слагаемое; она определяет силу регуляризации. Для каждой обученной модели мы вычисляем ошибку между истинными коэффициентами w и коэффициентами, найденными моделью clf. Мы сохраняем найденные коэффициенты и рассчитанные для них ошибки в списках, чтобы затем построить графики.

import numpy as np

from sklearn.linear_model import Ridge
from sklearn.metrics import mean_squared_error

clf = Ridge()

# Generate values for `alpha` that are evenly distributed on a logarithmic scale
alphas = np.logspace(-3, 4, 200)
coefs = []
errors_coefs = []

# Train the model with different regularisation strengths
for a in alphas:
    clf.set_params(alpha=a).fit(X, y)
    coefs.append(clf.coef_)
    errors_coefs.append(mean_squared_error(clf.coef_, w))

Построение графиков обученных коэффициентов и среднеквадратичных ошибок

Теперь построим график 10 различных коэффициентов с регуляризацией в зависимости от параметра регуляризации alpha. Каждый цвет будет соответствовать отдельному коэффициенту.

Справа построим график изменения ошибок коэффициентов оценивателя в зависимости от регуляризации.

import matplotlib.pyplot as plt
import pandas as pd

alphas = pd.Index(alphas, name="alpha")
coefs = pd.DataFrame(coefs, index=alphas, columns=[f"Feature {i}" for i in range(10)])
errors = pd.Series(errors_coefs, index=alphas, name="Mean squared error")

fig, axs = plt.subplots(1, 2, figsize=(20, 6))

coefs.plot(
    ax=axs[0],
    logx=True,
    title="Ridge coefficients as a function of the regularization strength",
)
axs[0].set_ylabel("Ridge coefficient values")
errors.plot(
    ax=axs[1],
    logx=True,
    title="Coefficient error as a function of the regularization strength",
)
_ = axs[1].set_ylabel("Mean squared error")
Ridge coefficients as a function of the regularization strength, Coefficient error as a function of the regularization strength

Интерпретация графиков

На графике слева показано, как сила регуляризации (alpha) влияет на коэффициенты регрессии Ridge. При небольших значениях alpha (слабая регуляризация) коэффициенты близки к истинным значениям коэффициентов (w), использованным для создания набора данных. Это объясняется тем, что в искусственный набор данных не добавлялся шум. По мере увеличения alpha коэффициенты стремятся к нулю, постепенно уменьшая влияние признаков, которые ранее были более значимыми.

На графике справа показана среднеквадратичная ошибка (MSE) между коэффициентами, найденными моделью, и истинными коэффициентами (w). Она позволяет оценить, насколько модель Ridge соответствует истинной модели, породившей данные. Низкая ошибка означает, что найденные коэффициенты ближе к коэффициентам истинной порождающей модели. В этом случае, поскольку наш учебный набор данных не содержал шума, видно, что модель с самой слабой регуляризацией находит коэффициенты, наиболее близкие к истинным значениям (w) (ошибка близка к 0).

При небольшом значении alpha модель улавливает тонкие особенности обучающих данных, независимо от того, вызваны они шумом или действительно несут полезную информацию. По мере увеличения alpha наибольшие коэффициенты быстрее стремятся к нулю, и соответствующие признаки оказывают меньшее влияние на процесс обучения. Это может улучшить способность модели обобщать данные, которые ей ранее не встречались (если в них было много шума), но также создаёт риск снижения качества, если регуляризация слишком сильна по сравнению с уровнем шума в данных (как в этом примере).

В реальных задачах данные обычно содержат шум, поэтому выбор подходящего значения alpha крайне важен для достижения баланса между переобучением и недообучением модели.

Здесь мы увидели, что Ridge добавляет штраф к коэффициентам, помогая бороться с переобучением. Ещё одна проблема связана с наличием выбросов в обучающем наборе данных. Выброс — это точка данных, которая значительно отличается от остальных наблюдений. В частности, такие выбросы влияют на левое слагаемое функции потерь, рассмотренной выше. Некоторые другие линейные модели устойчивы к выбросам, например HuberRegressor. Подробнее об этом можно узнать в примере HuberRegressor и Ridge на наборе данных с большим количеством выбросов.

Общее время выполнения скрипта: (0 минут 0.668 секунды)

Launch binder
Launch JupyterLite

Download Jupyter notebook: plot_ridge_coeffs.ipynb

Download Python source code: plot_ridge_coeffs.py

Download zipped: plot_ridge_coeffs.zip

Связанные примеры

График коэффициентов Ridge в зависимости от регуляризации

Влияние регуляризации модели на ошибку на обучающих и тестовых данных

Типичные ошибки при интерпретации коэффициентов линейных моделей

Траектория регуляризации логистической регрессии с L1-регуляризацией

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/auto_examples/linear_model/plot_ridge_coeffs.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API