何为集成?
集成学习:通过构建并结合多个学习器来完成学习任务,亦被称为多分类器系统。
个体学习器的构建
个体学习器通常由一个现有的学习算法,从训练数据产生。
比如:决策树算法、BP神经网络等。
同一类型学习器:同质集成,称之为基学习器
不同类型学习器:异质集成,称之为组件学习器
集成学习器的优势
优势:通过将多个学习器结合,常可获得比单一学习器显著优越的泛化性能,这对于弱学习器尤为明显。
弱学习器:泛化性能略优于随机猜测的学习器。
集成可行性的理论分析**
以上分析有一个关键的假设,即这几个学习器是相互独立的。
而这几个学习器的诞生是针对同一问题,这必然导致独立性失效。它们正确率的提高很可能是同样的。
综上所述,个体学习器的“准确性”与“多样性”是相互冲突的。
如何获得更好的性能?
Example:
(a)与(b)对比,体现了分类器需要不同。
(a)与(c)对比。体现了分类器需要性能好,至少不差于弱学习器。
总的而言。要求学习器好而不同。
集成分类
除了同质集成与异质集成,根据个体学习器的生成方式,我们可以将集成学习方法分为两大类。
个体学习器之间存在强依赖关系,我们需要采用串行生成的序列化方法。(Boosting)
反之,我们需要采用并行生成的序列化方法。(Bagging与随机森林)
并行化集成学习方法
自主采样法
完全的独立性在现实任务中完全做不到,但我们可以采用一些方式使基学习器尽可能地具有较大的差异。
一种做法是,在对数据集采样时,产生若干个不同的子集,从每个子集中训练出一个基学习器。
与此同时,我们并不希望个体学习器太差,如果采样出的每个子集都完全不同,则基学习器秩用到了很小一部分训练数据,这不足以进行有效学习,因此,我们考虑使用相互有交叠的采样子集。
因此,我们介绍自助采样法。
流程
1.给定包含m个样本的数据集D,采样产生数据集D‘;
2.每次随机从D中挑选一个样本,将其拷贝放入D‘,然后再将该样本放回初始数据集D中,使得该样本在下次采样时,仍然有可能被采到;
3.这个过程重复执行m次后,我们就得到了包含m个样本的数据集D’;
4.D中有一部分样本会在D‘中多次出现,而另一部分样本不出现。样本在m次采样中始终不被采到的概率是
(
1
−
1
m
)
m
(1-\frac{1}{m})^m
(1−m1)m,取极限得到
1
e
\frac{1}{e}
e1。约等于0.368。
Bagging(Bootstrap AGGregatING/自助聚集)
基本思想
并行构建T个分类器,并行训练,最终将所有分类器的结果进行综合(平均或投票),达到最终的预产效果。
算法**
特点
1:时间复杂度低。
解释:基学习器计算复杂度为
O
(
m
)
O(m)
O(m),投票的复杂度为
O
(
s
)
O(s)
O(s),则Bagging的复杂度为
T
(
O
(
m
)
+
O
(
s
)
)
T(O(m)+O(s))
T(O(m)+O(s)),由于
O
(
s
)
O(s)
O(s)很小,且T也不大,所以Bagging与训练一个基学习器的复杂度等阶。
2:直接适用于多分类、回归等任务,不只是二分类(Adaboost)。
3:可使用外包估计(自助采样法的优势)。
解释:每个基学习器只用了初始训练集63.2%的数据,剩余的样本可以用作验证集,来对泛化性能做外包估计。
另外,从偏差-方差分解的角度来看,Bagging主要关注降低方差,因此在不剪纸的决策树以及神经网络等易受样本影响的学习器上效果更好。
随机森林
Bagging的一个扩展变种。
以决策树为基学习器构建Bagging的基础上,进一步在决策树的训练过程中引入随机属性选择。
随机森林的随机性源自于采样的随机性和属性选择的随机性。
采样的随机性和属性选择的随机性。
属性选择的随机性体现在:
传统的决策树:当前节点的所有属性中选择一个最优属性。
随机森林:对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。k控制了随机性的引入程度,若k=d,则与传统决策树一致。推荐
k
=
log
2
d
k=\log_2{d}
k=log2d(d是可选属性数量)。
优势
关于基学习器的多样性:
Bagging只通过样本扰动产生。
随机森林中额外增加了属性扰动。
关于测试效率:
同时采用决策树的话:
随机森林的效率更高,因为只需要考察一个属性子集。而Bagging使用的是确定性的决策树。
关于泛化性能:
随机森林的泛化性能更好,因为增加了随机性。
串行化集成学习方法
Boosting——Adaboost(Adaptive Boosting/自适应增强)**
Boosting基本思想
1.给定初始训练数据,由此训练出第一个基学习器,并确定其权重;
2.对样本分布进行调整,在之前学习器做错的样本上投入更多关注;
3.对调整后的样本,训练下一个基学习器,确定其权重;
4.重复上述过程T次,将T个学习器加权结合。
其中,基学习器不在Boosting的考虑范围内。
需要解决的问题
1.在每一轮中,如何改变训练数据的权值和概率分布;
为了构建分类器之间的联系,使基分类器能不断优化分类结果,我们更改了权值分布。
2.如何将弱分类器组合成一个强分类器。——加权平均法
算法
基学习器部分的训练不在AdaBoosting推导的考虑范围内。
重点部分在于训练基分类器模块。
输入
训练数据集
T
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
N
,
y
N
)
T={(x_1,y_1),(x_2,y_2),...,(x_N,y_N)}
T=(x1,y1),(x2,y2),...,(xN,yN),其中y的标签为
{
−
1
,
+
1
}
\{-1,+1\}
{−1,+1}
弱学习算法
输出
最终分类器 G ( x ) G(x) G(x)
初始化训练数据的权值分布
D
1
=
(
ω
11
,
.
.
.
,
ω
1
i
,
.
.
.
,
ω
1
N
)
,
ω
1
i
=
1
N
,
i
=
1
,
2
,
.
.
.
,
N
D_1 = (\omega_{11},...,\omega_{1i},...,\omega_{1N}),\omega_{1i}=\frac{1}{N},i=1,2,...,N
D1=(ω11,...,ω1i,...,ω1N),ω1i=N1,i=1,2,...,N
N是特征数量。
训练基分类器
对
m
=
1
,
2
,
.
.
.
,
M
m=1,2,...,M
m=1,2,...,M
M是基分类器数量。
a)根据权值分布为
D
m
D_m
Dm的训练数据集学习,得到基分类器
G
m
(
x
)
G_m(x)
Gm(x);
b)计算 G m ( x ) G_m(x) Gm(x)在训练数据集上的分类误差率 e m = ∑ i = 1 N P ( G m ( x i ) ≠ y i ) = ∑ i = 1 N ω m i I ( G m ( x i ) ≠ y i ) e_m=\sum_{i=1}^NP(G_m(x_i)\not=y_i)=\sum_{i=1}^N\omega_{mi}I(G_m(x_i)\not=y_i) em=∑i=1NP(Gm(xi)=yi)=∑i=1NωmiI(Gm(xi)=yi)
c)计算 G m ( x ) G_m(x) Gm(x)的系数 a m = 1 2 log 1 − e m e m a_m=\frac{1}{2}\log\frac{1-e_m}{e_m} am=21logem1−em
d)更新训练数据集的权值分布:
D
m
+
1
=
(
ω
m
+
1
,
1
,
.
.
.
,
ω
m
+
1
,
i
,
ω
m
+
1
,
N
)
D_{m+1}=(\omega_{m+1,1},...,\omega_{m+1,i},\omega_{m+1,N})
Dm+1=(ωm+1,1,...,ωm+1,i,ωm+1,N)
ω
m
+
1
,
i
=
ω
m
,
i
Z
m
e
x
p
(
−
α
m
y
i
G
m
(
x
i
)
)
\omega_{m+1,i}=\frac{\omega_{m,i}}{Z_m}exp(-\alpha_my_iG_m(x_i))
ωm+1,i=Zmωm,iexp(−αmyiGm(xi))
Z
m
Z_m
Zm是规范化因子
Z
m
=
∑
i
=
1
N
ω
m
,
i
e
x
p
(
−
α
m
y
i
G
m
(
x
i
)
Z_m=\sum_{i=1}^N\omega_{m,i}exp(-\alpha_my_iG_m(x_i)
Zm=i=1∑Nωm,iexp(−αmyiGm(xi)
构建基分类器的线性组合
f
(
x
)
=
∑
m
=
1
M
α
m
G
m
(
x
)
f(x)=\sum_{m=1}^M\alpha_mGm(x)
f(x)=m=1∑MαmGm(x)
得到最终分类器
G
(
x
)
=
s
i
g
n
(
f
(
x
)
)
G(x)=sign(f(x))
G(x)=sign(f(x))
推导与解释
我们采用的损失函数为指数损失函数,其公式为:
l
o
s
s
i
=
exp
(
−
y
i
G
m
(
x
i
)
)
loss_i = \exp(-y_iG_m(x_i))
lossi=exp(−yiGm(xi))
分布更新公式
先入为主给出的,考虑的出发点是,提升误差率高的特征的权重。
基分类器
我们首先要让基分类器的效果最好。
接下来,我们证明的是在特定分布下,使基分类器取得良好的效果可以促进最终分类器的良好效果。
该部分从数学期望的角度分析了以下思路:特殊的分布更新方式得到的分布突出了误分类样本的重要性,在此分布下,我们需要计算出最优基分类器。
此外,我们认为
α
i
G
i
\alpha_iG_i
αiGi是互相独立的。
系数公式
思想:使损失函数的均值最小。
系数是为了让基分类器的效果更好。
AdaBoost特点
优点
1.不容易发生过拟合;
2.由于Adaboost并没有限制学习器的种类,所以可以使用不同的学习算法来构建弱分类器;
3.相对于bagging算法和RF算法,AdaBoost充分考虑的每个分类器的权重;
4.AdaBoost的参数少,实际应用中不需要调节太多的参数。
缺点
1.弱分类器数目难以设定,可以使用交叉验证来确定;
2.对异常样本敏感,异常样本在在迭代中可能会获得较高的权重,影响最终的强学习器预测准确性;、
3.训练比较耗时。
从偏差-方差的角度,Boosting主要关注降低偏差,因此Boosting能基于泛化性能相当弱的学习器构建出很强的集成。
结合策略
优势
第一,从统计方面来看,学习任务假设空间很大,可能有多个假设在训练集上达到同等的性能,采用单学习器可能导致泛化性能不佳;
第二,从计算方面来看,降低陷入局部极小点的风险;
第三,从表示方面来看,真实假设不再考虑的假设空间中,采用结合多学习器可达到近似的效果。
平均法
简单平均法
加权平均法
投票法
绝对多数投票法
相对多数投票法
取得票最多的标记。若多个标记获得最高票,则从中随机抽取。
加权投票法
学习法
把个体学习器称为初级学习器,把结合学习器称为次级学习器或元学习器。
用元学习器组织初级学习器。