集成学习-task09-Boosting与Adaboost算法
前言
通过模型预测误差主要由两部分构成,偏差与方差。上一章节的学习我们了解到Bagging算法的思想实质上是主要通过降低方差的方式减少预测误差。而Boosting是从另外的与Bagging截然不同的思想,Boosting方法是使用同一组数据集进行反复学习,得到一系列简单模型,然后组合这些模型构成一个预测性能十分强大的机器学习模型。显然,Boosting思想提高最终的预测效果是通过不断减少偏差的形式,这与Bagging有着本质的不同。
Boosting原理
Boosting属于「序列化算法」,通过迭代训练的方式降低上一个基学习器(弱学习器)的偏差(通过更加关注上一个基学习器预测错误的样本,并忽略正确预测的样本实现),然后将训练好的弱学习器通过加法模型线性组合为强学习器。
Boosting算法族的两个核心问题:
1.迭代训练过程中如何降低模型的偏差?
2.如何将训练好的弱学习器组合为强学习器?
AdaBoost
AdaBoost算法是Boosting算法的典型代表,它是模型为加法模型、损失函数为指数函数、学习算法为前向分步算法时的二分类算法。
1.迭代训练过程中如何降低模型的偏差?
答:1. 提高那些被前一轮分类器错误分类的样本的权重,而降低那些被正确分类的样本的权重。这样一来,那些在上一轮分类器中没有得到正确分类的样本,由于其权重的增大而在后一轮的训练中“备受关注”。
2.如何将训练好的弱学习器组合为强学习器?
答:各个弱分类器的组合是通过采取加权多数表决的方式,具体来说,加大分类错误率低的弱分类器的权重,因为这些分类器能更好地完成分类任务,而减小分类错误率较大的弱分类器的权重,使其在表决中起较小的作用。
对于二分类问题,AdaBoost算法流程描述如下:
假设给定一个二分类的训练数据集:
T
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
N
,
y
N
)
T={(x1,y1),(x2,y2),⋯,(xN,yN)}
T=(x1,y1),(x2,y2),⋯,(xN,yN),其中每个样本点由特征与类别组成。特征
x
i
∈
X
⊆
R
n
xi∈X⊆R^n
xi∈X⊆Rn ,类别
y
i
∈
Y
=
yi∈Y=
yi∈Y={−1,+1}$ ,
X
X
X是特征空间,
Y
Y
Y是类别集合,输出最终分类器
G
(
x
)
G(x)
G(x) 。Adaboost算法如下:
下面对Adaboost算法做如下说明:
对于步骤(1),假设训练数据的权值分布是均匀分布,是为了使得第一次没有先验信息的条件下每个样本在基本分类器的学习中作用一样。
对于步骤(2),每一次迭代产生的基本分类器 Gm(x)Gm(x) 在加权训练数据集上的分类错误率
代表了在 Gm(x)中分类错误的样本权重和,这点直接说明了权重分布 Dm与 Gm(x) 的分类错误率 em 有直接关系。同时,在步骤(2)中,计算基本分类器 Gm(x)的系数
α
m
α_m
αm它表示了 Gm(x)在最终分类器的重要性程度,
α
m
α_m
αm的取值由基本分类器 Gm(x)的分类错误率有直接关系.当
e
m
⩽
1
/
2
e_m⩽1/2
em⩽1/2时,
α
m
⩾
0
α_m⩾0
αm⩾0 ,并且
α
m
α_m
αm随着
e
m
e_m
em 的减少而增大,因此分类错误率越小的基本分类器在最终分类器的作用越大!
最重要的,对于步骤(2)中的样本权重的更新:
因此,从上式可以看到:被基本分类器Gm(x)错误分类的样本的权重扩大,被正确分类的样本权重减少,二者相比相差
对于步骤(3),线性组合 f(x)实现了将M个基本分类器的加权表决,系数
α
m
α_m
αm 标志了基本分类器 Gm(x)的重要性,值得注意的是:所有的
α
m
α_m
αm之和不为1。 f(x)的符号决定了样本x属于哪一类。
损失函数:
但是该函数并不单调,所以无法进行优化。那么通过优化下面的式子来达到优化损失函数的效果。
总结
Adaboost是一种Boosting的融合算法,它通过级联的方式把一系列若模型融合在一起变成一个强模型
优点: 既可以处理连续数据集,也可以处理离散数据集,模型鲁棒性很强,泛化能力强;结构简单,解释性强。
缺点:对异常样本敏感,异常样本在迭代过程中易获得更大的权重么,影响整个模型的预测结果。
参考链接: https://www.jianshu.com/p/5da385de165e.
参考链接: https://github.com/datawhalechina/team-learning-data-mining/tree/master/EnsembleLearning.