机器学习:方差(variance)和偏差(bias)

  • 模型误差来源

机器学习模型的泛化误差来自于两方面:error=viriance+bias

偏差:通过n次采样,每次采样m个训练样本,训练模型,这样可以得到n个模型,每个模型输出的平均值与真实模型的输出之间的差值。

方差:通过n次采样,每次采样m个训练样本,训练模型,这样可以得到n个模型,每个模型输出的方差。

  • 那么什么情况下偏差大呢,什么情况方差大?

假设在1阶,3阶,5阶模型空间上,我们分别训练了100个模型(n=100),得到的曲线如上图所示。假设真实模型为:

画出所有模型的输出平均值和真实值的对比曲线:

就bias而言,可以看出对于左边模型较为简单的一阶模型,bias更大,而右边5阶模型的bias则很小

可以得出一个结论:模型越简单,偏差越大。从模型空间角度出发看,模型越简单,它能覆盖的函数空间越小,那么它能包含真实模型的概率就越小,因此偏差越大。

就variance而言,可以看出越简单的模型,曲线越集中;越复杂的模型,曲线越分散

可以得出一个结论:模型越简单,方差越小;模型越复杂,方差越大。从另一个角度看:模型越简单,它越不受样本的影响,比如我们都用常数模型f(x)=c拟合,那么此时偏差为0。

  • variance-bias trade-off

由上面的分析可以看出,随着model的复杂性上升,由bias带来的error是不断减小的;由variance带来的error是不断增加的,那么必然在两者之间存在一个平衡点,在该点的model性能最好。如下图所示:

当模型太过简单(在trade-off点之前),这个时候bias会过于大,造成欠拟合;当模型太过复杂(在trade-off点之后),这个时候variance会过于大,造成过拟合;

  • 如何在实际问题中消除bias和variance

如果是bias很大,说明模型太简单了,甚至连train data都没办法fit很好;这个时候只能从模型角度出发,增加模型的复杂度,或者增加有用的特征,让简单的model就能fit好;

如果是variance很大,模型太过复杂,可以考虑增加数据集(实际中不好操作);或者通过正则化(Regularization)降低模型的复杂度,但这个有可能会是的bias增加。

  • 从另一个角度看overfitting和underfitting

经验风险:模型在训练集上的误差。

overfitting就是不断最小化经验风险,只要模型足够复杂,就可以使得在训练集上的误差越来越小。而实际上在随着模型不断的复杂,它在测试集上的误差是先减小后增大的,那么那个拐点其实就那个trade-off。平衡点表现为训练误差不是很大(没有underfitting),测试集误差也没有很大(没有overfitting)。

underfitting是指模型过于简单,使得经验风险(训练集误差)过高。

从这个角度上看,我们实际上不仅要最小化经验风险,还要最小化模型复杂度,这两者的和其实就是结构风险。

我们可以通过模型选择来防止overfitting,模型选择包括正则化和交叉验证,正则化就是最小化结构风险;交叉验证就是把训练集划分成训练集和验证集,并且利用训练集训练model,验证集验证model,我们会选择一个在验证集上表现良好的model,这就防止了过拟合overfiiting训练集。提高模型的泛化能力(是指在未知数据集上的模型表现)。一般有简单划分比例法,5-fold法,留一法(一般是用于数据量少的情况)。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值