Boosting和Bagging
一、Boosting和Bagging的异同点
Boosting和Bagging都是集成学习方法,思想都是将一堆弱学习器串联到一起,变成一个强学习器,两者的区别在于:
- Bagging的连接方式是并行的,每个学习器都是学习最终结果
- Boosting的连接方式是串行的,每个学习器学习的是上一个学习器的output和最终结果的残差
二、Bagging
-
引言
俗话说“三个臭皮匠,顶个诸葛亮”,说的就是群体智慧的作用。
-
思想
Bagging全称Bootstrap aggregating(引导聚集算法)。
Bagging的思想很简单,就是有放回的进行采样,保持数据集的规模不变,每次使用取得的子数据集训练弱学习器,重复上述过程,对结果取平均值或者采取投票机制。
-
解释
假设数据集含有\(n\)个样本,有放回的采样\(n\)次,产生\(n\)个样本的训练集,这样数据集中的某些样本可能出现多次。
每个样本抽到的概率为:\(1/n\)
未抽到的概率为:\(1−\frac{1}{n}\)
一个样本在n次中都未被抽中的概率为:\((1−\frac{1}{n})^{n}\)
当n趋于∞时,有:
\(p = \lim\limits_{n \to \infty} (1−\frac{1}{n})^{n} = \frac{1}{e}\)在回归问题中,通常通过取平均值的方法汇总所有学习器的结果,在分类问题中,通常使用投票法汇总。
-
著名实现
- 随机森林,是随机的随机,因为它在变量的使用和数据的使用上都进行了随机化。其构造过程如下:
- 假设有\(n\)个样本,有放回的随机抽取\(n\)个样本,用这选择好的\(n\)个样本来训练一个决策树,作为决策树根节点处的样本。这就是数据的随机。
- 假设每个样本有\(M\)个属性,在决策树的每个节点需要进行分裂时,随机从这\(M\)个属性中选择出m个属性,满足\(m << M\),然后从这\(m\)个属性中采用某种策略来选择1个属性作为该节点的分裂属性。这就是变量,也就是属性的随机。
- 决策树形成过程中每个节点都要按照步骤2来分裂(如果下一次该节点选出来的那一个属性是刚刚其父节点分裂时用过的属性,则该节点已经达到了叶子结点,无须继续分裂了)。一直到不能够再分裂为止,整个决策树形成过程中没有进行剪枝。
- 按照步骤1~3建立大量的决策树,就构成了随机森林。
- 随机森林,是随机的随机,因为它在变量的使用和数据的使用上都进行了随机化。其构造过程如下:
三、Boosting
-
引言
错误是你最好的老师。
Your best teacher is your last mistake.
Boosting的原理就是如此,从错误中学习。
-
思想
首先训练一个弱分类器,记录这个弱分类器错误分类的样本,同时给予这个弱分类器一定的权重,然后建立一个新的弱分类器。新分类器基于错误样本进行训练,同样给予这个分类器一个权重。重复上述过程,直到分类器性能达到某一指标。最后把这些分类器乘上相应的权重全部加起来,就得到了最后的强分类器。
思想很简单、也很直接,但是在实践上却存在一定的困难。
-
解释
-
著名实现
-
AdaBoost
Ada是adaptive的意思,算法打算通过适应的方法尽可能的你和目标函数。
Adaptive使用加法模型,采用指数函数作为损失函数,同时使用向前分布的算法进行训练。
- 加法模型:指各个弱分类器之间的关系。在加法模型中,基分类器是线性连接的,与相应的权重相乘,他们的加权和即是分类器的最终结果。
- 指数函数:指一种计算模型损失函数的方式。在AdaBoost中,而分类的标签是\(「-1,1」\),而不是\(「0,1」\),与交叉熵作为损失函数的情形不同。
- 向前分步:加法模型线性连接各个基分类器,但是一次性对所有基分类器做优化的难度太高,因此采用向前分步的方法,也就是每步分别训练好一个分类器并求出相应的系数,再把他们相加起来。这样的方法是贪心的,但是能起到优化的效果。
同时 ,在AdaBoost中有一组重要的参数,叫做\(α\)。\(α\)不仅决定了当前分类器的权重,还同时决定了下一个分类器所损脸的数据集的分布。
跳过公式的推导,α的定义:\(α_i = \frac{1}{2}\log\frac{1−ε_i}{ε_i}\)。其中,\(ε_i\)是本基学习器的错误率。
可以直观看出,\(ε_i\)越小,\(α_i\)越大。而\(ε_i\)往往随着线性模型的不断增长而变小,因此,往往越靠后的基分类器所占的权重越大。
同时训练数据的分布\(D\)也由\(α_i\)决定。
\[D_{i+1}(x) = \frac{D_{i}e^{-a_{i}y(x)h_{i}(x)}}{Z_{i}} \]其中\(Z_{i}\)是规范化因子
在\(α_i\)中,随着线性模型的增长,被上一个分类器误分类的样本的权重值不断被提高,使得下一个模型可以更好的拟合这些数据。
-