[读书笔记]《西瓜书》第八章 集成学习
第八章 集成学习
花了五篇文章把贝叶斯分类器总结完了,接下来要看集成学习算法了,不过个人推荐还是先看第九章——聚类算法那一章的内容,然后再回头看集成学习这一章的内容,感觉对于整体的内容安排更加合适一点。不过为了符合读书笔记这个内容组织形式,所以还是按照章节的顺序来。对于集成学习这块,大家现在接触的一些SOTA模型基本上都是集成模型,所以了解的内容也一定很多,这里这个章节就不组织太多内容了,优先介绍书上的内容,然后再补充一个章节的个人结合一些模型的总结和理解就差不多了。好了,废话不多说,我们开始本章的知识点学习吧~
8.1 个体与集成
集成学习(ensemble learning)
概念
通过构建并结合多个学习器来完成学习任务
别称
多分类器学习(multi-classifier system)
基于委员会的学习(committee-based learning)
结构
先产生一组“个体学习器”(individual learner),再用某种策略将它们结合起来
分类:
- 同质(homogeneous):集成的个体学习器只包含同种类型(基学习器 base learner),相应的学习算法称为“基学习算法”(base learning algorithm)
- 异质(heterogeneous):集成的个体学习器由不同的学习算法组成(组件学习器 component learner)
目的
集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能
弱学习器(weak learner)尤为明显:泛化性能略优于随机猜测的学习器
类型
根据个体学习器的生成方式:
- 个体学习器间存在强依赖关系
- 必须串行生成的序列化方法
- Boosting
- 个体学习器间不存在强依赖关系
- 可同时生成的并行化方法
- Bagging和“随机森林”(Random Forest)
如何获得比最好的单一学习器更好的性能?
经验表现
投票法(voting):少数服从多数
个体学习器要有一定的准确性,不能差于弱学习器
学习器之间要有“多样性”(diversity),学习器间要有差异
理论推导
考虑二分类问题的集成学习来看
- $y \in {-1, 1}$
- 真实函数 $f$
- 假定基分类器的错误率为 $\epsilon$
则每个基分类器 $h_i$ 有 $P(h_i(\boldsymbol{x}) \neq f(\boldsymbol{x})) = \epsilon$
假定采用简单投票法病结合T个基分类器
集成分类正确: $F(\boldsymbol{x}) = \text{sign}\left(\sum_{i=1}^Th_i(\boldsymbol{x})\right)$
集成分类错误率:$P(F(\boldsymbol{x}) \neq f(\boldsymbol{x})) = \sum_{k=0}^{[T/2]}\binom{T}{k}(1-\epsilon)^k\epsilon^{T-k} \le \exp \left( -\frac{1}{2}T(1-2\epsilon)^2 \right)$
假定基分类器之间相互独立,随着个体分类器个数增大,集成的错误率指数级下降,最终趋于零
事实上:个体学习器是为了解决同一个问题训练出来的,显然不可能相互独立;个体学习器的“准确性”和“多样性”本身是存在冲突的
8.2 Boosting
Boosting是一族可将弱学习器升为强学习器的算法,主要关注如何降低偏差
算法逻辑
- 先从初始训练集训练处一个基学习器
- 再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注
- 然后基于调整后的样本分布来训练下一个学习器
- 如此重复进行,直至学习器数目达到预先指定的T值,最终将这T个基学习器进行加权结合
AdaBoost
Boosting 族算法最著名的代表是AdaBoost [Freund and Schapire, 1997]
AdaBoost 算法有多种推导方式,比较容易理解的是基于"加性模型" (additive model) ,即基学习器的线性组合
基于“加性模型”的推导方式
公式表达 $$ H(\boldsymbol{x}) = \sum_{t=1}^T\alpha_t h_t(\boldsymbol{x}) $$ $h_t(\boldsymbol{x})$ 是第 $t$ 次训练出来的分类器
$\alpha_t$ 是第 $t$ 次训练出来的分类器的权重
权重公式 $$ \alpha_t = \frac{1}{2}\ln\left(\frac{1-\epsilon_t}{\epsilon_t}\right) $$ 由 $\ln$ 函数的单调性可知,该分类器的权重只与分类器的错误率负相关(即 错误率越大,权重越低)
指数损失函数 $$ \ell_{\exp}(H|\mathcal{D}) = \mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}}\left[ e^{-f(\boldsymbol{x})H(\boldsymbol{x})} \right] $$ 参数说明:
- $f(\boldsymbol{x})$ 为样本的真实取值情况
- $H(\boldsymbol{x})$ 为集成学习分类器的取值情况
- $\boldsymbol{x} \sim \mathcal{D}$ 为一次从样本集合中的随机取样,并假定其样本集合服从某种分布
公式解释:
从指数损失函数 $e^{-f(\boldsymbol{x})H(\boldsymbol{x})}$ 可知:
- 若 $f(\boldsymbol{x})H(\boldsymbol{x})$ 同号,即预测准确,此时损失函数近似为 $e^{-|H(\boldsymbol{x})|} < 1$ ,且 $H(\boldsymbol{x})$ 值越大,则损失函数值越小
- 若 $f(\boldsymbol{x})H(\boldsymbol{x})$ 异号,即预测错误,此时损失函数近似为 $e^{|H(\boldsymbol{x})|} > 1$ ,且 $H(\boldsymbol{x})$ 值越大,则损失函数值越大
可以看出 $|H(\boldsymbol{x})|$ 越大意味着分类器本身对预测结果的信心越大,而最终损失函数的值则意味着预测结果的正确与否
基于“加性模型”$H(\boldsymbol{x})$ :
- 是将多次分类器的结果加权得到,因此其值 $|H(\boldsymbol{x})|$ 表达了集成学习对于样本的预测结果的信心
$\mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}}[·]$ 表达样本在 $\mathcal{D}$ 概率分布上的期望:
- 可简单理解为在一次随机取样中,数据集 $\mathcal{D}$ 中的样本被取到的概率
- $\mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}}\left[e^{-f(\boldsymbol{x})H(\boldsymbol{x})} \right]$ 可以理解为对数据集 $D$ 以概率分布 $\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})} $$
如何使指数损失函数最小化?
Step 1、 通过观察可以看出来指数损失函数的值域与H(x)相关 $$ \frac{\partial \ell_{\exp}(H|\mathcal{D})}{\partial H(\boldsymbol{x})} = -e^{-H(\boldsymbol{x})}P(f(\boldsymbol{x})=1|\boldsymbol{x})+e^{H(\boldsymbol{x})}P(f(\boldsymbol{x})=-1|\boldsymbol{x}) $$ Step 2、 每次迭代地生成 $h_t$ 和 $\alpha_t$ ,当基分类器 $h_t$ 基于分布 $\mathcal{D}_t$ 产生后,该基分类器的权重 $\alpha_t$ 应使 $\alpha_th_t$ 最小化指数损失函数
因为是基于”加性模型“,所以加性模型在欲求最小值的情况即为求每一项最小即可
如何理解?
$$
\begin{align}
\ell(\alpha_th_t|\mathcal{D}_t) & = \mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}_t}\left[ e^{-f(\boldsymbol{x})\alpha_th_t(\boldsymbol{x})} \right] \\
& = \mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}_t}\left[e^{-\alpha_t}\mathbb{I}(f(\boldsymbol{x}) = h_t(\boldsymbol{x})) + e^{\alpha_t}\mathbb{I}(f(\boldsymbol{x}) \neq h_t(\boldsymbol{x})) \right] \\
& = e^{-\alpha_t}P_{\boldsymbol{x} \sim \mathcal{D}_t}(f(\boldsymbol{x}) = h_t(\boldsymbol{x})) + e^{\alpha_t}P_{\boldsymbol{x} \sim \mathcal{D}_t}(f(\boldsymbol{x}) \neq h_t(\boldsymbol{x})) \\
& = e^{-\alpha_t}(1 - \epsilon_t) + e^{\alpha_t}\epsilon_t
\end{align}
$$
这是一次迭代过程中的损失函数,其中 $\epsilon_t = P_{\boldsymbol{x} \sim \mathcal{D}_t}(h_t(\boldsymbol{x}) \neq f(\boldsymbol{x}))$
求指数损失函数的偏导: $$ \frac{\partial \ell_{\exp}(\alpha_th_t|\mathcal{D}_t)}{\partial{\alpha_t}} = -e^{-\alpha_t}(1 - \epsilon_t) + e^{\alpha_t}\epsilon_t $$ 令其为零解得: $$ \alpha_t = \frac{1}{2}\ln\left( \frac{1-\epsilon_t}{\epsilon_t} \right) $$
Step 3、 每次迭代完成 $(H_{t-1})$ 之后的样本分布将进行调整,使下一轮的基学习器 $h_t$ 能纠正上一次迭代中的一些错误
最理想的状态就是下一轮训练能够纠正上一次迭代地全部错误
如何理解?
$$
\begin{align}
\ell_{\exp}(H_{t-1}+\alpha_th_t|\mathcal{D}) = \ell_{\exp}(H_{t-1}+h_t|\mathcal{D}) & = \mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}}[e^{-f(\boldsymbol{x})(H_{t-1}(\boldsymbol{x}) + h_t(\boldsymbol{x}))}] \\
& = \mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}}[e^{-f(\boldsymbol{x})H_{t-1}(\boldsymbol{x})} + e^{-f(\boldsymbol{x})h_t(\boldsymbol{x})}] \\
& \simeq \mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}}\left[e^{-f(\boldsymbol{x})H_{t-1}(\boldsymbol{x})}\left(1 - f(\boldsymbol{x})h_t(\boldsymbol{x}) + \frac{f^2(\boldsymbol{x})h_{t}^2(\boldsymbol{x})}{2} \right)\right] \\
& = \mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}}\left[ e^{-f(\boldsymbol{x})H_{t-1}(\boldsymbol{x})}\left( 1 - f(\boldsymbol{x})h_t(\boldsymbol{x}) + \frac{1}{2} \right) \right]
\end{align}
$$
理想基学习器:
$$
\begin{align}
h_t(\boldsymbol{x}) & = \underset{h}{\arg\min}\ell_{\exp}(H_{t-1} + h|\mathcal{D}) \\
& = \underset{h}{\arg\min}\mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}}\left[ e^{-f(\boldsymbol{x})H_{t-1}(\boldsymbol{x})}\left( 1 - f(\boldsymbol{x})h(\boldsymbol{x}) + \frac{1}{2} \right) \right] \\
& = \underset{h}{\arg\max} \mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}} \left[ e^{-f(\boldsymbol{x})H_{t-1}(\boldsymbol{x})}f(\boldsymbol{x})h(\boldsymbol{x}) \right] \\
& = \underset{h}{\arg\max} \mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}} \left[ \frac{e^{-f(\boldsymbol{x})H_{t-1}(\boldsymbol{x})}}{\mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}}[ e^{-f(\boldsymbol{x})H_{t-1}(\boldsymbol{x})}]}f(\boldsymbol{x})h(\boldsymbol{x}) \right] \\
& = \underset{h}{\arg\max}\mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}_t}[f(\boldsymbol{x})h(\boldsymbol{x})] \\
& = \underset{h}{\arg\min}\mathbb{E}_{\boldsymbol{x} \sim \mathcal{D}_t}\left[\mathbb{I}(f(\boldsymbol{x}) \neq h(\boldsymbol{x}))\right]
\end{align}
$$
即跟经验一致:理想的 $h_t$ 将在分布 $\mathcal{D}_t$ 下最小化分类误差
两种训练方式
重赋权法(re-weighting)
即在训练过程的每一轮中,根据样本分布为每个训练样本重新赋予一个权重
重采样法(re-sampling)
在每一轮的学习中,根据样本分布对训练集重新进行采样,再用重采样而得到的样本集对基学习器进行训练
拥有“重启动”机会以避免训练过程过早的停止
8.3 Bagging和随机森林
目的:
集成学习的目的是为了将多个弱学习器结合起来得到泛化性能更强的集成
需求:
为了获得更好的集成效果,则需要其中的每个个体学习器尽可能“独立”
方法:
从样本数据集中产生出不同的训练子集,并同时需要保证训练数据的一定数量。
相互有交叠的采样子集(bootstrap sampling)
Bagging(Bootstrap AGGregatING)
基本流程
利用自助采样法(bootstrap sampling)通过样本数据集,产生 $T$ 个包含 $m$ 个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合。
优势
算法复杂度:
Bagging 的算法复杂度为:$T(O(m)+O(s))$
基学习器的计算复杂度:$O(m)$
采样与决策的过程的复杂度:$O(s)$
因此Bagging的计算复杂度跟直接使用基学习算法训练一个学习器的复杂度同阶
Bagging 能够不经修改地用于多分类、回归等任务
样本使用方式
自助采样法带来的优势
- 每个基学习器只使用了初始训练集中的 63.2% 的样本
- 剩下 36.8% 的样本可作为验证集来对泛化性能进行”包外估计“(out-of-bag estimate)
包外样本的其他用途
- 当基学习器是决策树时,辅助剪枝,或用于估计决策树中各结点的后验概率以辅助对零训练样本结点的处理
- 当基学习器是神经网络时,辅助早期停止以减小过拟合风险
Bagging 主要关注降低方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更为明显
随机森林(Random Forest)
基本流程
RF是以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入随机属性选择
具体方式
在划分属性时,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分
$k$ 的可选取值:
- $k=d$ ,则基决策树的构建与传统决策树相同
- $k=1$ ,则是随机选择一个属性用于划分
- $k=\log_2d$,推荐值(Breiman)
盛誉:“代表集成学习技术水平的方法”
8.4 结合策略
学习器结合带来的好处
从统计的方面看
由于学习任务的假设空间往往很大,可能有很多假设在训练集上达到同样性能
避免因使用单学习器带来的泛化性能不佳
从计算的方面看
学习算法往往会陷入局部极小陷阱,单个学习器很容易陷入局部极小的风险
通过多个学习器可降低陷入局部极小陷阱的风险
从表示的方面看
某些学习任务的真实假设可能不在当前学习算法所考虑的假设空间中
避免当前算法学习器所考虑的的假设不在假设空间
常见的结合策略
平均法
主要是一些数值型输出 $h_i(\boldsymbol{x}) \in \mathbb{R}$
类型
- 简单平均法
$$ H(\boldsymbol{x}) = \frac{1}{T}\sum_{i=1}^{T}h_i(\boldsymbol{x}) $$
个体学习器性能相近时宜用简单平均法
- 加权平均法
$$ H(\boldsymbol{x})=\sum_{i=1}^Tw_ih_i(\boldsymbol{x}) $$
其中 $w_i$ 是个体学习器 $h_i$ 的权重,通常要求 $w_i \ge 0$, $\sum_{i=1}^Tw_i = 1$
个体学习器性能相差较大时宜使用加权平均法
投票法
主要是一些分类任务
学习器 $h_i$ 从类别标记集合 ${c_1,c_2,…,c_N}$ 中预测出一个标记,将 $h_i$ 在样本 $\boldsymbol{x}$ 上的预测输出表示为一个 $N$ 维向量$(h_i^1(\boldsymbol{x});h_i^2(\boldsymbol{x});…;h_i^N(\boldsymbol{x}))$ $h_i^j(\boldsymbol{x})$ 是 $h_i$ 在类别标记 $c_j$ 上的输出
类型
- 绝对多数投票法(majority voting)
$$
H(\boldsymbol{x}) =
\begin{cases}
c_j, & \text{if} \quad \sum_{i=1}^Th_i^j(\boldsymbol{x}) > 0.5\sum_{k=1}^N\sum_{i=1}^Th_i^k(\boldsymbol{x}) \\
\text{reject}, & \text{otherwise}
\end{cases}
$$
即若某标记得票超过半数,则预测为该标记;否则拒绝预测
- 相对多数投票法(plurality voting)
$$ H(\boldsymbol{x})=c_{\underset{j}{\arg\max}\sum_{i=1}^Th_i^j(\boldsymbol{x})} $$
即预测为得票最多的标记,若同时有多个标记获最高票,则从中随机选择一个
- 加权投票法(weighted voting)
$$ H(\boldsymbol{x})=c_{\underset{j}{\arg\max}\sum_{i=1}^Tw_ih_i^j(\boldsymbol{x})} $$
与加权平均法类似,加权后分数最高票为标记
根据学习器输出值还可以进一步分类:
- 类标记:$h_i^j(\boldsymbol{x}) \in {0, 1}$ —— 硬投票(hard voting)
- 类概率:$h_i^j(\boldsymbol{x}) \in [0,1]$ —— 软投票(soft voting)
不同类型的输出值不能混用
对一些能在预测类别标记的同时产生分类置信度的学习器,其分类置信度可转化为类概率使用
规范化:
- Platt 缩放(Platt scaling)
- 等分回归(isotonic regression)
学习法
通过另一个学习器来进行结合,即结合的方法就是本身就是一种学习法
Stacking(典型代表)
概念:
- 把个体学习器称为初学习器
- 用于结合的学习器称为次级学习器或元学习器
Stacking 本身是一种著名的集成学习方法,它也可看作一种特殊的结合策略
算法逻辑:
Stacking 先从初始数据集训练出初级学习器,然后“生成”一个新数据集用于训练次级学习器
- 在训练阶段,次级训练器是利用初级学习器产生的,若直接用初级学习器的训练集来产生次级训练器,则过拟合风险会比较大
- 一般通过使用交叉验证或留一法这样的方式,用训练初级学习器未使用的样本来产生次级学习器的训练样本
举例说明:(以 $K$ 折交叉验证为例)
- 初始训练集 $D$ 被随机划分为 $k$ 个大小相似的集合 $D_1,D_2,…,D_k$
- 令 $D_j$ 和 $\overline{D}_j = D \setminus D_j$ 分别表示第 $j$ 折的测试集和训练集
- 给定 $T$ 个初级学习算法,初级学习器 $h_{t}^{(j)}$ 通过在 $\overline{D}_j$ 上使用第 $t$ 个学习算法而得
- 对 $D_j$ 中每个样本 $\boldsymbol{x}i$ ,令 $z{it}=h_t^{(j)}(\boldsymbol{x}i)$ ,则由 $\boldsymbol{x}i$ 所产生的次级训练样例的示例部分为 $\boldsymbol{z}i = (z{i1},z{i2},…,z{iT})$ ,标记部分为 $y_i$
- 从这 $T$ 个初级学习器产生的次级训练集是 $D'={(\boldsymbol{z}i,y_i)}{i=1}^m$ ,然后 $D'$ 将用于训练次级学习器
泛化性能影响因素:
- 次级学习器的输入属性表示
- 次级学习算法
8.5 多样性
误差-分歧分解(error-ambiguity decomposition)
结论(概念):个体学习器准确性越高、多样性越好,则集成越好
推导过程
假定用个体学习器通过加权平均法结合产生的集成来完成回归学习任务
”分歧“的定义:
个体学习器的“分歧”
$$
A(h_i|\boldsymbol{x})=\left(h_i(\boldsymbol{x}) - H(\boldsymbol{x})\right)^2
$$
集成的“分歧”
$$
\begin{align}
\overline{A}(h|\boldsymbol{x}) & = \sum_{i=1}^T w_iA(h_i|\boldsymbol{x}) \\
& = \sum_{i=1}^T w_i\left( h_i(\boldsymbol{x}) - H(\boldsymbol{x}) \right)^2
\end{align}
$$
表征了个体学习器在样本上的不一致性,即在一定程度上反映了个体学习器的多样性
平方误差
个体学习器的平方误差 $$ E(h_i|\boldsymbol{x}) = \left( f(\boldsymbol{x}) - h_i(\boldsymbol{x}) \right)^2 $$ 集成的平方误差 $$ E(H|\boldsymbol{x})=\left( f(\boldsymbol{x}) - H(\boldsymbol{x}) \right)^2 $$
当我们用 $\overline{E}(h|\boldsymbol{x})=\sum_{i=1}^Tw_iE(h_i|\boldsymbol{x})$ 表示个体学习器误差的加权平均值
于是带入后者到前者的公式后我们得到
$$
\begin{align}
\overline{A}(h|\boldsymbol{x}) & = \sum_{i=1}^T w_iE(h_i|\boldsymbol{x}) - E(H|\boldsymbol{x}) \\
& = \overline{E}(h|\boldsymbol{x}) - E(H|\boldsymbol{x})
\end{align}
$$
令 $p(\boldsymbol{x})$ 表示样本的概率密度,则在全样本上有
$$
\sum_{i=1}^Tw_i\int A(h_i|\boldsymbol{x})p(\boldsymbol{x})d\boldsymbol{x} = \sum_{i=1}^T w_i\int E(h_i|\boldsymbol{x})p(\boldsymbol{x})d\boldsymbol{x} - \int E(H|\boldsymbol{x})p(\boldsymbol{x})d\boldsymbol{x}
$$
个体学习器 $h_i$ :
- 泛化误差:$E(h_i)=\int E(h_i|\boldsymbol{x})p(\boldsymbol{x})d\boldsymbol{x}$
- 分歧项:$A(h_i) = \int A(h_i|\boldsymbol{x})p(\boldsymbol{x})d\boldsymbol{x}$
集成的泛化误差:$E(H) = \int E(H|\boldsymbol{x})p(\boldsymbol{x})d\boldsymbol{x}$
带入上面方程:
- 令 $\overline{E}=\sum_{i=1}^T w_iE_i$ 表示个体学习器泛化误差的加权均值
- 令 $\overline{A} = \sum_{i=1}^Tw_iA_i$ 表示个体学习器的加权分歧值
最终得到 $$ E = \overline{E} - \overline{A} $$
PS:仅适用于回归学习,难以直接推广到分类学习任务上去
多样性度量(diversity measure)
结论(概念):用于度量集成中个体分类器的多样性,即估算个体学习器的多样化程度
典型做法:
考虑个体分类器的两两相似\不相似性
对于二分类任务,两两分类器的预测结果列联表(contingency table)
其中:a + b + c + d = m
常见的多样性度量方式
- 不合度量(disagreement measure)
$$ dis_{ij} = \frac{b + c}{m} $$
$dis_{ij} \in [0, 1]$,值越大则多样性越大
- 相关系数(correlation coefficient)
$$ \rho_{ij} = \frac{ad - bc}{\sqrt{(a+b)(a+c)(c+d)(b+d)}} $$
$\rho_{ij}$ 的值域为 $[-1, +1]$ ,若 $h_i$ 与 $h_j$ 无关,则值为 $0$ ;若正相关则值为正;若负相关则值为负
- $Q$ - 统计量(Q-statistic)
$$ Q_{ij}=\frac{ad-bc}{ad+bc} $$
$Q_{ij}$ 与 $\rho_{ij}$ 的符号性质相同,且 $|Q_{ij}| \ge |\rho_{ij}|$
- $\kappa$ - 统计量($\kappa$-statistic)
$$ \kappa = \frac{p_1 - p_2}{1 - p_2} $$
其中 $$ p_1 = \frac{a + d}{m} $$ 两个分类器取得一致的概率 $$ p_2 = \frac{(a + b)(a + c) + (c + d)(b + d)}{m^2} $$ 两个分类器偶然达成一致的概率
数值情况
- 若分类器 $h_i$ 与 $h_j$ 在 $D$ 上完全一致,则 $\kappa = 1$
- 若它们仅是偶然达成一致,则 $\kappa = 0$
- 仅在 $h_i$ 和 $h_j$ 达成一致的概率甚至低于偶然性的情况下取值为负
$\kappa$ - 误差图
-
数据点云的位置越高,则个体分类器准确性越低
-
点云的位置越靠右,则个体学习器的多样性越小
多样性增强
核心问题:在集成学习过程中如何有效的生成多样性大的个体学习器?
常见做法
数据样本扰动
实现方式:通过采样实现
- Bagging中的自助采样
- AdaBoost中的序列采样
基学习器分类
不稳定基学习器:数据稍加变化就会导致学习器有显著变动
- 决策树
- 神经网络
稳定基学习器:对数据样本的扰动不敏感
- 线性学习器
- 支持向量机
- 朴素贝叶斯
- $k$ 近邻学习器
输入属性扰动
实现方式:属性”子空间“(属性子集)
随机子空间(random subspace)
该算法从初始属性集中抽取出若干个属性子集,再基于每个属性子集训练一个基学习器
输出表示扰动
实现方式:对输出表示进行操纵以增强多样性
常见方法:
- 翻转法(Flipping Output):随机改变一些训练样本的标记
- 输出调制法(Output Smearing):将分类输出转化为回归输出后构建个体学习器
- ECOC法:利用纠错输出码将多分类任务拆解为一系列二分类任务来训练基学习器
算法参数扰动
实现方式:随机设置算法中的一些参数,产生差别较大的基学习器
常见方法:
- 负相关法(Negative Correlation):显式地通过正则化项来强制个体神经网络使用不同的参数
- 环节替换
- 将学习过程中某些环节用其他类似方式代替,从而达到扰动的目的
- 决策树的属性选择机制替换成其他的属性选择机制
不同的多样性增强机制可同时使用,像随机森林中同时使用了数据样本扰动和输入属性扰动