bagging和boosting的偏差与方差

理解下偏差和方差的概念

一、variances and bias trade-off

了解偏差和方差可以帮助我们帮助我们训练出更加精确的模型。这里从三个角度解释下偏差和方差的概念。

Graphical Definition

1.偏差

假设靶心就是我们的正中心,也就是可以一个完美预测出正确值的一个模型。

偏差表示样本拟合出的模型的预测结果的期望(平均)与真实值之间的差距。简单来说,就是样本拟合的好不好,想要bias小,就得复杂化模型,增加模型参数,但是容易过拟合。

为什么是期望(平均值)?

举例:给定一个数据集,每次gather不同的data来训练尽可能多的模型。由于数据集的随机性,模型也不尽相同。然后这些模型的预测平均值和我们真实要拟合的模型的输出之间的差距。

2.方差

在样本上训练出来的模型,拿来预测给定数据集(测试集)的结果的波动性。想要方差低,就得简化模型,但是这样容易欠拟合。

###

Mathematical Definition

学习算法的预测误差成为泛化误差,包括三个部分,偏差,方差,和噪声。在估计学习算法性能的过程中,我们主要关注的是方差和偏差,噪声属于不可避免的。

以回归任务为例,学习算法的平方预测误差期望是:
$$
Err(\textbf{x})=E[(y-f(\textbf{X};D)^2]
$$
方差:

在一个训练集D上模型$f$对预测样本的$x$的预测输出为$f(\textbf{x};D)$,那么学习算法$f$对测试样本$\textbf{x}$的期望预测是:
$$
\begin{equation}
\overline{f}(\mathbf{x}) = E_D\left[f\left(\mathbf{x}; D\right)\right]
\end{equation}
$$
则使用不同样本数的不同训练集产生的方差为:
$$
\begin{equation}
var(\mathbf{x}) = E_D\left[\left( f(\mathbf{x}; D) - \overline{f}(\mathbf{x}) \right)^2\right]
\end{equation}
$$

噪声:

真实标记与数据集中的实际标记的偏差:
$$
\begin{equation}
\epsilon^2 = E_D\left[ (y_D - y)^2 \right]
\end{equation}
$$
偏差:

期望预测与真实标记之间的误差:
$$
\begin{equation}
bias^2(\mathbf{x}) = \left( \overline{f}(\mathbf{x}) - y \right)^2
\end{equation}
$$
可证:

trade-off

泛化误差=偏差+方差+噪声

方差:度量了同样大小的训练集的变换导致的学习性能的变化,即刻画了数据扰动对模型的影响。

偏差:度量了算法期望预测与真实值之间的偏离程度。

  • 在训练不足时,学习器的拟合程度不够,此时欠拟合,偏差主导泛化误差;
  • 当训练加深,学习器的拟合程度逐渐加强,而训练数据集的扰动逐渐被学习器学到,方差逐渐主导泛化误差;
  • 在训练程度充分之后,学习器的拟合能力已经很强了,训练数据发生的轻微扰动都会导致模型的性能发生显著变化,若训练数据自身的、非全局的特性被学习器学到,则会发生过拟合。

###

一般来说,降低偏差会提高方差

偏差很低,方差很高的学习器,我们认为是过拟合

偏差很高,方差很低的学习器,我们认为是欠拟合

bagging

通过集成学习可以保持偏差不变,降低方差

此时不会降低方差。bagging方法得到的各个子模型是有一定相关性的,

所以说,bagging要保证模型之间的差异性,才能减少方差。

boosting

提升方法从优化角度来看,是采用前向分步这种方法最小化损失函数的,$L(y,\sum_i a_if_i(x))$.例如adaboost是最小化指数损失函数$L(y,f(x)) = exp(-yf(x))$。前向分步,就是在迭代的第n步,求解新加入的模型和步长,来最小化$L(y,f_{n-1}(x)+\alpha f(x))$.这里$f_{n-1}$是前n-1步的模型之和。因为boosting方法是每次连续的最小化损失函数,所以其bias也逐渐减小。但是,正是因为这种连续的,adaptive的策略,各子模型之间是强相关的,于是不能显著地降低方差。

但是,多个模型的集成降低异常点的影响,所以boosting一定程度上可以降低variance

boosting还可以并行化,譬如随机梯度提升方法

二、bagging和boosting

1.数据

bagging和boosting都是通过在训练阶段产生additional data来得到N个学习器。这N个新的训练数据集是通过随机有放回的重采样产生的。

bagging:假如训练集是N个样本,有m棵树,那么就采样m个数据集放在每棵树的根节点。每次随机有放回得采样N个样本。因此任何样本都有相同概率出现在新的数据集中。

boosting: 样本相当于有权重的,因此某些样本出现的概率会更大。Adaboost.

2.分类器

bagging:平均N个学习者的结果(或多数投票)。

boosting:他们估计的加权平均值

三、如何选择

取决于你的数据,实际情况。

和单一模型相比,bagging和boosting都能降低方差,因为他们是结合了多个学习器的结果。所以稳定性更高。

  1. 如果是单个模型的bias太大,那么使用boosting,因为他可以产生一个错误率更小的模型,通过逐步减小单个模型的缺点实现。
  2. 如果单一模型过拟合了,那么可以使用随机森林,bagging的方法。实际上,boosting更容易遇到过拟合的问题。

四、sum up

Similarities Differences
Both are ensemble methods to get N learners from 1 learner… 1. built independently for Bagging,2. Boosting tries to add new models that do well where previous models fail.
Both generate several training data sets by random sampling … but only Boosting determines weights for the data to tip the scales in favor of the most difficult cases.
Both make the final decision by averaging the N learners (or taking the majority of them)… … 1. it is an equally weighted average for Bagging。 2.a weighted average for Boosting, more weight to those with better performance on training data.
Both are good at reducing variance and provide higher stability… 1. only Boosting tries to reduce bias. On the other hand, Bagging may solve the over-fitting problem, while Boosting can increase it.

我发现,扯起来bagging和boosting就没完没了了。下次再说XGBoosting和GBDT。的异同,在kaggle里效果为什么好,……

Reference

  1. 泛化误差构成证明

  2. What is the difference between Bagging and Boosting

  3. 为什么说bagging降低方差,而boosting降低偏差?

  4. Understanding the Bias-Variance Tradeoff