Scikit - 学习岭回归示例

Machine LearningMachine LearningBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

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

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

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”(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{{"Scikit - 学习岭回归示例"}} end

导入所需库

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

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 的希尔伯特矩阵,并使用岭回归来估计该矩阵的系数。然后,我们可视化了岭回归路径的结果。岭回归对于减少高度病态矩阵中的变化(噪声)很有用。通过设置一定的正则化强度,我们可以平衡正则化的效果和平方损失函数。