在上一篇中,我们讨论了集成学习中的Bagging方法,在本文中,我们将继续深入研究集成学习,学习Boosting方法
一. Boosting思想
在对Bagging思想中随机森林算法有了一定了解之后,我们会发现
在随机森林构建过程中,各棵树之间是相对独立的
也就是说:在构建第m棵子树的时候,不会考虑前面的m-1棵树
那么,我们能否对这个现象进行优化呢?
- 在构建第m棵子树的时候,考虑到前m-1棵子树的结果,会不会对最终
结果产生有益的影响? - 各个决策树组成随机森林后,最终结果能否存在一种既定的决策顺序,即哪颗子树先进行决策、哪颗子树后进行决策
针对上面提出的优化方向,集成学习又提出了提升学习(Boosting)思想
思想:
在弱学习器A的基础上训练得到弱学习器B
弱学习器B+弱学习器A的预测结果一定优于弱学习器A
即:每一步产生的弱预测模型加权累加到总模型中
boosting意义:
弱预测模型可以通过提升技术得到一个强预测模型
boosting思想:
可以用于回归和分类的问题
1. Adaboost 算法
Adaptive Boosting是一种迭代算法,即将基学习器的线性组合作为强学习器
既可以用于分类问题,也可以用于回归问题
AdaBoost算法主要用于解决分类问题,基学习器是CART分类树
AdaBoost算法也可以用于解决回归问题,基学习器是CART回归树,这种变体被称为AdaBoost.R2
具体操作:
1. 训练数据集,产生一个新的弱学习器
2. 使用该学习器对所有训练样本进行预测
3. 评估每个样本的重要性,即为每个样本赋予一个权重
如果某个样本点被预测的越正确,则将样本权重降低
如果某个样本点被预测的越错误,则将样本权重提高,即,越难区分的样本在下一次迭代中会变得越重要
注意:这里样本的权重是归一的
4. 通过迭代,得到n个基学习器
对于误差率较小的基学习器以大的权重值
对于误差率较大的基学习器以小的权重值
注意:这里基学习器的权重不归一
5. 线性组合所有基学习器
停止条件:
错误率足够小或者达到一定的迭代次数
以二分类任务为例子,Adaboost 将基分类器的线性组合作为强分类器,即
f ( x ) = ∑ m = 1 M α m G m ( x ) f(x) = \sum_{m=1}^{M}\alpha_{m}G_{m}(x) f(x)=m=1∑MαmGm(x)
公式解释:
G m ( x ) G_{m}(x) Gm(x)为基分类器,且 G m ( x ) = ± 1 G_{m}(x)=\pm1 Gm(x)=±1
α m \alpha_{m} αm为基分类器对应的权重,且 α m > 0 \alpha_{m}>0 αm>0,不归一
最终分类器是在线性组合的基础上进行Sign函数转换,因此最终的强学习器为:
G ( x ) = s i g n [ f ( x ) ] = s i g n [ ∑ m = 1 M α m G m ( x ) ] G(x) = sign[f(x)] = sign[\sum_{m=1}^{M}\alpha_{m}G_{m}(x)] G(x)=sign[f(x)]=sign[m=1∑MαmGm(x)]
公式解释:
当所有样本的加权和为正数时,输出 G ( x ) = 1 G(x)=1 G(x)=1
当所有样本的加权和为负数时,输出 G ( x ) = − 1 G(x)=-1 G(x)=−1
当所有样本的加权和为0时,返回任意值
根据上面的公式,我们用错误率构建损失函数,就会得到每个学习器的损失函数,即分错了的样本权重和:
l o s s = ∑ i = 1 n w i I [ G ( x i ) ≠ y i ] , I ( b ) = { 1 , b = T r u e 0 , b = F a l s e , ∑ i = 1 n w i = 1 loss = \sum_{i=1}^{n}w_{i}I[G(x_{i})\ne y_{i}] ,I(b)=\left\{\begin{matrix}1,b=True \\0,b=False\end{matrix}\right.,\sum_{i=1}^{n} w_{i}=1{\tiny } loss=i=1∑nwiI[G(xi)=yi],I(b)={
1,b=True0,b=False,i=1∑nwi=1
公式解释:
x i , y i x_{i},y_{i} xi,yi分别为训练集的特征值和标签值
∑ i = 1 n \sum_{i=1}^{n} ∑i=1n表示训练集中有n个样本
w i w_{i} wi为每个样本的权重,归一
G ( x i ) G(x_{i}) G(xi)为基学习器的预测值,即输入x值,输出+1 / -1
I [ G ( x i ) ≠ y i ] I[G(x_{i})\ne y_{i}] I[G(xi)=yi]表示当预测错误时, I 函数 I函数 I函数返回1
公式说明:
训练样本固定,但每个样本的权重不同,因此 G ( ) G( ) G()不同
这里,由于损失函数是分段函数,不方便求导,所以我们可以通过边界值来求导,即损失函数(上界)公式为:
l o s s = ∑ i = 1 n w i I [ G ( x i ) ≠ y i ] ≤ ∑ i = 1 n w i e ( − y i f ( x ) ) loss = \sum_{i=1}^{n}w_{i}I[G(x_{i})\ne y_{i}] \le \sum_{i=1}^{n}w_{i}e^{(-y_{i}f(x))} loss=i=1∑nwiI[G(xi)=yi]≤i=1∑nwie(−yif(x))
公式解释:
当 G ( x i ) ≠ y i G(x_{i})\ne y_{i} G(xi)=yi, I 函数 = 1 I函数=1 I函数=1,此时 f ( x ) < 0 , y i = 1 f(x)<0,y_{i} =1 f(x)<0,yi=1,即 e x > 1 e^{x}>1 ex>1
当 G ( x i ) = y i G(x_{i})= y_{i} G(xi)=yi, I 函数 = 0 I函数=0 I函数=0,此时 f ( x ) > 0 , y i = 1 f(x)>0,y_{i} =1 f(x)>0,yi=1,即 e x > 0 e^{x}>0 ex>0
现在假设我们已经得到了第 k − 1 k-1 k−1轮的强学习器:
f k − 1 ( x ) = ∑ j = 1 k − 1 α j G j ( x ) f_{k-1}(x)=\sum_{j=1}^{k-1}\alpha _{j}G_{j} (x) fk−1(x)=j=1∑k−1αjGj(x)
那么,对于第 k k k轮的强化学习器,可以写为:
f k ( x ) = f k − 1 ( x ) + α k G k ( x ) = ∑ j = 1 k α j G j ( x ) f_{k}(x)=f_{k-1}(x)+\alpha _{k}G_{k}(x)=\sum_{j=1}^{k}\alpha _{j}G_{j} (x) fk(x)=fk−1(x)+αkGk(x)=j=1∑kαjGj(x)
因此对于第m次迭代,损失函数为:
l o s s ( α m , G m ( x ) ) = ∑ i = 1 n w m − 1 , i e − ( y i f m ( x ) ) loss(\alpha _{m},G_{m}(x)) = \sum_{i=1}^{n}w_{m-1,i}e^{-(y_{i}f_{m}(x))} loss(αm,Gm(x))=i=1∑nwm−1,ie−(yifm(x))
公式解释:
w m − 1 , i w_{m-1,i} wm−1,i为第m-1轮中,每个样本的权重值
f m ( x ) f_{m}(x) fm(x)为第m轮传入的样本
注意:这里第m-1轮次的参数是已知的
公式推导:= ∑ i = 1 n w m − 1 , i e − ( y i ( f m − 1 ( x ) + α m G m ( x ) ) ) =\sum_{i=1}^{n}w_{m-1,i}e^{-(y_{i}(f_{m-1}(x)+\alpha _{m}G_{m}(x)))} =∑i=1nwm−1,ie