化防止过度拟合的方法是正则化(组图)

正则化

防止过拟合的方法之一是正则化。回想一下我之前写的一篇文章:不必要的模型复杂度是过拟合的根本原因。正则化为我们试图最小化的误差函数添加了额外的参数,以惩罚复杂的模型。

根据奥卡姆剃刀法则,更简单的方法将受到青睐。威廉·奥卡姆(William Occam)是一位僧侣和哲学家,他在 1320 年左右提出了一个想法,即应优先考虑适合数据的最简单假设。原因之一是简单模型不如复杂模型直观。例如,我们直观地知道,高多项式模型比线性模型要多。原因是一条线 (y = ax + b) 仅由两个参数控制 – 截距 b 和斜率 a。一条线的可能系数跨越一个二维空间。二次多项式为二次项添加了一个额外的系数,我们可以使用它来跨越一个三维空间。因此,由于其搜索空间远大于线性模型,因此更容易找到具有高阶多项式函数的模型,该模型完美地捕获了所有训练数据点。然而,这些现成的模型不如线性模型通用,而且模型更容易过拟合。此外,更简单的模型需要更少的计算时间。下图展示了我们如何尝试分别对数据拟合一个线性函数和一个高阶多项式函数:

我们可以看到线性模型是可取的,因为它可以更好地泛化到基础分布中的其他数据点。

介绍这么多是为了让你明白为什么我们要简单模型而惩罚复杂模型。

通过对 施加惩罚,我们可以使用正则化来减少高阶多项式项的影响,从而防止模型复杂性。

现在,让我举一个例子来更好地理解模型复杂性的不良影响:

一位数据科学家想让他的机器人看门狗识别陌生人和他的朋友。他使用以下学习样本进行训练:

机器狗可能很快就会学会以下规则:一个身高差不多的中年女性,身着黑色不戴眼镜,是陌生人;一个不戴眼镜的矮个子老人是个陌生人;其他人都是他的朋友。尽管这些数据完全适合训练数据,但它们似乎过于复杂,无法很好地推广给新访问者。在这一点上,数据科学家限制了学习过程。一个可能对数百名其他访客更有效的宽松规则可能是:任何穿着黑色不戴眼镜的人都是陌生人。

除了惩罚复杂性之外,我们还可以使用正则化来提前停止训练过程。如果我们限制模型学习的时间或设置一些内部停止条件机器学习防止过拟合,则更有可能生成更简单的模型。这样我们可以控制模型的复杂性并减少过拟合。这种方法在机器学习中称为提前停止。

最后值得一提的是,正则化应该保持在适当的水平。正则化太少,效果太小;过多的正则化会导致欠拟合,因为它会使模型偏离实际的训练数据。后面我会讲如何实现最优的正则化。

特征选择和降维

我们通常以矩阵或 Dataframe 的形式表示数据机器学习防止过拟合,其中每一列代表一个变量,我们在机器学习中称之为特征。在监督学习中,有一个变量实际上不是特征,而是我们试图预测的标签。在监督学习中,每一行数据都是我们可以用于训练或测试的样本。特征的数量对应于数据的维度。我们的机器学习方法取决于维度的数量和样本的数量。例如,文本和图像数据的维数较高,而股市数据的维数相对较少。拟合高维数据在计算上是昂贵的,并且由于高复杂度而容易过度拟合。更高的维度也无法可视化,因此我们无法判断拟合程度。

并非所有功能都被使用,并且某些功能可能只是为结果添加随机性。因此,做好特征选择通常很重要。特征选择是选择重要特征子集以更好地构建模型的过程。实际上,并非数据集中的每个特征都带有可用于区分样本的信息。有些特征要么是多余的,要么是不相关的,因此可以被丢弃。

原则上,特征选择归结为多个二元决策:我们是否希望在模型中包含此特征。对于 n 个特征,我们得到 2**n 个特征集,对于大量特征来说,这可能是一个非常大的数字。例如,对于 10 个特征,我们有 1,024 个可能的特征集(例如,如果我们要决定穿什么,可用的特征估计是温度、降雨量、天气预报、旅行路线等)。在某些时候,简单地包含所有功能是不可行的。基本上,此时我们有两种选择:要么从包含的所有功能开始并迭代删除一些功能,要么从最小的功能集开始并迭代添加功能。然后,我们为每次迭代获取最佳特征集并进行比较。

降维是另一种常见的特征选择方法。原理是将高维数据映射到低维空间。这种转变会导致信息丢失,但我们可以将损失最小化。我将在以后的文章中详细介绍。

感谢您耐心阅读。发表这些东西的主要目的是督促自己。希望大家多多关注评论,指出不足,共同进步。我会写很详细的内容,一个目的是为了让零基础也能看懂,因为我没有从零开始的Python基础知识。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论