关于Machine Learning中Bias与Variance的整理与总结

来源:互联网 发布:海信网络 经理 张四海 编辑:程序博客网 时间:2024/06/14 14:37

1. Bias与Variance的定义

对于这两个概念相信学过概率论的人应该不陌生,其实在机器学习算法中,这两个概念也是同样适用的。首先对于这两个概念我们需要定义清楚,这个大家可以自己百度,不过推荐看一下这篇博文:http://scott.fortmann-roe.com/docs/BiasVariance.html。其实只要看看文章中给出的一张图片便可一目了然地明白偏差(Bias)与方差(Variance)的区别。


参考:Understandingthe Bias-Variance Tradeoff

首先 Error = Bias+ Variance。其中Error表示最后实际实验结果与目标值之间的差距,它反映整个模型的准确度和稳定性,相当于你最后打靶的成绩;Bias反应模型基于样本的预测值(多次实验的平均值)与目标值之间的差距,对应于Error中的准确度,其实也就是你打靶用的枪的准心的偏移的距离;最后Variance其实是(多次)实验结果的方差,对应于Error中的稳定性,也就是打靶过程因为随机因素造成的偏差。

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

2. 机器学习中Bias与Variance 的产生

经过上节的分析,对于Bias与Variance应该有个大概的认识了吧!那么在机器学习中,这两个概念又是对于什么的呢?在Andrew Ng的《Machine Learning》课程中是这样引入的。


从学习曲线上观察可得:

Bias产生阶段:J(train)和J(cv)都比较大,J(train)≈J(cv),模型处于underfit阶段,Bias产生小于d 区间,Error的主要贡献来自于Bias;

Variance产生阶段: J(train)<<J(cv),模型处于overfit阶段,Variance产生大于d的区间,Error的主要贡献来自于Variance;

       对以上进行简单解释一下:当J(train)和J(cv)都比较大,J(train)≈J(cv)时,说明模型在对训练集和验证集上的表现的比较一致,如果此时发现J(train)和J(cv)都比较大这说明是模型精准度有问题;当J(train)比较小,J(train)<<J(cv)时,说明模型能很好地适应训练集,而在验证集上表现很差,模型在不同样本中表现的差距比较大,其原因必定是模型的稳定性差造成的。

注意:以上是以特征的多项式的维数来进行研究的,对于其他因素都有对应的学习曲线,但Bias和Variance的产生式一样的机理,这里就不再对所有的因素进行一一分析,大家可以对照着《Machine Learning》的课件自己分析一下。

3. 如何改善模型的Bias与Variance

       上节分析了机器学习中Bias与Variance的产生,接下来就看看如何去改善模型吧。我将改善方案分为参数改善和方法改善两个方面。

3.1参数改善

顾名思义,参数化改善就是通过调整模型的参数来达到改善模型的目的。下表是我对《Machine Learning》课程中对于不同问题的改善建议的总结。


方法改善指的是运用不同方法或策略提高模型精确度与稳定性。

3.2方法改善

(1)在训练数据上面,我们可以进行交叉验证(Cross-Validation)。

一种方法叫做K-fold Cross Validation (K折交叉验证), K折交叉验证,初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练。交叉验证重复K次,每个子样本验证一次,平均K次的结果或者使用其它结合方式,最终得到一个单一估测。

当K值大的时候,我们会有更少的Bias(偏差), 更多的Variance。

当K值小的时候,我们会有更多的Bias(偏差), 更少的Variance。

cross-validation很大一个好处是避免对test dataset的二次overfitting。k-fold一般取k=5/10比较常见,当然也可以根据你的需要。

(2)Boosting通过样本变权全部参与,故Boosting 主要是降低 Bias(同时也有降低 variance 的作用,但以降低 Bias为主);

(3)Bagging 通过样本随机抽样部分参与(单个学习器训练),故Bagging主要是降低 Variance。

 

0 0