Scikit - 学习岭回归示例

Beginner

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

简介

本实验展示了如何使用岭回归(Ridge Regression)来估计一个估计器的共线系数。岭回归是一种线性回归,它对模型应用 L2 正则化。

在这个例子中,我们将生成一个 10x10 的希尔伯特矩阵(Hilbert matrix),并使用岭回归来估计该矩阵的系数。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”(Notebook)标签页,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会及时为你解决问题。

导入所需库

在这一步中,我们将导入此示例所需的库。

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

生成数据

在这一步中,我们将生成一个 10x10 的希尔伯特矩阵,并将目标变量 y 设置为全为 1 的向量。

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])  ## 反转坐标轴
plt.xlabel("alpha")
plt.ylabel("weights")
plt.title("Ridge coefficients as a function of the regularization")
plt.axis("tight")
plt.show()

总结

在本实验中,我们展示了如何使用岭回归来估计一个估计器的共线系数。我们生成了一个 10x10 的希尔伯特矩阵,并使用岭回归来估计该矩阵的系数。然后,我们可视化了岭回归路径的结果。岭回归对于减少高度病态矩阵中的变化(噪声)很有用。通过设置一定的正则化强度,我们可以平衡正则化的效果和平方损失函数。