集成方法 Boosting原理

1.Boosting方法思路

Boosting方法通过将一系列的基本分类器组合,生成更好的强学习器

基本分类器是通过迭代生成的,每一轮的迭代,会使误分类点的权重增大

Boosting方法常用的算法是AdaBoost(Adaptive Boosting)、GBDT (Gradient Boosting Decison Tree)

2.AdaBoost算法

算法要解决的2个问题(分类)

  • 如何改变训练集的权值

  提高前一轮分类错误样本的权值,降低分类正确样本的权值

  • 如何将基本分类器组合成强学习器

   加权多数表决法,通过投票来决定最后的结果,分类误差率小的基本分类器在投票中起较大作用,分类误差率大的基本分类器在投票中起较小作用。

算法思想

输入:训练集D;弱学习算法;训练轮数T

1)初始化权值分布D1(x) = 1/n

2)(for i=1;i<T;i++){

  a.计算不同基本分类器G的分类误差率e,找到最小分类误差率ei

 

  b.根据最小分类误差率ei,选择最小的基本分类器Gi

  c.计算Gi的权值αi;

  

  d.更新权值分布为Di+1(x);

 

 

  e.计算最终分类器G(x),并用G(x)分类,没有误分类点退出循环

}

 

例子

例子来源于李航《统计学习方法》P140,数据表如下

x0123456789
y111-1-1-1111-1

首先是算法的输入,训练集D就是上边的表格,弱学习算法采用决策树桩(选一个数v,比v大的分一类,比v小的分一类),训练轮数输入5

1)初始化权值分布$D_1(x) =({1 \over 10},{1 \over 10},{1 \over 10},{1 \over 10},{1 \over 10},{1 \over 10},{1 \over 10},{1 \over 10},{1 \over 10},{1 \over 10})$

2)第一轮,i=1

a.由于弱学习算法是决策树桩,v可取的值为0.5,1.5,2.5,…,8.5

case1:当x<v时,y=1;x>v时,y=-1;

当v取0.5时,x=1,2,6,7,8分错类,故e = ${0.1*1+0.1*1+0.1*1+0.1*1+0.1*1} = 0.5$

同理可求v取1.5,2.5,…,8.5时的分类误差率,不同v求得的分类误差率如下

0.51.52.53.54.55.56.57.58.5
0.50.40.30.40.50.60.50.40.3

当v=2.5时,x=6,7,8分错类,分类误差率最低为e1 = ${0.1*1+0.1*1+0.1*1} = 0.3$

case2:当x<v时,y=-1;x>v时,y=1;不同v求得的分类误差率如下

0.51.52.53.54.55.56.57.58.5
0.50.60.70.60.50.40.50.60.7

b.因此可以得到基本分类器

$$G_1(x) = \begin{cases}1,&x<2.5\\-1,&x>2.5\end{cases}$$

c.计算G1(x)的权值α1

$$α_1 = {1 \over 2} ln {1- e_1 \over e_1} = 0.4236$$

d.更新权值分布为D2(x)
$$Z_1=0.1*e^{-0.4236*1*1}+0.1*e^{-0.4236*1*1}+...+0.1*e^{-0.4236*-1*-1}=0.7e^{-0.4236}+0.3e^{0.4236}$$

$$w_{21}={0.1e^{-0.4236} \over 0.7e^{-0.4236}+0.3e^{0.4236}} = 0.07143$$

同理可以计算其他w2j,最后得到更新后的权值分布D2,这个D2留着在下一轮用

$$D_2=(0.07143,0.07143,0.07143,0.07143,0.07143,0.07143,0.16667,0.16667,0.16667,0.07143)$$

e.计算第一轮最终分类器G(x)

$$G(x) =0.4236G_1(x) $$

用sign[G(x)]分类有x=6,7,8三个误分类点

第二轮,i=2

a.由于弱学习算法是决策树桩,v可取的值为0.5,1.5,2.5,…,8.5

case1:当x<v时,y=1;x>v时,y=-1;

0.51.52.53.54.55.56.57.58.5
0.643
0.5710.50.5710.6430.7140.5480.3810.214

当v=8.5时,x=4,5,6分错类,分类误差率最低为e2 = ${0.07143*1+0.07143*1+0.07143*1} =0.2143$

case2:当x<v时,y=-1;x>v时,y=1;不同v求得的分类误差率如下

0.51.52.53.54.55.56.57.58.5
0.357
0.429
0.50.4290.3570.2860.4520.6190.786

b.因此可以得到基本分类器

$$G_2(x) = \begin{cases}1,&x<8.5\\-1,&x>8.5\end{cases}$$

c.计算G2(x)的权值α2

$$α_2 = {1 \over 2} ln {1- e_2 \over e_2} = 0.6496$$

d.更新权值分布为D3(x)

$$D_3=(0.0455,0.0455,0.0455,0.1667,0.1667,0.1667,0.1060,0.1060,0.1060,0.0455)$$

e.计算第二轮最终分类器G(x)

$$G(x) =0.4236G_1(x) + 0.6496G_2(x)$$

用sign[G(x)]分类有x=3,4,5三个误分类点

第三轮,i=3

a.由于弱学习算法是决策树桩,v可取的值为0.5,1.5,2.5,…,8.5

case1:当x<v时,y=1;x>v时,y=-1;

0.51.52.53.54.55.56.57.58.5
0.409
0.364
0.318
0.4850.6520.8180.7120.6060.5

case2:当x<v时,y=-1;x>v时,y=1;不同v求得的分类误差率如下

0.51.52.53.54.55.56.57.58.5
0.591
0.636
0.6820.5150.348
0.1820.2880.394
0.5

当v=5.5时,x=0,1,2,9分错类,分类误差率最低为e3 = ${0.0455*1+0.0455*1+0.0455*+0.0455*1} =0.182$

b.因此可以得到基本分类器

$$G_3(x) = \begin{cases}-1,&x<5.5\\1,&x>5.5\end{cases}$$

c.计算G3(x)的权值α3

$$α_3 = {1 \over 2} ln {1- e_3 \over e_3} = 0.7514$$

d.更新权值分布为D4(x)

$$D_4=(0.125,0.125,0.125,0.102,0.102,0.102,0.065,0.065,0.065,0.125)$$

e.计算第三轮最终分类器G(x)

$$G(x) =0.4236G_1(x) + 0.6496G_2(x)+0.7514G_3(x)$$

用sign[G(x)]分类有0个误分类点,故最终的分类器是

$$G(x) =0.4236G_1(x) + 0.6496G_2(x)+0.7514G_3(x)$$

3.GBDT算法

GBDT使用上一轮的强学习器$f_i$拟合数据,得到训练值和实际值之间的差异r;下一轮的弱学习器$G_{i+1}$使用r训练,新的强学习器$f_{i+1}=f_i+G_{i+1}$;一直迭代,直到损失很小。

 GBDT常用Loss

参考自:https://www.cnblogs.com/pinard/p/6140514.html

这里我们再对常用的GBDT损失函数做一个总结。

对于分类算法,其损失函数一般有对数损失函数和指数损失函数两种:

a) 如果是指数损失函数,则损失函数表达式为$L(y, f(x)) = exp(-yf(x))$

b) 如果是对数损失函数

对于回归算法,常用损失函数有如下4种:

a)均方差,这个是最常见的回归损失函数了,$L(y, f(x)) =(y-f(x))^2$

b)绝对损失,这个损失函数也很常见,$L(y, f(x)) =|y-f(x)|$

对应负梯度误差为:$sign(y_i-f(x_i))$

 

转载于:https://www.cnblogs.com/vshen999/p/10183976.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. Bagging、随机森林和boosting都是集成学习方法,它们的目的都是通过组合多个弱学习器来构建一个强学习器。它们的主要区别在于: - Bagging(bootstrap aggregating):通过随机从原始数据集中有放回地采样得到多个子集,然后使用这些子集训练多个弱学习器,最后通过投票或平均等方式来集成这些弱学习器,从而得到一个强学习器。 - 随机森林:随机森林是一种特殊的Bagging方法,它采用决策树作为弱学习器,并在构建每个决策树时,随机选择一部分特征进行训练,从而增加了模型的多样性。 - Boosting:通过迭代地训练多个弱学习器,每次训练都根据上一轮的结果调整样本权重,使得分类错误的样本得到更高的权重,从而使得下一轮的弱学习器更加关注分类错误的样本。最后将所有弱学习器的预测结果加权求和得到最终的预测结果。 2. Adaboost(Adaptive Boosting)是一种常用的Boosting方法,在训练过程中,它根据上一轮的结果调整样本权重,并且根据弱学习器的表现来调整每个弱学习器的权重。具体过程如下: - 初始化样本权重为相等值,并选择一个弱学习器作为初始模型。 - 对于每一轮: - 使用当前样本权重训练一个弱学习器,并根据其在训练集上的表现计算其权重。 - 根据弱学习器的权重,更新样本权重。对于分类错误的样本,其权重会增加;对于分类正确的样本,其权重会减少。 - 最终将所有弱学习器的预测结果加权求和得到最终的预测结果。 Adaboost的优点在于它可以提高模型的分类精度,并且能够有效地处理高维数据的分类问题。但是它也有一些缺点,比如对异常值比较敏感,需要较长的训练时间等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值