目录
1 个体与集成
集成学习通过构建并结合多个学习器来完成学习任务,也被称为多分类器系统、基于委员会的学习。
结构:产生一组个体学习器,然后使用某种策略将它们结合起来
- 集成分为同质的和异质的
同质集成中的个体学习器称为基学习器,对于学习算法称为基学习算法。
异质集成中的个体学习器是不同类型的,此时个体学习器称为组件学习器或称为个体学习器。
集成学习可以获得更为显著优越的泛化性能,对于弱学习器特别明显。要获得好的集成效果,个体学习器应该好而不同,个体学习器需要有一定的准确性和多样性。
根据个体学习器的生成方式,集成学习分为两大类
- 个体学习器间存在强依赖关系、必须串行生成的序列化方法,代表是Boosting。
- 以及个体学习器间不存在强依赖关系、可同时生成的并行化方法;代表是 Bagging 和“随机森林”。
2 Boosting
这是将弱学习器提升为强学习器的算法。
工作机制:
1.从初始训练集训练出一个基学习器,
2.根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注
3.基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。
最著名的代表是AdaBoost
这里说明基于加性模型,基学习器的线性组合
H ( x ) = ∑ t = 1 T a t h t ( x ) H(x)=\sum_{t=1}^{T}a_th_t(x) H(x)=∑t=1Tatht(x)
来最小化指数损失函数
l e x p ( H ∣ D ) = E x ∼ D [ e − f ( x ) H ( x ) ] l_{exp}(H|D)=E_{x\sim D}[e^{-f(x)H(x)}] lexp(H∣D)=Ex∼D[e−f(x)H(x)]
得到理想的基学习器
h t ( x ) = a r g m i n E x ∼ D t [ Π f ( x ) ≠ h ( x ) ] h_t(x)=argminE_{x\sim D_t}[\Pi f(x)\ne h(x)] ht(x)=argminEx∼Dt[Πf(x)=h(x)]
Boosting算法要求基学习器能对特定的数据分布进行学习,可以通过重赋权法来实施。即在训练过程的每一轮中,根据样本分布为每个训练样本重新赋予一个权重。
对于无法接受带权样本的基学习算法,能过通过重采样法处理,即在每一轮学习中,根据样本分布对训练集重新进行采样,再用重采样而得的样本集对基学习器进行训练。
偏差-方差分解的角度来看,Boosting主要关注降低偏差,能基于泛化性能相对弱的学习器构建出强集合。
3 Bagging与随机森林
要得到泛化性能强的集合,集合中的个体学习器要尽可能相互独立,设法使基学习器尽可能有较大的差异。如果每个数据子集之间没有交叉,每个基学习器只用到了一部分训练数据,基学习器的效果会较差。使用互有交叠的采样子集是一个很好的方法。
3.1 Bagging
这是并行式集成学习方法最著名的代表。该方法基于自助采样法,初始训练集中约有63.2%的样本出现在采样集中。
基本流程:采样出T个含m个训练样本的采样集,基于每个采样集训练出一个基学习器,再将这些基学习器进行集合。
对于分类任务使用简单投票法,对于回归任务使用简单平均法。
优点:
1.相比于AdaBoost只适用于二分类任务,Bagging能用于多分类,回归等任务。
2.由于基学习器只使用了初始训练集中63.2%的样本,剩下的样本可以用作验证集来对泛化性能进行包外估计。
H o o d ( x ) H^{ood}(x) Hood(x)表示对样本x的包外预测,
H o o b ( x ) = arg max y ∈ Y ∑ t = 1 T I ( h t ( x ) = y ) ⋅ I ( x ∉ D t ) H^{o o b}(\boldsymbol{x})=\underset{y \in \mathcal{Y}}{\arg \max } \sum_{t=1}^{T} \mathbb{I}\left(h_{t}(\boldsymbol{x})=y\right) \cdot \mathbb{I}\left(\boldsymbol{x} \notin D_{t}\right) Hoob(x)=y∈Yargmax∑t=1TI(ht(x)=y)⋅I(x∈/Dt),
则 Bagging 泛化误差的包外估计为
ϵ o o b = 1 ∣ D ∣ ∑ ( x , y ) ∈ D I ( H o o b ( x ) ≠ y ) \epsilon^{o o b}=\frac{1}{|D|} \sum_{(\boldsymbol{x}, y) \in D} \mathbb{I}\left(H^{o o b}(\boldsymbol{x}) \neq y\right) ϵoob=∣D∣1∑(x,y)∈DI(Hoob(x)=y).
包外样本的用途:
1.例如当基学习器是决策树时,可使用包外样本来辅助剪枝,或用于估计决策树中各结点的后验概率以辅助对零训练样本结点的处理 。
2.当基学习器是神经网络时,可使用包外样本来辅助早期停止以减小过拟合风险。
偏差-方差分解角度看,Bagging主要关注降低方差。
3.2 随机森林(RF)
RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。
对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后从这个子集中选择一个最优属性用于划分。一般 k = l o g 2 d k=log_2d k=log2d
优点:简单,容易实现,计算开销小,最终集合的泛化性能可通过个体学习器之间差异度的增加而进一步提升。
4 结合策略
学习器结合的三个好处:
1.统计方面看,由于学习任务的假设空间很大,可能有多个假设在训练集上达到同等性能,结合多个学习器可以减小误选导致的泛化性能不佳。
2.计算方面看,可降低陷入糟糕局部极小点的风险。
3.表现方面看,通过结合多个学习器,相应的假设空间有所扩大有可能学得更好的近似。
4.1 平均法
对数值型输出 h i ( x ) ∈ R h_i(x)\in R hi(x)∈R
简单平均法:
H ( x ) = 1 T ∑ i = 1 T h i ( x ) H(x)=\frac{1}{T}\sum_{i=1}^{T}h_i(x) H(x)=T1∑i=1Thi(x)加权平均法:
H ( x ) = ∑ i = 1 T w i h i ( x ) H(x)=\sum_{i=1}^{T}w_ih_i(x) H(x)=∑i=1Twihi(x)
其中 w i w_i wi是个体学习器 h i h_i hi的权重
对于规模较大的集成来说,要学习的权重较多,容易导致过拟合,加权平均法未必一定优于简单平均法。
4.2 投票法
绝对多数投票法(majority voting)
即若某标记得票过半数, 则预测为该标记; 否则拒绝预测.相对多数投票法(plurality voting)
H ( x ) = c a r g m a x ∑ i = 1 T h i j ( x ) H(x)=c_{argmax\sum_{i=1}^{T}h_i^j(x)} H(x)=cargmax∑i=1Thij(x)
即预测为得票最多的标记, 若同时有多个标记获最高票, 则从中随机选取一个.加权投票法(weighted voting)
H ( x ) = c j arg max ∑ i = 1 T w i h i j ( x ) H(\boldsymbol{x})=c_{j}^{\arg \max } \sum_{i=1}^{T} w_{i} h_{i}^{j}(\boldsymbol{x}) H(x)=cjargmax∑i=1Twihij(x) .
不同类型个体学习器可能产生不同类型的 h i j ( x ) h_i^j(x) hij(x)值,常见的有:
类标记: h i j ( x ) ∈ { 0 , 1 } h_i^j(x)\in \{0,1\} hij(x)∈{0,1},使用类标记的投票称为硬投票。
类概率: h i j ( x ) ∈ [ 0 , 1 ] h_i^j(x)\in [0,1] hij(x)∈[0,1],使用类概率的投票称为软投票。
4.3 学习法
学习法是通过另一个学习器来进行结合。
典型代表是Stacking,把个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器
Stacking先从初始数据集训练出初级学习器,然后“生成”一个新数据集用于训练次级学习器.在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记。
次级学习器的输入属性表示和次级学习算法对Stacking集成的泛化性能有很大影响。研究表明,将初级学习器的输出类概率作为次级学习器的输入属性,用多响应线性回归作为次级学习算法效果较好。
5 多样性
5.1 误差-分歧分解
对示例x,学习器 h i h_i hi的分歧为:
A ( h i ∣ x ) = ( h i ( x ) − H ( x ) ) 2 A(h_i|x)=(h_i(x)-H(x))^2 A(hi∣x)=(hi(x)−H(x))2
集成的分歧是:
A ‾ ( h ∣ x ) = ∑ i = 1 T w i ( h i ( x ) − H ( x ) ) 2 \overline{A}(h|x)=\sum_{i=1}^{T}w_i(h_i(x)-H(x))^2 A(h∣x)=∑i=1Twi(hi(x)−H(x))2
个体学习器 h i h_i hi和集成H的平方误差分别为:
E ( h i ∣ x ) = ( f ( x ) − h i ( x ) ) 2 E(h_i|x)=(f(x)-h_i(x))^2 E(hi∣x)=(f(x)−hi(x))2
E ( H ∣ x ) = ( f ( x ) − H ( x ) ) 2 E(H|x)=(f(x)-H(x))^2 E(H∣x)=(f(x)−H(x))2
个体学习器 h i h_i hi在全样本上的泛化误差和分歧项分别为:
集成的泛化误差为:
5.2 多样性度量
是用于度量集成中个体分类器的多样性,即估算个体学习器的多样化程度,典型做法是考虑个体分类器的两两相似/不相似性。对于二分类任务,两个分类器的预测结果列联合表为
不合度量
d i s i j = b + c m dis_{ij}=\frac{b+c}{m} disij=mb+c,值越大多样性越大。相关系数
p i j = a d − b c ( ( a + b ) ( a + c ) ( c + d ) ( b + d ) ) 1 / 2 p_{ij}=\frac{ad-bc}{((a+b)(a+c)(c+d)(b+d))^{1/2}} pij=((a+b)(a+c)(c+d)(b+d))1/2ad−bc
若 h i 与 h j h_i与h_j hi与hj无关,值为0,若 h i 与 h j h_i与h_j hi与hj正相关则值为正,否则为负。Q-统计量
Q i j = a d − b c a d + b c Q_{ij}=\frac{ad-bc}{ad+bc} Qij=ad+bcad−bck-统计量
k = p 1 − p 2 1 − p 2 k=\frac{p_1-p_2}{1-p_2} k=1−p2p1−p2
5.3 多样性增强
为了增加多样性,一般思路是在学习过程中引入随机性,常见做法是对数据样本,输入属性,输出表示,算法参数进行扰动。
- 数据样本扰动
数据样本扰动通常是基于采样法,此类做法简单高效,使用广,数据样本扰动对不稳定基学习器很有效,但有一些基学习器(稳定基学习器)对数据样本的扰动不敏感。 - 输入属性扰动
从不同子空间训练出的个体学习器有所不同。著名的随机子空间算法依赖于属性扰动,该算法从初始属性集抽取若干个属性子集,再基于每个属性子集训练一个基学习器。
若数据只包含少量属性,或者冗余属性很少,不适合使用输入属性扰动法。 - 输出表示扰动
基本思路是对输出表示进行操纵以增强多样性。可对训练样本的类标记稍作变动,如翻转法随机改变一些训练样本的标记。也可对输出表示进行转化,如输出调制法将分类输出转化为回归输出后构建个体学习器。 - 算法参数扰动
通过随机设置不同的参数,可产生差别较大的个体学习器。