zoukankan      html  css  js  c++  java
  • 偏差(bias)和方差(variance)及其与K折交叉验证的关系

    先上图:


    泛化误差可表示为偏差、方差和噪声之和

    偏差(bias):学习算法的期望预测与真实结果(train set)的偏离程度(平均预测值与真实值之差),刻画算法本身的拟合能力;

    方差(variance):使用同规模的不同训练集进行训练时带来的性能变化(预测值与平均预测值之差的平方的期望),刻画数据扰动带来的影响;

    但是这两者其实是有冲突的,这称为bias-variance trade-off。给定一个任务,我们可以控制算法的训练程度(如决策树的层数)。在训练程度较低时,拟合能力较差,因此训练数据的扰动不会让性能有显著变化,此时偏差主导泛化错误率;在训练程度较高时,拟合能力很强,以至于训练数据自身的一些特性(噪音)都会被拟合,从而产生过拟合问题,训练数据的轻微扰动都会令模型产生很大的变化,此时方差主导泛化错误率。这个我的理解也是欠拟合和过拟合之间的冲突。


    举一个例子,一次打靶实验,目标是为了打到10环,但是实际上只打到了7环,那么这里面的Error就是3。具体分析打到7环的原因,可能有两方面:一是瞄准出了问题,比如实际上射击瞄准的是9环而不是10环;二是枪本身的稳定性有问题,虽然瞄准的是9环,但是只打到了7环。那么在上面一次射击实验中,Bias就是1,反应的是模型期望与真实目标的差距,而在这次试验中,由于Variance所带来的误差就是2,即虽然瞄准的是9环,但由于本身模型缺乏稳定性,造成了实际结果与模型期望之间的差距。

    cross-validation,它把training set拿一部分出来验证,k-fold validation的目的就是通过对k次validation的误差求平均、观察它们的波动,来尽量避免对某个特定数据集的验证导致的过度拟合。专业术语来说,我们的目标是用CV得到的error来估计testing set的error,而我们希望这一估计比较准、波动小,也就是具有较小的bias(此处反映平均估计误差与真实误差的偏离)与variance(此处反映估计误差与真实误差的波动程度),使得该估计很准确而且很稳定。然而这时不可能的。k很大的时候使得cv的test error 估计的bias很小,variance很大。从另一个角度理解:模型的bias是可以直接建模的,只需要保证模型在训练样本上训练误差最小就可以保证bias比较小,而要达到这个目的,就必须是用所有数据一起训练,才能达到模型的最优解。因此,k-fold Cross Validation的目标函数破坏了前面的情形,所以模型的Bias一般要会增大。

    参考: 链接:https://www.zhihu.com/question/27068705/answer/35151681
             《机器学习》周志华



  • 相关阅读:
    应对需求变更的软件的设计——我的想法
    重温数据库访问——故事篇
    用接口实现事件的一种方法,只是玩玩。
    面向对象最重要的是“抽象”,三层最重要的也是“抽象”,没有抽象就不是真正的面向对象、三层。
    【视频】自然框架之分页控件的使用方法(一) PostBack方式的一般分页方式
    【自然框架 免费视频】资源角色的思路介绍(整理了一下以前帖子的目录,请刷新)
    自信。
    钢铁是怎样炼成的?千锤百炼
    Android 中文API (94) —— MediaController
    android中文api(80)——Gallery.LayoutParams
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9411646.html
Copyright © 2011-2022 走看看