岭回归系数随正则化函数的变化而变化#

展示了估计器系数中共线性的影响。

此示例中使用的估计器是岭回归。每种颜色代表系数向量的不同特征,并显示为正则化参数的函数。

此示例还展示了将岭回归应用于高度病态矩阵的有用性。对于此类矩阵,目标变量的微小变化可能导致计算出的权重发生巨大变化。在这种情况下,设置一定的正则化(alpha)以减少这种变化(噪声)很有用。

当 alpha 非常大时,正则化效果主导平方损失函数,系数趋于零。在路径末端,随着 alpha 趋于零且解趋于普通最小二乘,系数表现出很大的振荡。在实践中,有必要调整 alpha 以保持两者之间的平衡。

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

import matplotlib.pyplot as plt
import numpy as np

from sklearn import linear_model

# X is the 10x10 Hilbert matrix
X = 1.0 / (np.arange(1, 11) + np.arange(0, 10)[:, np.newaxis])
y = np.ones(10)

计算路径#

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_)

显示结果#

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 vs Regularization Strength (alpha)")
plt.axis("tight")
plt.legend(
    [f"Feature {i + 1}" for i in range(X.shape[1])], loc="best", fontsize="small"
)
plt.show()
Ridge Coefficients vs Regularization Strength (alpha)

脚本总运行时间: (0 分钟 0.309 秒)

相关示例

岭系数作为 L2 正则化的函数

岭系数作为 L2 正则化的函数

HuberRegressor vs Ridge 在具有强离群点的数据集上的比较

HuberRegressor vs Ridge 在具有强离群点的数据集上的比较

模型正则化对训练和测试误差的影响

模型正则化对训练和测试误差的影响

线性模型系数解释中的常见陷阱

线性模型系数解释中的常见陷阱

由 Sphinx-Gallery 生成的图库