个人收藏和大叔走大数据应用之路

关于交叉验证与偏差/方差的一连串理解

2019-04-15  本文已影响91人  SeekerLinJunYu

 在机器学习训练模型时,对于数据集的划分其实是很重要的一个步骤.如果数据集划分出现问题,那么将会导致模型过拟合(over fitting)或者欠拟合(under fitting).比如一次苹果品质判断模型训练中,刚好把具有斑点属性的好苹果全部划分到了train_data中,那么这次训练会由此导致过拟合的发生.

那么如何更好地评估模型,从而根据评估结果进行模型判断呢?

当然解决方案就是采用鼎鼎大名的K折交叉验证的方法.

pic1.png

在K折交叉验证中也存在一个问题,k如何取值?
 k取值越大,即样本被划分用来训练的次数也就越多,保证了充分利用所有的样本.带来的后果是由偏差bias带来的泛化误差降低,由方差variance带来的泛化误差增加,同时还增加了计算量.总的来说就是过拟合(over fitting).
 k值取得越小,即样本被划分用来训练的次数也就越少,没有保证样本被充分利用,此时,模型还没有学到足够多的信息.带来的后果是由偏差bias带来的泛化误差增加,由方差variance带来的泛化误差降低.总的来说就是欠拟合(under fitting).
 根据经验,k一般取5或者10.


偏差和反差又是什么呢?
一张图就能看懂.

从知乎大神处kiang来的一张图.jpg

 偏差(bias)衡量的是模型对于训练数据的拟合程度(欠拟合是导致偏差的主要原因偏差越大,即训练的结果离真实样本就差远):

 方差(variance)描述的是训练模型在测试集上的表现,即主要是泛化性能的体现,方差越大说明模型越复杂越是过拟合,容易受到扰动. 因此,要求variance越小越好.为了降低方差,就需要简化模型,减少模型的参数,但是这样又容易欠拟合(under fitting).
 因此可以发现偏差和方差是不可能同时最优的,只能尽量选择出泛化误差Error最小的组合,因为泛化Error = Bias + Variance.


模型误差

有一些算法天生就是高方差的算法:KNN
通常来说,非参数学习通常都是高方差算法.因为模型对训练数据非常敏感.

有一些算法天生就是高偏差算法:线性回归
参数学习通常都是高偏差算法.因为选取时模型本身具有极强的假设性.

但是,大多数算法具有相应的参数,可以调整偏差和方差.例如KNN中的k和线性回归中的特征的阶数.

机器学习的主要挑战,来自于方差! 因为过拟合问题是模型训练中最常见的问题.

解决高方差的手段:

参考:
https://www.zhihu.com/question/27068705

上一篇 下一篇

猜你喜欢

热点阅读