集成学习(ensemble learning)

本文主要基于西瓜书第8章的内容,以及自己对相关领域的理解整理而成

集成学习是通过构建并结合多个个体学习器来完成学习任务的。个体学习器要有一定的"准确性"和"多样性",即学习器不能太坏,且学习器间具有差异。事实上,个体学习器的"准确性"和"多样性"间存在冲突。

根据个体学习器的生成方式,集成学习分为『个体学习器间存在强依赖、必须串行生成的序列化方法』和『个体学习器间不存在强依赖、可同时生成的并行化方法』。前者的代表是boosting,后者的代表是bagging和随机森林。

从偏差-方差分解的角度看,Boosting主要关注降低偏差bias,因此Boosting可以基于泛化性能相当弱(这里可以理解为复杂度较低,学习能力较弱)的学习器构建出很强的集成,基学习器要求variance较低。Bagging主要关注降低方差variance,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更为明显,基学习器要求bias较低,学习能力较强。

1. Boosting

Boosting是一族可将弱学习器提升为强学习器的算法:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器。如此重复训练T个基学习器后,将这T个学习器进行加权结合。

Boosting的算法描述如下表示:


image.png

1.1 AdaBoosting

1.1.1 指数损失函数

指数损失函数是分类任务0/1损失函数的consistent替代函数,由于该函数可微,具有更好的数学性质,因此我们用它替代0/1损失函数作为优化目标。

为概率分布,可简单理解为在数据集中进行一次随机抽样,每个样本被取到的概率;表示在概率分布上的期望,可简单理解为对数据集以概率进行加权后的期望,进一步指数损失函数可写为

\begin{aligned} \ell_{\exp }(H | \mathcal{D}) &=\mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}}\left[e^{-f(\boldsymbol{x}) H(\boldsymbol{x})}\right] \\ &=\sum_{\boldsymbol{x} \in D} \mathcal{D}(\boldsymbol{x}) e^{-f(\boldsymbol{x}) H(\boldsymbol{x})} \end{aligned}
其中是在数据分布上取得样本x的概率。

1.1.2AdaBoost的加性模型

AdaBoost算法可基于加性模型推导,即

在该算法中,第一个基分类器是通过将基学习算法用于初始数据分布而得;此后迭代生成和,当基分类器基于分布产生后,该基分类器的权重应使得最小化指数损失函数。

\begin{aligned} \ell_{\exp }\left(\alpha_{t} h_{t} | \mathcal{D}_{t}\right) &=\mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}_{t}}\left[e^{-f(\boldsymbol{x}) \alpha_{t} h_{t}(\boldsymbol{x})}\right] \\ &=\mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}_{t}}\left[e^{-\alpha_{t}} \mathbb{I}\left(f(\boldsymbol{x})=h_{t}(\boldsymbol{x})\right)+e^{\alpha_{t}} \mathbb{I}\left(f(\boldsymbol{x}) \neq h_{t}(\boldsymbol{x})\right)\right] \\ &=e^{-\alpha_{t}} P_{\boldsymbol{x} \sim \mathcal{D}_{t}}\left(f(\boldsymbol{x})=h_{t}(\boldsymbol{x})\right)+e^{\alpha_{t}} P_{\boldsymbol{x} \sim \mathcal{D}_{t}}\left(f(\boldsymbol{x}) \neq h_{t}(\boldsymbol{x})\right) \\ &=e^{-\alpha_{t}}\left(1-\epsilon_{t}\right)+e^{\alpha_{t}} \epsilon_{t} \end{aligned}

其中表示基分类器与真实函数对样本分类不一致的概率,即基分类器的分类正确率。
令对求导后等于0,解得

这就是AdaBoost算法的分类器权重更新公式,分类器的权重仅与的分类错误率有关。

对于样本分布的更新策略,AdaBoost在获得后需要调整样本分布,使得下一轮基学习器能够纠正的一些错误,确切来说是对分类错误的那些样本产生更大的关注,以降低整体的分类损失。从表达式上,应最小化

\begin{aligned} \ell_{\exp }\left(H_{t-1}+h_{t} | \mathcal{D}\right) &=\mathbb{E}_{x \sim \mathcal{D}}\left[e^{-f(x)\left(H_{t-1}(x)+h_{t}(x)\right)}\right] \\ &=\mathbb{E}_{x \sim \mathcal{D}}\left[e^{-f(x) H_{t-1}(x)} e^{-f(x) h_{t}(x)}\right] \end{aligned}

根据西瓜书上的推导,上式等价于应满足

其中是在原分布上的一个新分布,理想的应在分布下最小化分类误差。的更新规则为:
\begin{aligned} \mathcal{D}_{t+1}(\boldsymbol{x}) &=\frac{\mathcal{D}(\boldsymbol{x}) e^{-f(\boldsymbol{x}) H_{t}(\boldsymbol{x})}}{\mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}}\left[e^{-f(\boldsymbol{x}) H_{t}(\boldsymbol{x})}\right]} \\ &=\frac{\mathcal{D}(\boldsymbol{x}) e^{-f(\boldsymbol{x}) H_{t-1}(\boldsymbol{x})} e^{-f(\boldsymbol{x}) \alpha_{t} h_{t}(\boldsymbol{x})}}{\mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}}\left[e^{-f(\boldsymbol{x}) H_{t}(\boldsymbol{x})}\right]} \\ &=\mathcal{D}_{t}(\boldsymbol{x}) \cdot e^{-f(\boldsymbol{x}) \alpha_{t} h_{t}(\boldsymbol{x})} \frac{\mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}}\left[e^{-f(\boldsymbol{x}) H_{t-1}(\boldsymbol{x})}\right]}{\mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}}\left[e^{-f(\boldsymbol{x}) H_{t}(\boldsymbol{x})}\right]} \\ &=\mathcal{D}_{t}(\boldsymbol{x}) \cdot e^{-f(\boldsymbol{x}) \alpha_{t} h_{t}(\boldsymbol{x})} \cdot {Z_t}\end{aligned}

其中Z_t是一个常数。

至此,从基于加性模型迭代式优化指数损失函数的角度推导出了AdaBoost算法。

1.2 GBDT

待补充...

1.3 Boosting算法的相关特性

Boosting算法要求基学习器能够在特定的数据分布下学习,因为在Boosting算法训练每一个基学习器的时候应用的都是一个新分布下的数据。在实际应用中可以通过“重赋权法”(re-weighting)实施,可接受带权样本的基学习算法如决策树便于利用重赋权法调整分布。“重采样法”(re-sampling)也可使用,即根据样本分布对训练集重新进行采样。一般来说,这两种做法没有明显优劣。

需要注意的是,在Boosting算法每一轮训练出基学习器后,需检查当前生成的基学习器是否满足基本条件(即准确性,不能比随机猜测差),一旦不满足则当前基学习器被抛弃且学习过程应停止。

2. Bagging

Bagging是并行式集成学习方法的代表。Bagging的基础思想与自助采样法(bootstrap sampling)有关,对原训练集使用Bootstrap采样,然后基于采样集训练一个基学习器,重复这个过程T次即可得到T个基学习器,将这T个基学习器进行结合就完成了Bagging的基本流程。在对预测输出进行结合时,Bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法。

Bagging的算法描述如下表示:


image.png

2.1 Bootstrap sampling

给定包含m个样本的数据集,对其m次有进行放回的随机抽样,可得到含有m个样本的数据集。这样做有一部分数据会在中出现多次,而另一部分数据在中不出现。根据

可知约有36.8%的样本未出现在采样集中。

Bootstrap原本是一种用在模型评估中划分训练集/测试集的方法,在Bagging算法中用来改变原数据集的分布,来保证集成学习基学习器的“多样性”。

2.2 随机森林 Random Forest

随机森林(Random Forest, RF)是Bagging的一个变体。随机森林的基学习器选用的是决策树,并在这一集出上进一步在决策树训练过程中引入了随机属性选择:在对当前结点的属性集合(大小为d)选择最优属性时,先随机选择出一个k个属性的子集,再在子集上选择划分用的最优属性。一般情况下,推荐值。

Random Forest在Bagging对样本分布扰动的基础上,进一步对属性选择进行了扰动,这使得最终集成的泛化性能可通过个体学习器之间的差异增加而进一步提升。

3. 结合策略

完成基学习器的训练后,接下来需要选择合适的结合策略,将基学习器的输出结合起来形成最终的输出。
(1)
对于数值型输出,结合策略主要是“平均法”,又分为简单平均法和加权平均法。加权平均法的权重一般是从训练数据(以及基学习器在训练数据上的表现)学习而得。一般而言,在个体学习器性能相差较大时宜用加权平均法,而在个体学习器性能相近时宜使用简单平均法。
(2)
对分类任务来说,最常见的结合策略是“投票法”,又分为绝对多数投票法、相对多数投票法和加权投票法。对于可输出分类置信度的学习器来说,分类置信度可转化为类概率使用,也可使用类概率进行结合。
(3)
“学习法”是在训练数据很多时使用的一种强大的结合策略,即使用另一个学习器来结合。此时我们将基学习器称为初级学习器,用于结合的学习器称为次级学习器。
次级学习器的输入特征是各初级学习器的输出,样例标记仍是初级学习器样本的标记。一般来说,训练次级学习器时使用的训练集要与初级学习器训练时使用的训练集不同,以免过大的过拟合风险。可以使用交叉验证法产生次级学习器的训练样本。

你可能感兴趣的:(集成学习(ensemble learning))