一文读懂 Bias(偏差)、Error(误差)、Variance(方差)

451 阅读6分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天,点击查看活动详情

一文读懂 Bias(偏差)、Error(误差)、Variance(方差)

偏差

偏差度量了学习算法的期望预期与真实结果的偏离程度 ,即刻画了学习算法本身的拟合能力。偏差太高,就会出现欠拟合,即与真实结果偏离很大。但如果偏差太高,可能会出现过拟合,结合一下前面的图片,因为我们的数据集并不是整体的数据集,可能数据集本身就不准确,所以如果你仅仅在当当前数据集做到很好,可能对于新的数据就会表现很差。

如何降低偏差

  • 增加算法的复杂度,比如神经网络中的神经元个数或者层数,增加决策树中的分支和层数等。不过增加模型复杂度可能会导致方差(variance)的增加,如果有必要,需要添加正则化项来惩罚模型的复杂度(降低方差);
  • 优化输入的特征,检查特征工程中是否遗漏掉具有预测意义的特征。增加更多的特征也许能同时改善方差(variance)和偏差(bias),不过理论上来说,特征越多方差(variance)也就越大(可能又需要正则化);
  • 削弱或者去除已有的正则化约束(L1 正则化,L2 正则化,dropout 等),不过有增加方差的风险;
  • 调整模型结构,比如神经网络的结构;

方差

方差反映了算法在不同样本下模型预测的稳定性 ,通过在多个同样大小的训练集上不断学习可以得到方差。如果模型在多个样本下的训练误差(经验损失)“抖动”比较厉害,则有可能是样本有问题。

如何降低方差

  • 扩大训练样本,样本太小(代表性不够)是方差大的首要原因,增加样本是减少方差最简单有效的方式;
  • 增加正则化约束(比如 L1 正则化,L2 正则化,dropout 等),正则化降低方差的同时也可能增大偏差;
  • 筛选输入的特征(feature selection),这样输入的特征变少后,方差也会减小;
  • 降低算法模型复杂度,比如对决策树的剪枝、减少神经网络的层数等;

优化模型的结构有时候也会有用

噪声

噪声是一种不可控的错误,很难避免,被称为不可约偏差(irreducible error) ,即噪声无法通过模型来消除。噪声通常是出现在“数据采集”的过程中的,且具有随机性和不可控性,比如采集用户数据的时候仪器产生的随机性偏差、人工标注时的错误或者在实验中受到其他不可控因素的干扰等。

如何降低噪音

这个没办法,你要从别处找原因

误差

偏差分为训练偏差测试偏差泛化偏差 。其中要重点理解泛化误差。

训练误差(training error)是指,模型在训练数据集 上计算得到的误差,测试误差是在测试集上 得到的误差。泛化误差(generalization error)是指,如果所有的数据来自一个整体,模型在这个整体上的误差 ,是一种期望的理想情况,往往会与测试误差有些偏差。

泛化误差

泛化是指算法模型能够在从未学习过的数据上实现较低的损失,衡量一个算法模型是否优秀的指标就是其泛化能力 ,即根据从样本数据中学习到的规则能够应用到新数据的能力,泛化能力由泛化误差 来体现。

由于条件的限制和知识的限制,我们往往无法获取所有的数据,通常说来,测试误差的平均值或期望 就是泛化误差。

泛化误差与偏差、方差的关系

泛化误差=偏差 + 方差 + 噪声。通常情况下,噪声无法人为控制,准确的说无法通过模型来消除,所以通常我们认为泛化误差受偏差和方差影响。减小泛化误差就要从偏差和方差两方面均衡考虑。

如何降低误差

降低了方差和偏差,误差自然就下来了。

偏差、方差、误差的总结

先看这张图:

如果把训练模型比喻为用枪打靶,那我们的目标肯定是枪枪正中靶心,又稳又准。偏差决定了打的准不准,方差决定了打的稳不稳。准就是说我们能不能打中靶心,稳就是说我们要一梭子下来能不能集中在一个小区域内(玩过枪战游戏的同学一定可以理解)。噪音可以理解为你靶本身出问题了。

我们的目标虽然是又稳又准,但也不要走极端,因为真正的数据是未知的。如果偏差太小,每枪都精准命中一个点,就太极端了,真实数据的靶心可能并不在这里。如果方差太高,稳定性很差,就成了散弹枪。

总结一下:

low bias and low variance:又准又稳 low bias and high variance: 准但不稳 high bias and low variance:不准但稳 high bias and high variance:不准又不稳

算法的偏差与方差的特性

线性或者参数化的算法一般具有高偏差(bias)低方差(variance)的特点,比如线性回归,线性判别分析(Linear Discriminant Analysis),Logistic 回归等线性模型。

非线性或者非参数化的算法则常表现出低偏差(bias)高方差(variance),比如决策树,KNN,SVM。

模型与偏差、方差、误差的关系

一般来说,模型越复杂,偏差越小,但这时也就出现了过拟合;但方差却会越大,因为模型只对个别样本拟合到了机制,对其他样本数据稳定性很差。我们要做的就是在二者直接找到一个平衡,从而获得最优的泛化误差。

参考文章

机器学习中的 Bias(偏差)、Error(误差)、Variance(方差)有什么区别和联系

泛化误差(generalisation error),偏差(bias),方差(variance)

机器学习:算法中的泛化误差、偏差、方差、噪声的理解(超详细)