甘肃省环保建设申报网站,住房建设部官方网站专家注册,wordpress xiu 5.6,如何推广网站平台偏差#xff08;Bias#xff09;与方差#xff08;Variance#xff09;
目录#xff1a;
为什么会有偏差和方差#xff1f;偏差、方差、噪声是什么#xff1f;泛化误差、偏差和方差的关系#xff1f;用图形解释偏差和方差。偏差、方差窘境。偏差、方差与过拟合、欠拟合…偏差Bias与方差Variance
目录
为什么会有偏差和方差偏差、方差、噪声是什么泛化误差、偏差和方差的关系用图形解释偏差和方差。偏差、方差窘境。偏差、方差与过拟合、欠拟合的关系偏差、方差与模型复杂度的关系偏差、方差与bagging、boosting的关系偏差、方差和K折交叉验证的关系如何解决偏差、方差问题
1. 为什么会有偏差和方差
对学习算法除了通过实验估计其泛化性能之外人们往往还希望了解它为什么具有这样的性能。“偏差-方差分解”bias-variance decomposition就是从偏差和方差的角度来解释学习算法泛化性能的一种重要工具。
在机器学习中我们用训练数据集去训练一个模型通常的做法是定义一个误差函数通过将这个误差的最小化过程来提高模型的性能。然而我们学习一个模型的目的是为了解决训练数据集这个领域中的一般化问题单纯地将训练数据集的损失最小化并不能保证在解决更一般的问题时模型仍然是最优甚至不能保证模型是可用的。这个训练数据集的损失与一般化的数据集的损失之间的差异就叫做泛化误差generalization error。
而泛化误差可以分解为偏差Biase、方差Variance和噪声Noise。
2. 偏差、方差、噪声是什么
为了更好的理解偏差、方差和噪声概念这一部分我分两个小节来阐述。2.1节我用通俗易懂的语言表述概念。2.2节我用数学公式定义偏差、方差和噪声概念。
2.1 简述偏差、方差、噪声
如果我们能够获得所有可能的数据集合并在这个数据集合上将损失最小化那么学习得到的模型就可以称之为“真实模型”。当然在现实生活中我们不可能获取并训练所有可能的数据所以“真实模型”肯定存在但是无法获得。我们的最终目的是学习一个模型使其更加接近这个真实模型。
Bias和Variance分别从两个方面来描述我们学习到的模型与真实模型之间的差距。
Bias是用所有可能的训练数据集训练出的所有模型的输出的平均值与真实模型的输出值之间的差异。
Variance是不同的训练数据集训练出的模型输出值之间的差异。
噪声的存在是学习算法所无法解决的问题数据的质量决定了学习的上限。假设在数据已经给定的情况下此时上限已定我们要做的就是尽可能的接近这个上限。
注意我们能够用来学习的训练数据集只是全部数据中的一个子集。想象一下我们现在收集几组不同的数据因为每一组数据的不同我们学习到模型的最小损失值也会有所不同它们与“真实模型”的最小损失也是不一样的。
2.2 数学公式定义偏差、方差、噪声
要进一步理解偏差、方差、噪声我们需要看看它们的数学公式。以回归任务为例学习算法的期望预测为这里的期望预测也就是针对不同数据集D模型f对样本x的预测值取其期望也叫做平均预测average predicted。
1方差定义
使用样本数相同的不同训练集产生的方差为方差的含义方差度量了同样大小的训练集的变动所导致的学习性能的变化即刻画了数据扰动所造成的影响。
2偏差定义
期望输出与真实标记的差别称为偏差bias即偏差的含义偏差度量了学习算法的期望预测与真实结果的偏离程度即刻画了学习算法本身的拟合能力。
3噪声
噪声为噪声的含义噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界即刻画了学习问题本身的难度。
我的理解偏差度量的是单个模型的学习能力而方差度量的是同一个模型在不同数据集上的稳定性。
3. 泛化误差、偏差和方差的关系也就是说泛化误差可以通过一系列公式分解运算证明泛化误差为偏差、方差与噪声之和。证明过程如下
为了便于讨论我们假定噪声期望为零即 。通过简单的多项式展开合并可对算法的期望泛化误差进行分解于是最终得到“偏差-方差分解”说明泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。给定学习任务为了取得好的泛化性能则需使偏差较小即能够充分拟合数据并且使方差较小即使得数据扰动产生的影响小。
4. 用图形解释偏差和方差
我们从下面的靶心图来对偏差和方差有个直观的感受。图片来自Understanding the Bias-Variance Tradeoff假设红色的靶心区域是学习算法完美的正确预测值蓝色点为训练数据集所训练出的模型对样本的预测值当我们从靶心逐渐往外移动时预测效果逐渐变差。
从上面的图片中很容易可以看到左边一列的蓝色点比较集中右边一列的蓝色点比较分散它们描述的是方差的两种情况。比较集中的属于方差比较小比较分散的属于方差比较大的情况。
我们再从蓝色点与红色靶心区域的位置关系来看靠近红色靶心的属于偏差较小的情况远离靶心的属于偏差较大的情况。
思考从上面的图中可以看出模型不稳定时会出现偏差小、方差大的情况那么偏差和方差作为两种度量方式有什么区别呢
解答Bias的对象是单个模型是期望输出与真实标记的差别。它描述了模型对本训练集的拟合程度。
Variance的对象是多个模型是相同分布的不同数据集训练出模型的输出值之间的差异。它刻画的是数据扰动对模型的影响。
5. 偏差、方差窘境一般来说偏差与方差是有冲突的这称为偏差-方差窘境bias-variance dilemma。下图给出了一个示意图。给定学习任务假定我们能控制学习算法的训练程度则在训练不足时学习器的拟合能力不够强训练数据的扰动不足以使学习器产生显著变化此时偏差主导了泛化错误率随着训练程度的加深学习器的拟合能力逐渐增强训练数据发生的扰动渐渐能被学习器学到方差逐渐主导了泛化错误率在训练程度充足后学习器的拟合能力已经非常强训练数据发生的轻微扰动都会导致学习器发生显著变化若训练数据自身的、非全局的特性被学习器学到了则将发生过拟合。
泛化误差与偏差、方差的关系示意图6. 偏差、方差与过拟合、欠拟合的关系
一般来说简单的模型会有一个较大的偏差和较小的方差复杂的模型偏差较小方差较大。
欠拟合模型不能适配训练样本有一个很大的偏差。
举个例子我们可能有本质上是多项式的连续非线性数据但模型只能表示线性关系。在此情况下我们向模型提供多少数据不重要因为模型根本无法表示数据的基本关系模型不能适配训练样本有一个很大的偏差因此我们需要更复杂的模型。那么是不是模型越复杂拟合程度越高越好呢也不是因为还有方差。
过拟合模型很好的适配训练样本但在测试集上表现很糟有一个很大的方差。
方差就是指模型过于拟合训练数据以至于没办法把模型的结果泛化。而泛化正是机器学习要解决的问题如果一个模型只能对一组特定的数据有效换了数据就无效我们就说这个模型过拟合。这就是模型很好的适配训练样本但在测试集上表现很糟有一个很大的方差。
7. 偏差、方差与模型复杂度的关系
由前面偏差和方差的介绍我们来总结一下偏差和方差的来源我们训练的机器学习模型必不可少地对数据依赖。但是如果你不清楚数据服从一个什么样的分布或是没办法拿到所有可能的数据肯定拿不到所有数据那么我们训练出来的模型和真实模型之间存在不一致性。这种不一致性表现在两个方面偏差和方差。
那么既然偏差和方差是这么来的而且还是无法避免的那么我们有什么办法尽量减少它对模型的影响呢
一个好的办法就是正确选择模型的复杂度。复杂度高的模型通常对训练数据有很好的拟合能力但是对测试数据就不一定了。而复杂度太低的模型又不能很好的拟合训练数据更不能很好的拟合测试数据。因此模型复杂度和模型偏差和方差具有如下图所示关系。8. 偏差、方差与bagging、boosting的关系
Bagging算法是对训练样本进行采样产生出若干不同的子集再从每个数据子集中训练出一个分类器取这些分类器的平均所以是降低模型的方差variance。Bagging算法和Random Forest这种并行算法都有这个效果。
Boosting则是迭代算法每一次迭代都根据上一次迭代的预测结果对样本进行权重调整所以随着迭代不断进行误差会越来越小所以模型的偏差bias会不断降低。
9. 偏差、方差和K折交叉验证的关系
K-fold Cross Validation的思想将原始数据分成K组(一般是均分)将每个子集数据分别做一次验证集其余的K-1组子集数据作为训练集这样会得到K个模型用这K个模型最终的验证集的分类准确率的平均数作为此K-CV下分类器的性能指标。
对于一系列模型, 我们使用Cross Validation的目的是获得预测误差的无偏估计量CV从而可以用来选择一个最优的Theta*,使得CV最小。假设K-folds cross validationCV统计量定义为每个子集中误差的平均值而K的大小和CV平均值的bias和variance是有关的其中m N/K 代表每个子集的大小 N是总的训练样本量K是子集的数目。
当K较大时m较小模型建立在较大的N-m上经过更多次数的平均可以学习得到更符合真实数据分布的模型Bias就小了但是这样一来模型就更加拟合训练数据集再去测试集上预测的时候预测误差的期望值就变大了从而Variance就大了k较小的时候模型不会过度拟合训练数据从而Bias较大但是正因为没有过度拟合训练数据Variance也较小。
10. 如何解决偏差、方差问题
整体思路首先要知道偏差和方差是无法完全避免的只能尽量减少其影响。1在避免偏差时需尽量选择正确的模型一个非线性问题而我们一直用线性模型去解决那无论如何高偏差是无法避免的。2有了正确的模型我们还要慎重选择数据集的大小通常数据集越大越好但大到数据集已经对整体所有数据有了一定的代表性后再多的数据已经不能提升模型了反而会带来计算量的增加。而训练数据太小一定是不好的这会带来过拟合模型复杂度太高方差很大不同数据集训练出来的模型变化非常大。3最后要选择合适的模型复杂度复杂度高的模型通常对训练数据有很好的拟合能力。
针对偏差和方差的思路偏差实际上也可以称为避免欠拟合。1、寻找更好的特征 -- 具有代表性。2、用更多的特征 -- 增大输入向量的维度。增加模型复杂度方差避免过拟合1、增大数据集合 -- 使用更多的数据减少数据扰动所造成的影响2、减少数据特征 -- 减少数据维度减少模型复杂度3、正则化方法4、交叉验证法
Reference
【1】《机器学习》周志华著P44-P46。
【2】机器学习中的Bias(偏差)Error(误差)和Variance(方差)有什么区别和联系 - J JR的回答 - 知乎
https://www.zhihu.com/question/27068705/answer/82132134
【3】机器学习中的Bias(偏差)Error(误差)和Variance(方差)有什么区别和联系 - 小匿的回答 - 知乎
https://www.zhihu.com/question/27068705/answer/416457469
【4】偏差Bias与方差Variance - CSDN博客
【5】Understanding the Bias-Variance Tradeoff
【6】理解机器学习中的偏差与方差 - CSDN博客
【7】机器学习中的Bias(偏差)Error(误差)和Variance(方差)有什么区别和联系 - 优达学城Udacity的回答 - 知乎
https://www.zhihu.com/question/27068705/answer/129656963
【8】机器学习中的Bias(偏差)Error(误差)和Variance(方差)有什么区别和联系 - 知乎
https://www.zhihu.com/question/27068705
【9】为什么说bagging是减少variance而boosting是减少bias? - 知乎
https://www.zhihu.com/question/26760839偏差和方差 理解偏差和方差这两个不同来源导致的误差可以帮助我们更好得拟合数据来得到更为精确的模型。
概念性定义 由偏差引起的误差我们将模型的期望或平均预测和我们正在试图预测正确值之间的差定义为偏差。当然如果你只能有一个模型在谈论期望或平均预测值可能看起来有点怪。但是想象一下我们可以多次重复整个建模过程每次收集新的数据来拟合一个新的模型。由于数据集获取中的一些随机性我们拟合的模型将具有一定的预测范围。由方差引起的误差我们将模型之间的多个拟合预测之间的偏离程度定义为方差。同样想象你可以重复多次整个建模过程。 这是一个曲线拟合的问题对同分布的不同的数据集进行了多次的曲线拟合左边表示方差右边表示偏差绿色是真实值函数。ln λ 表示模型的复杂程度这个值越小表示模型的复杂程度越高。 图形化定义
我们可以使用靶心图来图形化定义偏差和方差。试想一下靶心就是我们要预测的真实值。命中的点离靶心越远我们的预测结果越糟糕。试想一下我们可以重复我们整个建模过程中独立得得到多个命中点的结果。每个命中都是我们模型的一次独立预测。有时我们的预测结果会非常好命中点靶心都集中在靶心附近而有时我们的命中点偏离靶心。这些不同的情况造成了对靶心的命中散布。
我们可以绘制代表高低偏差和方差的组合四种不同的组合分布图。
数学定义
我们定义需要预测的真实结果Y与其对应的自变量X(训练样本)之间有这样的关系: Y f(X) ϵ (我们认为ϵ满足正态分布ϵ∼N(0,σϵ) )’
令yD为x在测试样本中的值y为真实的值。 有可能出现噪音使得yD ! y 为了方便讨论这里假定E[ yD - y ] 0 假设fD(x)为训练集X上学得模型f在x上的预测输出学习算法的期望预测为 fExpectedD(x) E[ fD(x) ] 统计学习中有一个重要概念叫做residual sum-of-squares RSS看起来是一个非常合理的统计模型优化目标。但是考虑K-NN的例子在最近邻的情况下K1RSS0是不是KNN就是一个完美的模型了呢显然不是KNN有很多明显的问题比如对训练数据量的要求很大很容易陷入维度灾难中。 KNN的例子说明仅仅优化RSS是不充分的因为针对特定训练集合拟合很好的model并不能说明这个model的泛化能力好而泛化能力恰恰又是机器学习模型的最重要的要求。真正能说明问题的不是RSS因为它只是一个特定训练集合而是在多个训练结合统计得出的RSS的期望MSEmean squared error即期望泛化误差。
基于假设我们可以得到关于测试集x的MSEmean squared error:
MSE(x) E[( fD(x) - yD)2] MSE(x) E[( fD(x) - fExpectedD(x) fExpectedD(x) - yD)2] MSE(x) E[(fD(x) - fExpectedD(x) )2] E[(fExpectedD(x) - yD)2] E[2×(fD(x) - fExpectedD(x) )×( fExpectedD(x) - yD )] 第三项需要注意由于训练集已知所以这里的fExpectedD(x) - E[(fExpectedD(x) - yD)2]实际上是一个常数可以拿到外部。 fD(x) - fExpectedD(x) 根据上面学习算法的期望预测的式子可以知道其差值为 MSE(x) E[(fD(x) - fExpectedD(x) )2] E[(fExpectedD(x) - yD)2] MSE(x) E[(fD(x) - fExpectedD(x) )2] E[(fExpectedD(x) - y y - yD)2] MSE(x) E[(fD(x) - fExpectedD(x) )2] E[(fExpectedD(x) - y)2] E[(y - yD)]2 2 × E[(fExpectedD(x) - y) × (y - yD)] 噪声期望为因此最后一项为 MSE(x) E[(fD(x) - fExpectedD(x) )2] (fExpectedD(x) - y)2 E[(y - yD)]2 使用样本数相同的不同训练集产生的方差为 var(x) E[(fD(x) - fExpectedD(x) )2] 期望输出与真实值的差别称之为偏差即 bias2(x) (fExpectedD(x) - y)2
噪声为 ϵ2 E[(y - yD)]2
MSE(x) var(x) bias2(x) ϵ2
从上面的推导我们可以看出期望泛化误差可以分解为方差偏差与噪音之和。 最后一项作为不可约项是不可能从根本上进行消除。在给定任务的前提下只需要考虑前面两项来优化模型即可。 小节
偏差度量了学习算法的期望预测与真实结果的偏离程度即刻画了学习算法本身的拟合能力方差度量了同样大小的训练集的变动所导致的学习性能的变化即刻画了数据扰动所造成的影响噪声则表达了学习问题本省的难度。偏差方差分解说明泛化能力是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的给定学习任务为了取得好的泛化性能需使偏差较小即能够充分拟合数据并使方差较小使数据扰动产生的影响最小。
在一个实际系统中Bias与Variance往往是不能兼得的。如果要降低模型的Bias就一定程度上会提高模型的Variance反之亦然。造成这种现象的根本原因是我们总是希望试图用有限训练样本去估计无限的真实数据。当我们更加相信这些数据的真实性而忽视对模型的先验知识就会尽量保证模型在训练样本上的准确度这样可以减少模型的Bias。但是这样学习到的模型很可能会失去一定的泛化能力从而造成过拟合降低模型在真实数据上的表现增加模型的不确定性。相反如果更加相信我们对于模型的先验知识在学习模型的过程中对模型增加更多的限制就可以降低模型的variance提高模型的稳定性但也会使模型的Bias增大。Bias与Variance两者之间的trade-off是机器学习的基本主题之一机会可以在各种机器模型中发现它的影子。
权衡偏差与方差
模型过于简单时容易发生欠拟合high bias模型过于复杂时又容易发生过拟合high variance。为了达到一个合理的 bias-variance 的平衡此时需要对模型进行认真地评估。这里简单介绍一个有用的cross-validation技术K-fold Cross Validation (K折交叉验证) 这个方法将帮助我们获得模型关于泛化误差generalization error的可信的估计所谓的泛化误差也即模型在新数据集上的表现。在训练数据上面我们可以进行交叉验证(Cross-Validation)。 K折交叉验证初始采样分割成K个子样本一个单独的子样本被保留作为验证模型的数据其他K-1个样本用来训练。交叉验证重复K次每个子样本验证一次、我们便可获得 k 个模型及其性能评价。平均K次的结果或者使用其它结合方式最终得到一个单一估测。
当K值大的时候 我们会有更少的Bias(偏差), 更多的Variance。 当K值小的时候 我们会有更多的Bias(偏差), 更少的Variance。
下图展示了 k10 时的 k-fold 方法的工作流程。
先到这里参考博客http://scott.fortmann-roe.com/docs/BiasVariance.html