过拟合的通俗理解以及解决办法

把知乎上的回答整理整理,若有侵权,请告知本人进行整改

作者:刘文博
链接:https://www.zhihu.com/question/32246256/answer/83898785
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

好比你想学习追妹子。
先找你表妹问喜欢什么,表妹说她喜欢干净帅气的男生,还说她喜欢周杰伦,喜欢火锅,喜欢酸菜鱼,合计一百条规矩。你规规矩矩地按照要求学习,终于符合表妹的一切要求,0 Error,训练完成,超级自信准备出去试试追个妹子。
可是换了个妹子,发现学到的似乎没想象中有用。第二个妹子只要你干净帅气。后面的九十八条她都不care,她甚至讨厌吃火锅,那后面98条只会增加误差。这就过拟合了。

怎么防止过拟合呢?应该用cross validation,交叉比对。
解释起来就是,你在你表妹那儿学到的东西,在你表姐那儿测试一下对不对。在你表姐那儿学到的,在你二姐那测试一下。来来回回用不同的测试对象和训练对象做交叉比对。这样学到规律就不会过拟合啦~

评论里有小伙伴提到加Regularization可以解决overfit,这里也形象地说一下。还是在学习追妹子。但是我也有男人的尊严! 有底线!不能妹子说啥就是啥!今天我的底线是,不能无限量增加要学的规矩的数量!女人不能惯着! 所以可以引入Lasso,对规矩的数量进行一个penalize。通俗说就是,妹子你让我学三条规矩我就忍了,让我学一百条规矩大爷就不干了。这个Regularization可以有不同的形式,Lasso是一种。所以可以通过引入Regularization增加信息,帮助寻找到最优解。
=================================================================================================================================


其实不完全是噪声和假规律会造成过拟合。
(1)打个形象的比方,给一群天鹅让机器来学习天鹅的特征,经过训练后,知道了天鹅是有翅膀的,天鹅的嘴巴是长长的弯曲的,天鹅的脖子是长长的有点曲度,天鹅的整个体型像一个“2”且略大于鸭子.这时候你的机器已经基本能区别天鹅和其他动物了。
(2)然后,很不巧你的天鹅全是白色的,于是机器经过学习后,会认为天鹅的羽毛都是白的,以后看到羽毛是黑的天鹅就会认为那不是天鹅.
(3)好,来分析一下上面这个例子:(1)中的规律都是对的,所有的天鹅都有的特征,是全局特征;然而,(2)中的规律:天鹅的羽毛是白的.这实际上并不是所有天鹅都有的特征,只是局部样本的特征。机器在学习全局特征的同时,又学习了局部特征,这才导致了不能识别黑天鹅的情况.



作者:郑昆
链接:https://www.zhihu.com/question/32246256/answer/55251597
来源:知乎
著作权归作者所有,转载请联系作者获得授权。


很形象的一个图:


===================================================================================================================================
学术化一点:
上学考试的时候,有的人采取题海战术,把每个题目都背下来。但是题目稍微一变,他就不会做了。因为他非常复杂的记住了每道题的做法,而没有抽象出通用的规则。

所以过拟合有两种原因:

  1. 训练集和测试机特征分布不一致(白天鹅黑天鹅)
  2. 或者模型太过复杂(记住了每道题)而样本量不足

解决过拟合也从这两方面下手,收集多样化的样本,简化模型,交叉检验。

最后配个图,看图最清楚了。



作者:十方
链接:https://www.zhihu.com/question/32246256/answer/55320482
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

=======================================================================================================================
作者:邓子明
链接:https://www.zhihu.com/question/20700829/answer/119314862
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

还是来看预测房价的这个例子,我们先对该数据做线性回归,也就是左边第一张图。

如果这么做,我们可以获得拟合数据的这样一条直线,但是,实际上这并不是一个很好的模型。我们看看这些数据,很明显,随着房子面积增大,住房价格的变化趋于稳定或者说越往右越平缓。因此线性回归并没有很好拟合训练数据。

我们把此类情况称为欠拟合(underfitting),或者叫作叫做高偏差(bias)。

这两种说法大致相似,都表示没有很好地拟合训练数据。高偏差这个词是 machine learning 的研究初期传下来的一个专业名词,具体到这个问题,意思就是说如果用线性回归这个算法去拟合训练数据,那么该算法实际上会产生一个非常大的偏差或者说存在一个很强的偏见。

第二幅图,我们在中间加入一个二次项,也就是说对于这幅数据我们用二次函数去拟合。自然,可以拟合出一条曲线,事实也证明这个拟合效果很好。

另一个极端情况是,如果在第三幅图中对于该数据集用一个四次多项式来拟合。因此在这里我们有五个参数θ0到θ4,这样我们同样可以拟合一条曲线,通过我们的五个训练样本,我们可以得到如右图的一条曲线。

一方面,我们似乎对训练数据做了一个很好的拟合,因为这条曲线通过了所有的训练实例。但是,这实际上是一条很扭曲的曲线,它不停上下波动。因此,事实上我们并不认为它是一个预测房价的好模型。

所以,我们把这类情况叫做过拟合(overfitting),也叫高方差(variance)。

与高偏差一样,高方差同样也是一个历史上的叫法。从第一印象上来说,如果我们拟合一个高阶多项式,那么这个函数能很好的拟合训练集(能拟合几乎所有的训练数据),但这也就面临函数可能太过庞大的问题,变量太多。

同时如果我们没有足够的数据集(训练集)去约束这个变量过多的模型,那么就会发生过拟合。

2

过度拟合的问题通常发生在变量(特征)过多的时候。这种情况下训练出的方程总是能很好的拟合训练数据,也就是说,我们的代价函数可能非常接近于 0 或者就为 0。

但是,这样的曲线千方百计的去拟合训练数据,这样会导致它无法泛化到新的数据样本中,以至于无法预测新样本价格。在这里,术语"泛化"指的是一个假设模型能够应用到新样本的能力。新样本数据是指没有出现在训练集中的数据。


之前,我们看到了线性回归情况下的过拟合。类似的情况也适用于逻辑回归。

3

那么,如果发生了过拟合问题,我们应该如何处理?

过多的变量(特征),同时只有非常少的训练数据,会导致出现过度拟合的问题。因此为了解决过度拟合,有以下两个办法。

方法一:尽量减少选取变量的数量

具体而言,我们可以人工检查每一项变量,并以此来确定哪些变量更为重要,然后,保留那些更为重要的特征变量。至于,哪些变量应该舍弃,我们以后在讨论,这会涉及到模型选择算法,这种算法是可以自动选择采用哪些特征变量,自动舍弃不需要的变量。这类做法非常有效,但是其缺点是当你舍弃一部分特征变量时,你也舍弃了问题中的一些信息。例如,也许所有的特征变量对于预测房价都是有用的,我们实际上并不想舍弃一些信息或者说舍弃这些特征变量。

方法二:正则化

正则化中我们将保留所有的特征变量,但是会减小特征变量的数量级(参数数值的大小θ(j))。

这个方法非常有效,当我们有很多特征变量时,其中每一个变量都能对预测产生一点影响。正如我们在房价预测的例子中看到的那样,我们可以有很多特征变量,其中每一个变量都是有用的,因此我们不希望把它们删掉,这就导致了正则化概念的发生。

接下来我们会讨论怎样应用正则化和什么叫做正则化均值,然后将开始讨论怎样使用正则化来使学习算法正常工作,并避免过拟合。

2. Cost Function

1

在前面的介绍中,我们看到了如果用一个二次函数来拟合这些数据,那么它给了我们一个对数据很好的拟合。然而,如果我们用一个更高次的多项式去拟合,最终我们可能会得到一个曲线,它能很好地拟合训练集,但却并不是一个好的结果,因为它过度拟合了数据,因此,一般性并不是很好。

让我们考虑下面的假设,我们想要加上惩罚项,从而使参数 θ3 和 θ4 足够的小。

这里我的意思就是,上图的式子是我们的优化目标,也就是说我们需要尽量减少代价函数的均方误差。

对于这个函数我们对它添加一些项,加上 1000 乘以 θ3 的平方,再加上 1000 乘以 θ4 的平方,

1000 只是我随便写的某个较大的数字而已。现在,如果我们要最小化这个函数,那么为了最小化这个新的代价函数,我们要让 θ3 和 θ4 尽可能小。因为,如果你在原有代价函数的基础上加上 1000 乘以 θ3 这一项 ,那么这个新的代价函数将变得很大,所以,当我们最小化这个新的代价函数时, 我们将使 θ3 的值接近于 0,同样 θ4 的值也接近于 0,就像我们忽略了这两个值一样。如果我们做到这一点( θ3 和 θ4 接近 0 ),那么我们将得到一个近似的二次函数。

因此,我们最终恰当地拟合了数据,我们所使用的正是二次函数加上一些非常小,贡献很小项(因为这些项的 θ3、 θ4 非常接近于0)。显然,这是一个更好的假设。

2

更一般地,这里给出了正规化背后的思路。这种思路就是,如果我们的参数值对应一个较小值的话(参数值比较小),那么往往我们会得到一个形式更简单的假设。

在我们上面的例子中,我们惩罚的只是 θ3 和 θ4 ,使这两个值均接近于零,从而我们得到了一个更简单的假设,实际上这个假设大抵上是一个二次函数。

但更一般地说,如果我们像惩罚 θ3 和 θ4 这样惩罚其它参数,那么我们往往可以得到一个相对较为简单的假设。

实际上,这些参数的值越小,通常对应于越光滑的函数,也就是更加简单的函数。因此 就不易发生过拟合的问题。

我知道,为什么越小的参数对应于一个相对较为简单的假设,对你来说现在不一定完全理解,但是在上面的例子中使 θ3 和 θ4 很小,并且这样做能给我们一个更加简单的假设,这个例子至少给了我们一些直观感受。

来让我们看看具体的例子,对于房屋价格预测我们可能有上百种特征,与刚刚所讲的多项式例子不同,我们并不知道 θ3 和 θ4 是高阶多项式的项。所以,如果我们有一百个特征,我们并不知道如何选择关联度更好的参数,如何缩小参数的数目等等。

因此在正则化里,我们要做的事情,就是把减小我们的代价函数(例子中是线性回归的代价函数)所有的参数值,因为我们并不知道是哪一个或哪几个要去缩小。

因此,我们需要修改代价函数,在这后面添加一项,就像我们在方括号里的这项。当我们添加一个额外的正则化项的时候,我们收缩了每个参数。

顺便说一下,按照惯例,我们没有去惩罚 θ0,因此 θ0 的值是大的。这就是一个约定从 1 到 n 的求和,而不是从 0 到 n 的求和。但其实在实践中
这只会有非常小的差异,无论你是否包括这 θ0 这项。但是按照惯例,通常情况下我们还是只从 θ1 到 θn 进行正则化。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: GBDT,即梯度提升决策树(Gradient Boosting Decision Tree),是一种常用的机器学习算法。它结合了决策树和梯度提升的优点,能够用于回归和分类任务。 通俗来说,我们可以将GBDT比喻为一个由多棵树组成的森林。每一棵树都是一个分类器,用于解决某个特定的问题。在GBDT中,每一棵树都试图学习前一棵树不能解决的问题。这种“迭代”的方式使得GBDT能够不断提升性能。 具体而言,训练GBDT的过程可以分为以下几个步骤:首先,我们用第一棵树来训练数据,做出一个预测;然后,计算预测结果与实际结果之间的差异,这个差异被称为残差;接着,我们使用第二棵树去学习这个残差,再次做出一个预测;然后,用前两棵树的预测结果与实际结果的差异作为新的残差,继续训练第三棵树;重复这个过程,直到满足我们的训练终止条件。 当我们要用GBDT进行预测时,就是将所有树的预测结果进行加权求和。每棵树的权重取决于它在训练过程中的表现。如果某棵树的预测能够大幅减少误差,那么它的权重就会比较大。 总而言之,GBDT是一种通过将多棵树进行迭代训练,不断学习并提升性能的机器学习算法。它通过将每棵树的预测结果进行加权求和来进行最终预测。这种算法的优势在于它的灵活性和强大的性能,因此在许多实际应用中得到了广泛的应用。 ### 回答2: GBDT是一种机器学习算法,它是集成学习的方法之一。集成学习是通过把多个模型的预测结果进行整合,最终得到更准确的结果。而GBDT则是将多个决策树模型进行级联,每个树模型都对之前模型的预测进行修正。 GBDT的核心思想是通过多次迭代来构建一个由多个弱学习器(决策树)组成的强学习器。在每一次迭代中,GBDT都会训练一个新的决策树,该树的目标是使之前所有树的预测结果与真实结果之间的误差最小化。 具体来说,GBDT的训练过程如下:首先,使用初始的决策树对数据进行拟合,得到初始预测结果。然后,计算当前预测结果与真实结果之间的残差。接着,使用新的决策树对残差进行拟合,得到新的预测结果。最后,将初始预测结果与新预测结果相加,得到最终的预测结果。这个过程会重复多次,每次都会使预测结果更加准确。 GBDT的优势在于它能够同时处理连续型和离散型特征,对特征的缺失和异常值也具有较好的鲁棒性。另外,GBDT还可以通过特征重要性评估来帮助我们进行特征选择。 总之,GBDT是一种通过多次迭代构建多个决策树模型,对之前模型的预测结果进行修正,从而得到更准确预测结果的机器学习算法。 ### 回答3: GBDT(Gradient Boosting Decision Trees)是一种集成学习算法,用于解决回归和分类问题。它是由许多个决策树组成的集合,并通过迭代的方式逐步提升预测的准确性。 GBDT的原理比较复杂,但可以用通俗的方式解释。我们可以将GBDT类比成一场游戏。在这场游戏中,有一位年轻的运动员想要成为冠军。他的教练是一位非常聪明的人,他会根据运动员在比赛中的表现,提出一些问题。通过这些问题,教练想要找到改进运动员表现的方法。 第一轮,教练问了一个问题,这个问题很简单,运动员很容易回答对。接下来,教练提出了第二个问题,这个问题与第一个问题有关,但稍微复杂一些。运动员思考了一会儿,回答正确。然后,教练又提出了第三个问题,这个问题比前两个问题更加复杂。运动员又再次思考,回答正确。 随着游戏的继续,问题变得越来越难,但是运动员的回答也越来越准确。这一轮一轮的游戏过程中,教练观察运动员的回答,并根据回答的准确性来得出逐步改进的方法。最后,教练通过整个游戏的过程,找到了提高运动员的表现的最佳方法。 在这个游戏中,每个问题就相当于一个决策树,而整个游戏过程就是GBDT。每一轮游戏中,教练都会根据运动员的回答来调整问题的难度以及下一个问题的方向。这样,教练可以通过多轮的游戏,不断提升运动员的表现。 GBDT通过多个决策树的集合,每个树都在上一个树的基础上进行改进,最终得到一个更加准确的预测结果。这类似于教练根据前一轮的问题和回答来调整下一轮的问题的难度和方向,从而逐步提升运动员的表现。 总之,GBDT是一种通过迭代的方式逐步提升预测准确性的集成学习算法,它类似于一场运动员与教练的游戏,教练通过观察回答调整问题,从而找到改善运动员表现的最佳方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值