目录
-
-
- 0 简介
- 1 目标优化函数
- 2 求解目标优化函数
-
- 2.1 把β看做常数
- 2.2 求解β
- 3 训练流程
- 4 训练弱分类器
- 5 强分类器的误差
- 6 其他类型的AdaBoost
- 7 实现细节
-
0 简介
Boosting的一种 关注于之前错分的样本
对样本赋予权重 弱分类器也有权重
强分类器由若干个弱分类器乘各自的权重组成
弱分类器为决策树
sgn(F(x))sgn(F(x))sgn(F(x))
F(x)=∑i=1Mβif(x;γ)F(x)=\sum\limits_{i=1}^{M}{\beta_if(x;\gamma)}F(x)=i=1∑M?βi?f(x;γ)
1 目标优化函数
采用指标损失函数 e?yF(x)e^{-yF(x)}e?yF(x)
需要求解的参数:
- 弱分类器的权重 β\betaβ
- 弱分类器的参数 γ\gammaγ
用 Fj?1F_{j-1}Fj?1?代表上一个强分类器 FjF_{j}Fj?代表新的强分类器:
Fj=Fj?1+βf(x)F_{j}=F_{j-1}+\beta f(x)Fj?=Fj?1?+βf(x)
所以目标优化函数为
min∑i=1le?yi[Fj?1+βf(xi)]min\sum_{i=1}^{l}e^{-y_i[ F_{j-1}+\beta f(x_i)]}mini=1∑l?e?yi?[Fj?1?+βf(xi?)]
min∑i=1lwij?1?e?yiβf(xi)min\sum_{i=1}^{l}w_i^{j-1}·e^{-y_i\beta f(x_i)} mini=1∑l?wij?1??e?yi?βf(xi?)
其中wij?1=e?yiFj?1w_i^{j-1}=e^{-y_iF_{j-1}}wij?1?=e?yi?Fj?1?
代表 (j-1) 的强分类器对样本 i 的损失 或者说样本 i 在 (j-1) 时的权重
2 求解目标优化函数
2.1 把β看做常数
yiβf(xi)y_i\beta f(x_i)yi?βf(xi?) 只能取1或-1 f最优解的参数是使得下式最小:
min∑i=1lwij?1I(yi≠f(xi))min\sum_{i=1}^{l}w_i^{j-1}I(y_i\neq f(x_i))mini=1∑l?wij?1?I(yi???=f(xi?))
(这里求决策树f参数时其实我没太明白 为什么忽略了yi=f(xi)时的β )
(是因为为了求目标函数最小 都使得yi=f(xi))
2.2 求解β
目标优化函数变为最小化以下:
L(β)=e?β×∑yi=f(xi)wij?1+eβ×∑yi≠f(xi)wij?1=e?β×∑i=1lwij?1+(eβ?e?β)×∑yi≠f(xi)wij?1L(\beta)=e^{-\beta } ×\sum_{y_i=f(x_i)}w_i^{j-1}+e^{\beta } ×\sum_{y_i\neq f(x_i)}w_i^{j-1}\\\\=e^{-\beta } ×\sum_{i=1}^{l}w_i^{j-1}+(e^{\beta}-e^{-\beta})×\sum_{y_i\neq f(x_i)}w_i^{j-1}L(β)=e?β×yi?=f(xi?)∑?wij?1?+eβ×yi???=f(xi?)∑?wij?1?=e?β×i=1∑l?wij?1?+(eβ?e?β)×yi???=f(xi?)∑?wij?1?
解得β(当前弱分类器权重)
errj=∑yi≠f(xi)wij?1∑i=1lwij?1=上一个强分类器错分样本权重(损失)之和上一个强分类器所有样本权重(损失)之和err_j=\cfrac{\sum_{y_i\neq f(x_i)}w_i^{j-1}}{\sum_{i=1}^{l}w_i^{j-1}}=\cfrac{上一个强分类器错分样本权重(损失)之和}{上一个强分类器所有样本权重(损失)之和}errj?=∑i=1l?wij?1?∑yi???=f(xi?)?wij?1??=上一个强分类器所有样本权重(损失)之和上一个强分类器错分样本权重(损失)之和?
β=12ln?1?errjerrj\beta=\cfrac12 \ln\cfrac{1-err_j}{errj}β=21?lnerrj1?errj??
3 训练流程
流程
(1) 样本初始化权重为1l\cfrac1ll1?
(2) 对于t=1,2,3…T个训练好的弱分类器 做以下:
- ①得到ft(x)f_t(x)ft?(x)的加权错误率 ete_tet?
- ②计算弱分类器权重 βt=12ln?1?errjerrj\beta_t=\cfrac12 \ln\cfrac{1-err_j}{errj}βt?=21?lnerrj1?errj??
- ③更新样本权重
wit=wit?1?e?yift(xi)βtwit=wit∑i=1lwit(归一化)w_i^t=w_i^{t-1}·e^{-y_if_t(x_i)\beta_t}\\\\w_i^t=\cfrac{w_i^t}{\sum_{i=1}^{l}{w_i^t}} (归一化)wit?=wit?1??e?yi?ft?(xi?)βt?wit?=∑i=1l?wit?wit??(归一化)
4 训练弱分类器
min∑i=1lwij?1I(yi≠f(xi))min\sum_{i=1}^{l}w_i^{j-1}I(y_i\neq f(x_i))mini=1∑l?wij?1?I(yi???=f(xi?))
Gini纯度公式为:
G=∑i(∑j,yj=iwL,j)2∑iwL,i+∑i(∑j,yj=iwR,j)2∑iwR,iG=\cfrac{\sum\limits_i(\sum\limits_{j,y_j=i}w_{L,j})^2}{\sum_iw_{L,i}}+\cfrac{\sum\limits_i(\sum\limits_{j,y_j=i}w_{R,j})^2}{\sum_iw_{R,i}}G=∑i?wL,i?i∑?(j,yj?=i∑?wL,j?)2?+∑i?wR,i?i∑?(j,yj?=i∑?wR,j?)2?
5 强分类器的误差
每增加一个弱分类器(保证加权错误率小于1/2) 误差上限会减小
误差上界会乘一个小于1的数 证明公式太长了 先略掉
6 其他类型的AdaBoost
- 上述是离散型的AdaBoost
- 实数型Adaboost
- LogitBoost
- Gentle型AdaBoost
7 实现细节
- 弱分类器一般选择深度很小的决策树
- 弱分类器应选择非线性的
- 弱分类器个数:训练时增加弱分类器 当训练误差或测试误差达到阈值 终止训练
- 样本权重削减:样本权重趋于0的样本在后面的训练中可以剔除掉