简介
在本实验中,我们将探索 scikit-learn 中的线性模型。线性模型是用于回归和分类任务的一组方法。它们假设目标变量是特征的线性组合。由于其简单性和可解释性,这些模型在机器学习中被广泛使用。
我们将涵盖以下主题:
- 普通最小二乘法
- 岭回归
- Lasso
- 逻辑回归
- 随机梯度下降
- 感知机
如果你没有机器学习的任何先验经验,请从 监督学习:回归 开始。
虚拟机提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。
普通最小二乘法
如果你没有机器学习的任何先验经验,请从 监督学习:回归 开始。
普通最小二乘法(OLS)是一种线性回归方法,它使观测目标与预测目标之间的平方差之和最小化。在数学上,它解决的是如下形式的问题: $$\min_{w} || X w - y||_2^2$$
让我们开始使用 OLS 拟合一个线性回归模型。
from sklearn import linear_model
reg = linear_model.LinearRegression()
X = [[0, 0], [1, 1], [2, 2]]
y = [0, 1, 2]
reg.fit(X, y)
print(reg.coef_)
- 我们从 scikit-learn 中导入
linear_model模块。 - 我们创建一个
LinearRegression的实例。 - 我们使用
fit方法将模型拟合到训练数据上。 - 我们打印线性模型的系数。
岭回归
岭回归是一种线性回归方法,它在普通最小二乘目标函数中添加了一个惩罚项。这个惩罚项通过将系数向零收缩来帮助减少过拟合。模型的复杂度可以通过正则化参数来控制。
让我们拟合一个岭回归模型。
reg = linear_model.Ridge(alpha=0.5)
reg.fit([[0, 0], [0, 0], [1, 1]], [0, 0.1, 1])
print(reg.coef_)
- 我们创建一个
Ridge实例,将正则化参数alpha设置为 0.5。 - 我们使用
fit方法将模型拟合到训练数据上。 - 我们打印岭回归模型的系数。
Lasso
Lasso 是一种线性回归方法,它在普通最小二乘目标函数中添加了一个惩罚项。该惩罚项具有将某些系数精确设置为零的效果,从而实现特征选择。Lasso 可用于稀疏模型估计。
让我们拟合一个 Lasso 模型。
reg = linear_model.Lasso(alpha=0.1)
reg.fit([[0, 0], [1, 1]], [0, 1])
print(reg.coef_)
- 我们创建一个
Lasso实例,将正则化参数alpha设置为 0.1。 - 我们使用
fit方法将模型拟合到训练数据上。 - 我们打印 Lasso 模型的系数。
逻辑回归
逻辑回归是一种分类方法,它使用逻辑函数来估计可能结果的概率。它通常用于二元分类任务。逻辑回归也可以扩展以处理多类分类问题。
让我们拟合一个逻辑回归模型。
clf = linear_model.LogisticRegression(random_state=0).fit(X, y)
print(clf.coef_)
- 我们创建一个
LogisticRegression实例,将random_state参数设置为 0。 - 我们使用
fit方法将模型拟合到训练数据上。 - 我们打印逻辑回归模型的系数。
随机梯度下降(SGD)
随机梯度下降(SGD)是一种用于训练线性模型的简单而高效的方法。当样本数量和特征数量非常大时,它特别有用。SGD 在每次迭代时使用一小部分训练数据来更新模型参数,这使得它适用于在线学习和核外学习。
让我们使用 SGD 拟合一个逻辑回归模型。
clf = linear_model.SGDClassifier(loss="log_loss", max_iter=1000)
clf.fit(X, y)
print(clf.coef_)
- 我们创建一个
SGDClassifier实例,将loss参数设置为 "log_loss" 以执行逻辑回归。 - 我们使用
fit方法将模型拟合到训练数据上。 - 我们打印使用 SGD 获得的逻辑回归模型的系数。
感知机
感知机是一种简单的线性分类算法,适用于大规模学习。它仅在出现错误时更新其模型,这使得它比使用铰链损失的随机梯度下降(SGD)训练速度更快。得到的模型也更稀疏。
让我们拟合一个感知机模型。
clf = linear_model.Perceptron(alpha=0.1)
clf.fit(X, y)
print(clf.coef_)
- 我们创建一个
Perceptron实例,将正则化参数alpha设置为 0.1。 - 我们使用
fit方法将模型拟合到训练数据上。 - 我们打印感知机模型的系数。
总结
在本实验中,我们探索了 scikit-learn 中的线性模型。我们了解了普通最小二乘法、岭回归、套索回归、逻辑回归、随机梯度下降和感知机。这些模型可用于回归和分类任务。我们还看到了如何使用各种算法和技术(如在线学习和特征选择)来拟合这些模型。