经验误差与泛化误差、偏差与方差、欠拟合与过拟合、交叉验证 您所在的位置:网站首页 曲线拟合模型误差分析方法 经验误差与泛化误差、偏差与方差、欠拟合与过拟合、交叉验证

经验误差与泛化误差、偏差与方差、欠拟合与过拟合、交叉验证

2024-06-28 19:35| 来源: 网络整理| 查看: 265

经验误差与泛化误差、偏差与方差、欠拟合与过拟合、交叉验证 主要内容 经验误差与泛化误差偏差与方差欠拟合与过拟合交叉验证

一、经验误差(训练误差)与泛化误差   经验误差(训练误差):模型在训练集上的误差称为“经验误差”(empirical error)或者“训练误差”“training error”。   泛化误差:模型在新样本集(测试集)上的误差称为“泛化误差”(generalization error)。

二、偏差与方差   泛化误差可分解为偏差、方差与噪声之和,即 generalization error=bias2+variance+noise 。   “噪声”:描述了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。   假定期望噪声为零,则泛化误差可分解为偏差、方差之和,即 generalization error=bias2+variance 。   “偏差”:描述了模型的期望预测(模型的预测结果的期望)与真实结果的偏离程度。偏离程度越大,说明模型的拟合能力越差,此时造成欠拟合。   “方差”:描述了数据的扰动造成的模型性能的变化,即模型在不同数据集上的稳定程度。方差越大,说明模型的稳定程度越差。如果模型在训练集上拟合效果比较优秀,但是在测试集上拟合效果比较差劣,则方差较大,说明模型的稳定程度较差,出现这种现象可能是由于模型对训练集过拟合造成的。   简单的总结一下:偏差大,说明模型欠拟合;方差大,说明模型过拟合。如何平衡模型的偏差和方差,一直是我们追求的效果。感兴趣的童鞋,可以阅读《Understanding the Bias-Variance Tradeoff》。   下图可以帮助读者,更加直观的理解“偏差”与“方差”。

图1 图1

三、欠拟合与过拟合   如何通过学习曲线来识别模型是否发生了欠拟合/过拟合呢?如果发生了欠拟合/过拟合,我们又该如何处理呢?   1、横轴为训练样本数量,纵轴为误差:   首先,我们来看如何通过学习曲线识别是否发生了欠拟合/过拟合,如下图2。模型欠拟合时,在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大;模型过拟合时,在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大。模型正常时,在训练集以及测试集上,同时具有相对较低的偏差以及方差。

这里写图片描述 图2   然后,我们想办法解决欠拟合/过拟合。根据上图2,我们发现:当模型欠拟合的时候,我们发现增大训练集,偏差无法降低,无法解决欠拟合问题;当模型过拟合的时候,我们发现增大训练集,方差减小,可以解决过拟合问题。    2、横轴为模型复杂程度,纵轴为误差:   横轴表示模型的复杂程度,增加模型的复杂程度的方法,比如增加特征项、添加多项式等等。   首先,我们来看如何通过学习曲线识别是否发生了欠拟合/过拟合,如下图3。模型在点A处,在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大,模型欠拟合;模型在点C处,在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大,模型过拟合。模型复杂程度控制在点B处为最优。 这里写图片描述 图3   然后,我们想办法解决欠拟合/过拟合。根据上图3,我们发现:当模型欠拟合时,可以增加模型的复杂程度;当模型过拟合时,可以减小模型的复杂程度。    3、横轴为正则项系数,纵轴为误差:   一般情况下,为了限制模型造成过拟合,可以添加正则项(惩罚项)。   首先,我们来看如何通过学习曲线识别是否发生了欠拟合/过拟合,如下图4。模型在点A处,在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大,模型过拟合;模型在点C处,在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大,模型欠拟合。模型正则项系数控制在点B处为最优。 这里写图片描述 图4   然后,我们想办法解决欠拟合/过拟合。根据上图4,我们发现:当模型过拟合时,可以增大模型正则项系数;模型欠拟合时,可以减小模型正则项系数。

  上文中,我们介绍了,如何通过学习曲线识别欠拟合/过拟合,以及对应的解决方法。接下来,我们针对欠拟合/过拟合,给出其他对应的解决方法。   如何解决欠拟合:   1)添加其他特征项,有时候我们模型出现欠拟合,是因为特征项不够导致的,可以添加其他特征项来解决。例如,“组合”、“泛化”、“相关性”三类特征是特征添加的重要手段,无论在什么场景,都可以照葫芦画瓢,总会得到意想不到的效果。除上面的特征之外,“上下文特征”、“平台特征”等等,都可以作为特征添加的首选项。   2)添加多项式特征,这个在机器学习算法里面用的很普遍,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强。例如,FM模型、FFM模型,其实就是线性模型,增加了二阶多项式,保证了模型一定的拟合程度。   3)减小正则化系数,前文中已经分析。   等等,还有很多方法,可以对应下边的过拟合解决方法来进行欠拟合解决方法的选择。   如何解决过拟合:   1)重新清洗数据,导致过拟合的一个原因也有可能是数据不纯导致的,如果出现了过拟合就需要我们重新清洗数据。   2)增加训练样本数量,前文中已经分析。   3)降低模型复杂程度,前文中已经分析。   4)增大正则项系数,前文中已经分析。   5)采用dropout方法,这个方法在神经网络里面很常用。dropout方法,通俗一点讲就是在训练的时候让神经元以一定的概率不工作。   6)early stoping。   7)减少迭代次数。   8)增大学习率。   9)添加噪声数据。   10)树结构中,可以对树进行剪枝。   等等,方法很多,需要根据实际问题,实际模型,进行选择。

四、交叉验证   交叉验证,主要目的是针对模型的“泛化误差”(generalization error)进行评估,得到模型的“泛化误差”的近似值。当有多个模型可以选择时,我们通常选择“泛化误差”最小的模型。   这里主要介绍“K折交叉验证”:   1、将数据集(其实是训练集,我们暂且称为数据集吧,假设含有N个样本)分成K份(每份含有N/K个样本),选择其中1份作为测试集,另外K-1份作为训练集。这样的话,测试集就有K种情况。   2、在每种情况中,用训练集训练模型,用测试集测试模型,计算模型的泛化误差(暂且这么叫吧)。   3、将K种情况下,模型的泛化误差取均值,得到模型最终的泛化误差。

注:一般2



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有