AdaBoost 自适应 增强
Boosting系列代表算法,对同一训练集训练出不同的(弱)分类器,然后集合这些弱分类器构成一个更优性能的(强)分类器
传统Boosting方法存在两个问题:
1. 如何调整训练集的权重分布以训练出不同的弱分类器
2. 如何将各个弱分类器联合起来组成一个强分类器
AdaBoost解决方案:
1.从均匀权重分布开始,后一轮弱分类器的输入权重分布将
·提高前一轮弱分类器分类错误样本的权重
·降低前一轮弱分类器分类正确样本的权重
2.计算各个弱分类器 在训练集上的分类误差率,根据误差率计算各个弱分类器的 加权系数
·对新样本进行分类时,将各个弱分类器的计算结果加权求和,求得最终的分类结果
假设训练一个含有m个弱分类器Gi(i=1,2,...,m)的AdaBoost模型,n个训练样本xj,yj(j=1,2,...n),m个弱分类器输入权重分布 分别为
第一个分类器:D1(w11, w12, ..., w1j, ..., w1n)
第二个分类器:D2(w21, w22, ..., w2j, ..., w2n)
.... :...
第m个分类器:Dm(wm1,wm2,...,wmj,...,wmn) 【注意:任何情况下权重之和都为1,即对Di有 ∑n_j{wij} = 1】
1.初始化 D1中 w1j = 1/n, 按样本集以D1的权重分布 来训练 分类器 G1,得到分类模型 G1(x)
·计算 G1(x) 在训练集上的 分类误差率 e: (被G(x)误分类样本的权值之和)
e1 = P( G1(xj)≠yi )
= ∑n_j{ w1j* I(G1(xj)≠yi)} 【2.19】
其中 I(条件表达式) = 满足条件时值为1,不满足条件时为0
·计算 G1(x) 的加权系数 α: (多分类器集成时使用的权值)
α1 = 1/2 * ln( (1-e1)/e1 ) 【2.20】
·计算 G1(x) 的泛化因子 Z1:
Z1 = ∑n_j{ w1j*exp( -α1*yj*G1(xj) ) } 【2.21】
2.更新第二个分类器的权值分布 D2(w21, w22, ..., w2j, ..., w2n)
w2j = (w1j / Z1) * exp( -α1*yj*G1(xj) ) 【2.22】
·按样本集以D2的权重分布 来训练 分类器 G2,得到分类模型 G2(x)
·计算 G2(x) 在训练集上的 分类误差率 e2
·计算 G2(x) 的加权系数 α2
·计算 G1(x) 的泛化因子 Z2
3.同步骤2,依次迭代到 第m个分类器 为止
至此,得到m个分类器的 分类模型 G1,G2,...,GM 及其加权系数 α1,α2,...,αm
4.构建m个弱分类器的 线性组合模型 f(x):
f(x) = ∑m_i{ αi * Gi(x) } 【2.23】
=》得到最终的AdaBoost分类模型 Cls(x) = sign(f(x)) = sign( ∑m_i{ αi * Gi(x) } ) 【2.24】
同属于Boosting系列算法还有 XgBoost:https://blog.youkuaiyun.com/Tinkle2015/article/details/83859164
了解其他集成学习方法 可参考: https://blog.youkuaiyun.com/Tinkle2015/article/details/83859108