Bias(偏差),Error(误差),Variance(方差),和K-fold Cross Validation的关系(机器学习核心)

转至:https://www.zhihu.com/question/27068705


Bias(偏差),Error(误差),Variance(方差)的关系
一图胜千言。
Bias(偏差),Error(误差),Variance(方差),和K-fold Cross Validation的关系(机器学习核心)_第1张图片
我是这样抽象理解这个问题的:
准: bias描述的是根据样本拟合出的模型的输出预测结果的期望与样本真实结果的差距,简单讲,就是在样本上拟合的好不好。要想在bias上表现好,low bias,就是复杂化模型,增加模型的参数,但这样容易过拟合 (overfitting),过拟合对应上图是high varience,点很分散。low bias对应就是点都打在靶心附近,所以瞄的是准的,但手不一定稳。
确: varience描述的是样本上训练出来的模型在测试集上的表现,要想在varience上表现好,low varience,就要简化模型,减少模型的参数,但这样容易欠拟合(unfitting),欠拟合对应上图是high bias,点偏离中心。low varience对应就是点都打的很集中,但不一定是靶心附近,手很稳,但是瞄的不准。
所以bias和variance的选择是一个tradeoff,过高的varience对应的概念,有点『剑走偏锋』『矫枉过正』的意思,如果说一个人varience比较高,可以理解为,这个人性格比较极端偏执,眼光比较狭窄,没有大局观。而过高的bias对应的概念,有点像『面面俱到』『大巧若拙』的意思,如果说一个人bias比较高,可以理解为,这个人是个好好先生,谁都不得罪,圆滑世故,说话的时候,什么都说了,但又好像什么都没说,眼光比较长远,有大局观。(感觉好分裂 )

在林轩田的课中,对bias和variance还有这样一种解释,我试着不用数学公式抽象的简单概括一下:

我们训练一个模型的最终目的,是为了让这个模型在测试数据上拟合效果好,也就是Error(test)比较小,但在实际问题中,test data我们是拿不到的,也根本不知道test data的内在规律(如果知道了,还machine learning个啥 ),所以我们通过什么策略来减小Error(test)呢?

分两步

  1. 让Error(train)尽可能小
  2. 让Error(train)尽可能等于Error(test)

三段论,因为A小,而且A=B,这样B就小。

那么怎么让Error(train)尽可能小呢?——》把模型复杂化,把参数搞得多多的,这个好理解,十元线性回归,肯定error要比二元线性回归低啊。——》low bias

然后怎么让Error(train)尽可能等于Error(test)呢?——》把模型简单化,把参数搞得少少的。 模型没有偏见 ,对train test一视同仁。那么怎样的模型更容易有这这种一视同仁的特性,换句话说,更有『通用性』,对局部数据不敏感?那就是简单的模型。——》 low varience


那么和K-fold Cross Validation的联系呢?
具体到K-fold Cross Validation的场景,其实是很好的理解的。首先看Variance的变化,举打靶的例子。假设我把抢瞄准在10环,虽然每一次射击都有偏差,但是这个偏差的方向是随机的,也就是有可能向上,也有可能向下。那么试验次数越多,应该上下的次数越接近,那么我们把所有射击的目标取一个平均值,也应该离中心更加接近。更加微观的分析,模型的预测值与期望产生较大偏差,在模型固定的情况下,原因还是出在数据上,比如说产生了某一些异常点。在最极端情况下,我们假设只有一个点是异常的,如果只训练一个模型,那么这个点会对整个模型带来影响,使得学习出的模型具有很大的Variance。但是如果采用k-fold Cross Validation进行训练,只有1个模型会受到这个异常数据的影响,而其余k-1个模型都是正常的。在平均之后,这个异常数据的影响就大大减少了。相比之下,模型的bias是可以直接建模的,只需要保证模型在训练样本上训练误差最小就可以保证bias比较小,而要达到这个目的,就必须是用所有数据一起训练,才能达到模型的最优解。因此,k-fold Cross Validation的目标函数破坏了前面的情形,所以模型的Bias必然要会增大

你可能感兴趣的:(data,structure,&,algorithm)