点击上方关注,All in AI中国

作者:Animesh Agarwal

这篇文章需要线性回归的先验知识。如果你不了解线性回归或需要更新知识,请阅读本系列的前几篇文章。

•使用Python的线性回归

https://towardsdatascience.com/linear-regression-using-python-b136c91bf0a2

•波士顿住房数据集的线性回归

https://towardsdatascience.com/linear-regression-on-boston-housing-dataset-f409b7e4a155

线性回归要求因变量和自变量之间的关系是线性的。如果数据的分布更复杂,如下图所示?该怎么办?线性模型可以用于拟合非线性数据吗?我们如何生成最佳捕获数据的曲线,如下图所示?好吧,我们将在这篇文章中回答这些问题。

目录表

•为何使用多项式回归

•过度拟合VS欠拟合

•偏差与方差权衡

•将多项式回归应用于波士顿住房数据集。

为什么采用多项式回归?

为了理解多项式回归的必要性,让我们先生成一些随机数据集。

多元回归分析是干嘛的(多项式回归的那些事儿)(1)

生成的数据看起来像

多元回归分析是干嘛的(多项式回归的那些事儿)(2)

让我们将线性回归模型应用于此数据集。

多元回归分析是干嘛的(多项式回归的那些事儿)(3)

最佳拟合线的曲线是

多元回归分析是干嘛的(多项式回归的那些事儿)(4)

我们可以看到直线无法捕获数据中的模式。这是一个欠拟合的例子。计算线性线的RMSE和R2得分给出:

多元回归分析是干嘛的(多项式回归的那些事儿)(5)

为了克服欠拟合,我们需要增加模型的复杂性。

为了生成更高阶的方程,我们可以将原始特征的功能添加为新特征。

线性模型为

多元回归分析是干嘛的(多项式回归的那些事儿)(6)

可以转化为

多元回归分析是干嘛的(多项式回归的那些事儿)(7)

这仍然被认为是线性模型,因为与特征相关联的系数/权重仍然是线性的。X2只是一个特征。然而,我们拟合的曲线本质上是二次曲线。

要将原始要素转换为更高阶的术语,我们将使用scikit-learn提供的PolynomialFeatures类。

多元回归分析是干嘛的(多项式回归的那些事儿)(8)

多元回归分析是干嘛的(多项式回归的那些事儿)(9)

多元回归分析是干嘛的(多项式回归的那些事儿)(10)

接下来,我们使用线性回归训练模型。

多元回归分析是干嘛的(多项式回归的那些事儿)(11)

生成多项式特征(这里是二次多项式)

多元回归分析是干嘛的(多项式回归的那些事儿)(12)

我们可以看到,与线性相比,RMSE减少了,R2分数增加了。

如果我们尝试将三次曲线(degree= 3)拟合到数据集,我们可以看到它比二次曲线和线性曲线通过更多的数据点。

多元回归分析是干嘛的(多项式回归的那些事儿)(13)

三次曲线的指标是

多元回归分析是干嘛的(多项式回归的那些事儿)(14)

下面是数据集上拟合线性,二次和三次曲线的比较。

多元回归分析是干嘛的(多项式回归的那些事儿)(15)

如果我们进一步将阶数增加到20,我们可以看到曲线通过更多数据点。下面是3次曲线和20次曲线的比较。

多元回归分析是干嘛的(多项式回归的那些事儿)(16)

对于degree= 20,模型还捕获数据中的噪声。这是一个过度拟合的例子。即使这个模型传递了大部分数据,它也无法推广看不见的数据。

为了防止过度拟合,我们可以添加更多的训练样本,以便算法不会学习系统中的噪声并且可以变得更加通用。(注意:如果数据本身就是噪声,则添加更多数据可能会成为问题)。

我们如何选择最佳模型?要回答这个问题,我们需要了解偏差与方差的权衡。

偏差与方差的权衡

偏差是指由于模型在拟合数据时的简单假设而导致的误差。高偏差意味着模型无法捕获数据中的模式,这导致欠拟合。

下图总结了我们的学习经历。

多元回归分析是干嘛的(多项式回归的那些事儿)(17)

从下图可以看出,随着模型复杂度的增加,偏差减小,方差增大,反之亦然在。理想情况下,机器学习模型应具有低方差和低偏差。但实际上两者都不可能。因此,为了实现在训练和看不见的数据上都表现良好的模型,需要进行权衡。

多元回归分析是干嘛的(多项式回归的那些事儿)(18)

资料来源:http://scott.fortmann-roe.com/docs/BiasVarian

到目前为止,我们已经涵盖了多项式回归背后的大部分理论。现在,让我们在上一篇博客中分析的Boston Housing数据集中实现这些概念。

https://towardsdatascience.com/linear-regression-on-boston-housing-dataset-f409b7e4a155

将多项式回归应用于住房数据集

从下图可以看出,LSTAT与目标变量MEDV具有轻微的非线性变化。在训练模型之前,我们将原始特征转换为更高次多项式

多元回归分析是干嘛的(多项式回归的那些事儿)(19)

让我们定义一个函数,它将原始特征转换为给定度数的多项式特征,然后对其应用线性回归。

多元回归分析是干嘛的(多项式回归的那些事儿)(20)

多元回归分析是干嘛的(多项式回归的那些事儿)(21)

接下来,我们将阶数调为2的上述函数。

多元回归分析是干嘛的(多项式回归的那些事儿)(22)

使用多项式回归的模型的性能:

多元回归分析是干嘛的(多项式回归的那些事儿)(23)

这比我们在之前的博客中使用线性回归所获得的要好。

这就是这个故事的全部内容。这个Github库包含了这个博客的所有代码,可以在这里找到用于波士顿住房数据集的完整Jupyter笔记本。

https://github.com/animesh-agarwal/Machine-Learning-Datasets/blob/master/boston-housing/Polynomial_Regression.ipynb

结论

在本机器学习系列中,我们介绍了线性回归、多项式回归,并在Boston Housing数据集上实现了这两个模型。

多元回归分析是干嘛的(多项式回归的那些事儿)(24)

,