The goal of ensemble methods is to combine the predictions of several base estimators built with a given learning algorithm in order to improve generalizability / robustness over a single estimator.

主要有两类方法:
average method:独立地建立几个估计器,并且平均他们的估计值。理论上,结果会优于单个估计器,因为其方差减少了,如:Bagging methods.Forest of randomized tree .bagging methods work best with strong and complex models

boosting method:在增强方法中,基本估计器是顺序构建的,并且人们试图减少组合估计器的偏差。动机是结合几个弱模型来产生强大的整体。
如:Adaboost,Gradient Tree Boosting, boosting methods which usually work best with weak models

Bagging meta-estimator
在集成算法中,bagging methods形成一类算法,其在原始训练集的随机子集上构建黑盒估计器的若干实例,然后聚合它们的各个预测以形成最终预测。这些方法用作减少基本估计器(例如,决策树)的方差的方法,通过将随机化引入其构造过程然后从中构建整体。

Pasing:数据集的随机子集来源于样本的随机子集时
Bagging:数据集样本是有放回抽取的
Random Subspaces :数据集的随机子集被绘制来源于随机子集时
Random Patches::数据集的随机子集被绘制来源于随机子集和随机特征时

提升方法(Boosting)是一种常用的统计学习方法,应用广泛且且有效,在分类问题中,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能

提升方法基于这样一种思想:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独的判断好

AdaBoost算法
假设给定一个二分类的训练数据集\(T={(x_1,y_1),\cdots,(x_N,y_N)}\),其中\(x_i\in \chi \subseteq R^n\),标记\(y_i \in\){-1,1},AdaBoost利用以下算法,从训练数据中学习一系列弱分类器或基本分类器,并将这些若分类器线性组合成为一个强分类器

输入:训练数据集T;弱学习算法
输出:最终分类器G(x)
(1)初始化训练数据的权值分布
\(D_1=(w_{11},\cdots,w_{1N}),W_{1i}=\frac{1}{N}\)

(2)对\(m=1,2,\cdots,M\)
(a)使用具有权值分布\(D_m\)的训练数据集学习,得到基本分类器\(G_m(x):\chi \to\) {-1,1}
(b)计算\(G_m(x)\)在训练数据集上的分类误差率
\(e_m=P(G_m(x_i)\neq y_i)=\sum_{i=1}^N w_{mi}I(G_m(x_i)\neq y_i)\)
(c)计算\(G_m(x)\)的系数\(\alpha_m=\frac{1}{2}log\frac{1-e_m}{e_m}\)
(d)更新训练数据集的权值分布
\(D_{m+1}=(w_{m+1,1},\cdots,w_{m+1,N}),\\ w_{m+1,i}=\frac{w_{mi}}{Z_m}exp(-\alpha_m y_i G_m(x_i))(错分的权重增加,在下一轮学习中起更大的作用,不改变所给的训练数据,而不断改变训练数据权值的分布,使得训练数据在基本分类器的学习中起不同的作用,这是AdaBoost的一个特点)\)
这里,\(Z_m\)是规范化因子,\(Z_m=\sum w_{mi}exp(-\alpha_m y_i G_m(x_i))\)

(3)构建基本分类器的线性组合\(f(x)=\sum_{m=1}^M\alpha_mG_m(x)\)
得到最终分类器\(G(x) = sign(f(x)) = sign(f(x))=sign(\sum_{m=1}^M\alpha_mG_m(x))\)

提升树
提升方法实际采用加法模型(即基函数的线性组合)与前向分布算法。
提升树是以分类树或回归树为基本分类器的提升方法,提升树被认为是统计学习中最有效的方法之一。提升数模型可以表示为决策树的加法模型:
\(f_M(x) = \sum T(x;\Theta_m)\),其中,\(T(x;\Theta_m)\)表示决策树,\(\Theta_m\)为决策树的参数;M为树的个数

随着iter增加,错分的数据权重增加,后面的弱分类器会重点去训练这些前面的分类器错分的数据,

1)样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。

Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

2)样例权重:

Bagging:使用均匀取样,每个样例的权重相等

Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。

3)预测函数:

Bagging:所有预测函数的权重相等。

Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

4)并行计算:

Bagging:各个预测函数可以并行生成

Boosting:理论上各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。计算角度来看,两种方法都可以并行。bagging, random forest并行化方法显而意见。boosting有强力工具stochastic gradient boosting

5)bagging是减少variance,而boosting是减少bias
在机器学习中,我们用训练数据集去训练(学习)一个model(模型),通常的做法是定义一个Loss function(误差函数),通过将这个Loss(或者叫error)的最小化过程,来提高模型的性能(performance)。然而我们学习一个模型的目的是为了解决实际的问题(或者说是训练数据集这个领域(field)中的一般化问题),单纯地将训练数据集的loss最小化,并不能保证在解决更一般的问题时模型仍然是最优,甚至不能保证模型是可用的。这个训练数据集的loss与一般化的数据集的loss之间的差异就叫做generalization error。而generalization error又可以细分为Bias和Variance两个部分。
即error=Bias+Variance

随机森林:
在随机森林算法中,每颗树的样本均来自原始样本有放回的抽取,对节点的分裂对于所有特征来说,将不再是最优的分裂,相反,该分裂是基于部分随机特征做的最优分裂,但由于平均化,通常模型整体效果会比单颗树更好。

Gradient Boosting

\[F(x)=\sum_{m=1}^M\gamma_mh_m(x) \]

其中\(h_m(x)\)是弱分类器,通常选取有限深度的决策树。
该additive model是建立在一个前向叠加公式的:

\[F_m(x)=F_{m-1}(x)+\gamma_mh_m(x) \]

每一步,所选的\(h_m(x)\)应该是在给定当前模型\(F_{m-1}\)下,使得损失函数L最小的\(h_m(x)\),即

\[F_m(x)=F_{m-1}(x)+argmin_h\sum_{i=1}^NL(y_i,F_{m-1}(x_i)+h(x_i)) \]

步长\(\gamma_m\)根据下面的线性搜索得到

\[\gamma_m=argmin_{\gamma}\sum_{i=1}^nL(y_i,F_{m-1}(x_i)-\gamma \frac{\delta L(y_i,F_{m-1}(x_i))}{\delta F_{m-1}(x_i)}) \]

end to end memory network 模型_数据

shrinkage:添加学习速率

\[F_m(x)=F_{m-1}(x)+v\gamma_mh_m(x) \]

通常该超参数\(v\),learning_rate与n_estimators是有关的,learning_rate越小,所需的n_estimators越大,经验表明,\(v\)应该小于0.1

Subsampling
proposed stochastic gradient boosting, which combines gradient boosting with bootstrap averaging (bagging). At each iteration the base classifier is trained on a fraction subsample of the available training data. The subsample is drawn without replacement. A typical value of subsample is 0.5.
从上图看到,单独用subsample结果并不好,subsample+shrinkage结果会更好