过拟合根源以及如何规避

过拟合根源以及如何规避但不要担心:在本指南中,我们将向您介绍过度拟合的含义,如何在模型中发现它,以及如果您的模型过度拟合该怎么办。

大家好,欢迎来到IT知识分享网。

你知道吗,有一个错误……

……成千上万的数据科学初学者在不知不觉中承诺?

而这个错误可以一手毁掉你的机器学习模型?

不,这并不夸张。我们谈论的是应用机器学习中最棘手的障碍之一:过度拟合。

但不要担心:

在本指南中,我们将向您介绍过度拟合的含义,如何在模型中发现它,以及如果您的模型过度拟合该怎么办。

到最后,你将会知道如何一劳永逸地处理这个棘手的问题。

过度拟合的例子

假设我们想要预测学生是否会根据她的简历进行面试。

现在,假设我们从10,000份简历的数据集及其结果中训练模型。

接下来,我们在原始数据集上尝试模型,并以99%的准确度预测结果……哇!

但现在是坏消息

当我们在新的简历(”看不见的”)数据集上运行模型时,我们只能获得50%的准确度……呃 – 哦!

我们的模型并不是一概而论、从一而终,在看不见的数据上,比训练的时数据表现较差。

这被称为过拟合,这是机器学习和数据科学中的常见问题。

事实上,过度拟合一直发生在现实世界中。只需打开新闻频道即可听取示例:

过拟合根源以及如何规避

过度选举优先顺序

信号与噪声

你可能听说过Nate Silver 着名的《信号与噪音》一书。

在预测建模中,你可以将”信号”视为您希望从数据中学习的真正基础模式。

另一方面,”噪声”指的是数据集中无关的信息或随机性。

例如,假设您正在对儿童身高与年龄的关系进行建模。如果你对大部分人口进行抽样,会发现一个非常明确的关系:

过拟合根源以及如何规避

身高与年龄

这是信号。

但是,如果你只抽取一所当地学校作为样本,这种关系可能会更加混乱。它会受到异常值的影响(如父亲是NBA球员的孩子)和随机性(例如在不同年龄段进入青春期的孩子)。

噪音干扰信号

这就是机器学习的用武之地。功能良好的ML算法将信号与噪声分开。

如果算法过于复杂或灵活(例如,它具有太多的输入特征或者没有正确规范化),它最终可能”记忆噪声”而不是找到信号。

然后,该过度拟合模型将基于该噪声进行预测。它将在其训练数据上表现得非常好……但对于新的,看不见的数据却非常糟糕。

适合度

在统计学中,拟合优度是指模型的预测值与观察到的(真实)值的匹配程度。

学习噪声而不是信号的模型被认为是”过度拟合”,因为它适合训练数据集,但与新数据集的拟合度较差。

过拟合根源以及如何规避

黑线很好地拟合数据,绿线是过度拟合的

过度拟合与欠拟合

通过观察相反的问题,我们可以更好地理解过度拟合。

当模型过于简单时会发生欠拟合 – 由于功能太少或规则太多而无法通知 – 这使得从数据集中学习变得不灵活。

简单的学习者往往在预测方面的差异较小,但对错误结果的偏见更大。

另一方面,复杂的学习者往往在预测中有更多的变化。

偏差和方差都是机器学习中预测误差的形式。

通常,我们可以减少偏差引起的误差,但可能会因方差而增加误差,反之亦然。

太简单(高偏差)与过于复杂(高方差)之间的权衡是统计和机器学习中的关键概念,也是影响所有监督学习算法的关键概念。

过拟合根源以及如何规避

偏差与方差

如何检测过度拟合

机器学习的一个关键挑战是,在我们实际测试之前,我们无法知道模型对新数据的执行情况。

为了解决这个问题,我们可以将初始数据集拆分为单独的训练和测试子集。

过拟合根源以及如何规避

训练 – 测试分裂

此方法可以近似我们的模型在新数据上的表现。

如果我们的模型在训练集上比在测试集上做得好得多,那么我们可能会过度拟合。

例如,如果我们的模型在训练集上看到99%的准确度,但在测试集上只有55%的准确度,那将是一个很大的危险信号。

另一个提示是从一个非常简单的模型开始作为基准。

然后,当您尝试更复杂的算法时,你将有一个参考点来查看额外的复杂性是否值得。

这是Occam的剃刀测试。如果两个型号的性能相当,那么通常应该选择更简单的型号。

如何防止过度拟合

检测过拟合很有用,但它无法解决问题。幸运的是,你有几种方法可以尝试。

以下是一些最受欢迎的过度拟合解决方案:

1、交叉验证

交叉验证是针对过度拟合的强有力的预防措施。

这个想法很聪明:使用初始训练数据生成多个训练-测试分割。使用这些拆分来调整模型。

在标准的k折交叉验证中,我们将数据划分为k个子集,称为折叠。然后,我们在k-1折叠上迭代地训练算法,同时使用剩余的折叠作为测试集(称为”保持折叠”)。

过拟合根源以及如何规避

K-fold交叉验证

交叉验证允许你仅使用原始训练集来调整超参数。这使你可以将测试集保持为真正看不见的数据集,以便选择最终模型。

2、训练更多数据

它不会每次都有效,但是使用更多数据进行训练可以帮助算法更好地检测信号。

在早期的儿童身高与年龄建模的例子中,很明显如果抽样更多的学校将有助于您的模型。

当然,情况并非总是如此。如果我们只是添加更多噪声数据,这种技术将无济于事。

这就是为什么你应该始终确保你的数据干净和相关。

3、删除特征

一些算法具有内置的特征选择。

可以通过删除不相关的输入特征来手动提高其通用性。

一个有趣的方法是讲述每个功能如何适合模型的故事。这就像数据科学家对软件工程师的技术一样,他们通过逐行解释代码。

如果很难证明某些特征是合理的,那么删除特征是识别它们的好方法。此外,还可以使用多种功能选择启发式算法来获得良好的起点。

4、提早停止

你可以测量模型的每次迭代执行的程度。

直到一定次数的迭代,新的迭代改进了模型。然而,在那之后,模型的概括能力会随着开始过度拟合训练数据而减弱。

提前停止是指在学习者通过该点之前停止训练过程。

过拟合根源以及如何规避

今天,这种技术主要用于深度学习,而其他技术(例如正则化)则是经典机器学习的首选。

5、正正则

正则化是指人为地迫使您的模型更简单的广泛技术。

该方法取决于您正在使用的学习者的类型。例如,您可以修剪决策树,在神经网络上使用dropout,或者在回归中将惩罚参数添加到成本函数中。

通常,正则化方法也是超参数,这意味着它可以通过交叉验证进行调整。

6、集成模型

集成是用于组合来自多个单独模型的机器学习方法。有几种不同的集合方法,但最常见的两种方法是:

bagging法试图减少过度拟合复杂模型的机会:

  • 它同时培养了大量”强大”的学习者。
  • 强大的学习者是一个相对不受约束的模型。
  • 然后,Bagging将所有强大的学习者结合在一起,以”平滑”他们的预测。

boosting提高简单模型的预测灵活性:

  • 它按顺序培养了大量”弱势”学习者。
  • 弱学习者是一种约束模型(即可以限制每个决策树的最大深度)。
  • 序列中的每一个都侧重于从前面的错误中学习。
  • 然后,提升将所有弱学习者组合成一个强大的学习者。

虽然装袋和提升都是集合方法,但它们从相反的方向解决问题。

Bagging使用复杂的基础模型并尝试”平滑”他们的预测,同时提升使用简单的基础模型并试图”提升”他们的总体复杂性。

总结

本文刚刚介绍了很多概念:

  • 信号,噪声以及它们与过度拟合的关系。
  • 统计数据的拟合优度
  • 拟合合与过拟合
  • 偏差 – 方差权衡
  • 如何使用训练测试分裂检测过拟合
  • 如何使用交叉验证、特征选择、正则化、提升法等防止过度拟合

把所有这些概念联系在一起有助于澄清过拟合的一些概念

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/80879.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信