【干货】防止过拟合的处理方法及解决办法(二)

如何避免过拟合

?? 我们都知道,在进行数据挖掘或者机器学习模型构建时,因为在统计学习中,假设数据满足独立同分布(iid,independent and samedistributed),即当前形成的数据可以是用于未来的数据。因此,猜测和模拟使用历史数据来构建模型,即使用已经形成的数据进行训练,然后使用模型来拟合未来的数据。而通常独立同分布的假设往往是不成立的,即数据的分布可能会发生变化(distributiondrift),但当前的数据量可能太少,无法分布整个数据集,所以往往需要避免模​​型过拟合。,以提高模型的泛化能力。

?? 在训练模型时,可能会遇到训练数据不足的情况,即当训练数据难以预测整个数据的分布时,或者模型过度训练(overtraining)时,往往会导致模型过冲. 过拟合。如右图所示:

?? 从上图可以看出,随着模型训练的进行,模型的复杂度会降低。此时模型对训练数据集的训练偏差会逐渐减小,当模型复杂度达到一定程度时,模型反而会随着模型复杂度的增加对验证集的偏差减小减少。此时出现过拟合,即模型复杂度降低,模型对训练集以外的数据集不起作用。

?? 为了避免过拟合,我们需要用到一些技术,比如:earlystopping、数据增强(Dataaugmentation)、正则化(Regularization)、Dropout等。

早停

?? 训练模型的过程就是学习和更新模型参数的过程。这个参数学习过程中经常会用到一些迭代的方法,比如梯度增长(Gradientdescent)学习算法。Earlystopping 是一种截断迭代次数以避免过拟合的方法,即在模型迭代收敛于训练数据集之前停止迭代以避免过拟合。

Earlystopping 方法的具体方法是在每个 Epoch 结束时估计验证数据的准确率(一个 Epoch 集是对所有训练数据的一轮遍历),当准确率不再增强时停止训练。这些做法非常直观。既然精度不再增强,继续训练也没用,只会增加训练时间。这种做法的关键之一是如何感觉validationaccurary不再增强?并不是说validation的准确率一降下来就不再提升,因为经过这个Epoch之后,准确率可能会上升,后面的Epoch又会让准确率再次上升,所以不能判断是不是不再按一、二次的连续提升而增强。. 通常的做法是在训练过程中记录目前为止最好的验证准确率,当连续 10 个(或更多)Epochs 未能达到最佳准确率时,你可以感觉到准确率不再增强。此时,可以停止迭代(EarlyStopping)。这些策略被称为“No-improvement-in-n”,n是Epochs的个数,可以根据实际情况取,比如10、20、30...

数据集扩充

?? 在数据挖掘领域有一句流行的说法,“有时候,拥有更多的数据往往比拥有一个好的模型更好”。由于我们使用训练数据来训练模型并通过该模型拟合未来的数据,因此介于两者之间的另一个假设是训练数据和未来数据是独立同分布的。即使当前的训练数据用于模拟和模拟未来的数据,更多的数据往往更准确地模拟和模拟。因此,有时数据越多越好。而且往往条件有限,比如缺乏人力、物力和财力,无法收集到更多的数据。比如在分类任务中,需要对数据进行标注,但是很多情况下,标注还是要人工完成,所以一旦需要标记的数据量也会造成效率低下和可能的错误。因此,往往这个时候,就需要采用一些估计的方法和策略,对已有的数据集进行肢体运算,以获得更多的数据。

?? 简单来说,数据机的扩展需要获取更多满足要求的数据,即与已有数据独立同分布,或者近似独立同分布。通常有以下几种方式:

正则化方法

正则化方法是指在优化目标函数或代价函数时,在目标函数或代价函数前面加上一个正则项,通常是L1正则和L2正则。

话题

关于支持向量机SVM,下面的说法是错误的()

A.L2正则项,作用是最大化分类区间,使分类器具有更强的泛化能力

B. 铰链损失函数,其作用是最小化经验分类误差

C.分类区间为1/||w||,||w|| 表示向量的模

D. 参数C越小,分类区间越大,分类误差越大,容易欠学习(误差)

在LogisticRegression中,如果同时加入L1和L2范数,会形成什么效果()

A. 可以做特征选择,一定程度上可以避免过拟合

B.能解决次元灾难问题

C. 能带动预估率

D. 可以获得更精确的结果(正确答案)

-------------------------------------------------- ------------------------------------------

L1 正则化和 L2 正则化

正则化项是惩罚函数,它“惩罚”模型向量,从而防止简单最小二乘问题的过拟合问题。训练的目的是最小化目标函数,C越小,惩罚越小,分类间隔越小,分类误差越小。

正则化项本质上是一种先验信息,整个优化问题从贝叶斯的角度来看是一个贝叶斯极大后验,其​​中正则化项对应后验中的先验信息,损失函数对应残差函数中的后验概率,两者的乘积对应贝叶斯最大后验概率法。如果把这个贝叶斯最大后验概率法取对数,也就是最大残差 ,你会发现问题马上就变成了损失函数+正则化项的优化问题。

(1)防止过拟合。经验风险最小化+正则化项=结构风险最小化。

(2)从模型解的角度来看,正则化提供了唯一解的可能性。无场解只能通过最小二乘拟合出现,可以添加一个L1或L2正则化项得到一个独特的解决方案。

L1范数是向量中每个元素的绝对值之和,用于特征选择;

L2范数是指向量每个元素的平方和的平方根,用来避免过拟合,提高模型的泛化能力。

L1和L2的区别:使用L1得到稀疏残差;使用 L2 获得平滑残差

L1正则化(趋向于0)

在原代价函数前面加上一个L1正则化项,即所有权重w的绝对值之和,减去λ/n(这里与L2正则化项不同,需要减去1/2,具体原因在里面已经说了。)

还要先估计行列式:

上式中,sgn(w)表示w的符号。权重 w 的更新规则为:

η*λ*sgn(w)/n 比原来的更新规则要多。当 w 为正时,更新后的 w 变小。当 w 为负时,更新后的 w 变大

因此,其疗效是使w趋于0,使网络中的权重尽可能为0,相当于降低了网络复杂度,避免了过拟合。

L2正则化(权重衰减)

L2正则化就是在代价函数前面加上一个正则化项:

C0 表示原始成本函数,前一项是 L2 正则化项,它来自所有参数 w 的平方和减去训练集的样本大小 n。λ为正则项的系数,衡量正则项与C0项的比例。另外还有一个1/2的系数,经常听到,主要是为了方便前导的结果。前一项的导数将形成 2,而 1/2 的加法将四舍五入。

L2 正则化项如何防止过拟合?让我们推断一下,领先的数字:

可以发现L2正则化项对b的更新没有影响,对w的更新有影响。

退出

??Regularity 通过在成本函数前面添加正则化项来避免模型过度拟合。在神经网络中,有一种方法是通过改变神经网络本身的结构来实现的,叫做Dropout。该方法是在训练网络时使用一种方法(trick),对于一个三层人工神经网络如下图:

对于上图所示的网络,在开始训练时,不得不随机删除一些(可以设置为一半机器学习防止过拟合,或者1/3、1/4等)隐藏层神经元,也就是感觉不存在这样的神经元,同时保持输入层和输出层的神经元个数不变,从而得到如下ANN:

之后根据BP学习算法学习并更新ANN中的参数(实线连接的单元没有更新,因为感觉这样的神经元已经被暂时删除了)。这样的迭代更新就完成了。在下一次迭代中,一些神经元也被随机删除机器学习防止过拟合,这与上一次不同,进行了随机选择。这仍然使瑕疵,直到训练结束。

Dropout方法是通过改变ANN隐藏层的神经元个数来避免ANN的过拟合。详细信息可以在这里找到。

如何避免机器学习中的过拟合

原来的:

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 网站程序 【干货】防止过拟合的处理方法及解决办法(二) https://www.wkzy.net/game/8213.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务