• 机器学习之过拟合与欠拟合以及偏差-方差分解


    1、过拟合

    所谓过拟合就是:把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致训练出的模型其泛化能力降低,这就是过拟合。

    如何解决?

    1)Early stopping

    Early stopping便是一种通过提前截断迭代次数来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。

    Early stopping方法的具体做法是,在每一个Epoch结束时(一个Epoch集为对所有的训练数据的一轮遍历)计算validation data的accuracy,当accuracy不再提高时,就停止训练。这种做法很符合直观感受,因为accurary都不再提高了,在继续训练也是无益的,只会提高训练的时间。那么该做法的一个重点便是怎样才认为validation accurary不再提高了呢?并不是说validation accuracy一降下来便认为不再提高了,因为可能经过这个Epoch后,accuracy降低了,但是随后的Epoch又让accuracy又上去了,所以不能根据一两次的连续降低就判断不再提高。一般的做法是,在训练的过程中,记录到目前为止最好的validation accuracy,当连续10次Epoch(或者更多次)没达到最佳accuracy时,则可以认为accuracy不再提高了。此时便可以停止迭代了(Early Stopping)。这种策略也称为“No-improvement-in-n”,n即Epoch的次数,可以根据实际情况取,如10、20、30……

    简单来说就是训练时设定一个训练轮的次数,每一轮训练结束后计算一次准确率,纪录最高准确率,若又经过多轮训练准确率不再提高,则说明原来最高准确率那轮可以提前停止修改总训练轮数。

    2)数据集扩增

    通俗得讲,数据机扩增即需要得到更多的符合要求的数据,即和已有的数据是独立同分布的,或者近似独立同分布的。一般有以下方法:

    • 从数据源头采集更多数据
    • 复制原有数据并加上随机噪声
    • 重采样
    • 根据当前数据集估计数据分布参数,使用该分布产生更多数据等

    3)正则化

    在对模型的代价函数(cost function)加上正则项从而形成目标函数(objective function)。

    描述正则化及其能预防过拟合原因很好的总结

    http://blog.csdn.net/heyongluoyao8/article/details/49429629

    加入正则化项相当于对权重系数的更新添加了约束,所以说正则化项相当于模型的先验概率(相当于一个约束)。

    参考以上网址分析L1以及L2正则化为什么能够防止过拟合

    L1正则化为什么可以防止过拟合?

    L1正则(即为在代价函数后面加上L1范数组成目标函数。L1范数为求各个元素的绝对值之和)
      L1正则是基于L1范数,即在目标函数后面加上参数的L1范数和项,即参数绝对值和与参数的积项,即

                               

    其中C0代表原始的代价函数,n是样本的个数,λ就是正则项系数,权衡正则项与C0项的比重。后面那一项即为L1正则项。 
    在计算梯度时,w的梯度变为

                          

    其中,sgn是符号函数

     

    其中sgn是一个符号函数,其中,梯度下降算法中,α<0,β<0,而在梯度上升算法中则相反

    从上式可以看出,当w为正时,更新后w会变小;当w为负时,更新后w会变大;因此L1正则项是为了使得那些原先处于零(即|w|≈0)附近的参数w往零移动,使得部分参数为零,从而降低模型的复杂度(模型的复杂度由参数决定同时权重系数w≈0说明此特征和最终结果关系不大,可能是某一样本本身的特征而不是训练集中的数据普遍具有的特性,故不应加入整体模型的训练中,所以把其设为0可以提高模型的泛化能力),从而防止过拟合,提高模型的泛化能力。

    L2正则化为什么可以防止过拟合?

    L2正则(即为在代价函数后面加上L2范数组成目标函数。L2范数为


    L2正则是基于L2范数,即在目标函数后面加上参数的L2范数和项,即参数的平方和与参数的积项,即

                               

    其中C0代表原始的代价函数,n是样本的个数,与L1正则化项前面的参数不同的是,L2项的参数乘了1/2,是为了便于计算以及公式的美感性,因为平方项求导有个2,λ就是正则项系数,权衡正则项与C0项的比重。后面那一项即为L2正则项。 

     

    其中,梯度下降算法中,α<0,β<0,而在梯度上升算法中则相反注意这里后的W实际是||w||即为w的L2范数

    L2正则项起到使得参数w变小加剧的效果,更小的参数值w意味着模型的复杂度更低,对训练数据的拟合刚刚好(奥卡姆剃刀),不会过分拟合训练数据,从而使得不会过拟合,以提高模型的泛化能力。

    4)Dropout

    深度学习中用,随机的使隐藏层中的节点失活

    2、欠拟合

    所谓欠拟合:就是模型没有很好地捕捉到数据特征,不能够很好地拟合数据。

    如何解决?

    1)添加其他特征项

    有时候我们模型出现欠拟合的时候是因为特征项不够导致的,可以添加其他特征项来很好地解决。例如,“组合”、“泛化”、“相关性”三类特征是特征添加的重要手段

    2)减少正则化参数

    正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,则需要减少正则化参数。

    1. 什么是偏差-方差分解,与欠拟合与过拟合有什么联系?

    3、偏差-方差分解是解释学习算法泛化性能的一种重要工具,它试图对学习算法的期望泛化错误率进行分解。

    泛化误差=偏差+方差+噪声

    一般偏差与方差是有冲突的,这称为偏差-方差窘境。当训练不足时,学习器的拟合能力不强,训练数据的扰动不足以使学习器产生显著的变化,这时候偏差较大,偏差主导了泛化错误率,同时会导致欠拟合。随着训练程度的加深,学习器的拟合能力逐渐增强,训练数据发生的扰动逐渐能被学习器学到,方差变大,逐渐主导了泛化错误率,一定程度上会导致过拟合。

    即为通过偏差-方差分解后,偏差主导泛化错误率时会导致欠拟合,方差主导泛化错误率时会导致过拟合。

    偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响。噪声则表达了当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。

  • 相关阅读:
    一月十三号学习日报
    一月十四号学习日报
    一月六号学习日报
    ARP欺骗
    一月十一号学习日报
    vscode文件名重叠
    vue : 无法加载文件 C:Users1111111AppDataRoaming pmvue.ps1,因为在此系统禁止运行脚本
    成绩录入和查询
    node搭建服务器
    class和id的区别
  • 原文地址:https://www.cnblogs.com/dyl222/p/11000882.html
Copyright © 2020-2023  润新知