AdaBoost,GBDT以及XGBoost

一、AdaBoost

1 AdaBoost与GBDT比较

AdaBoost的迭代是重点拟合那些之前分错的样本。GBDT是在拟合残差。

相同点:1 加性模型+前向分步算法  2 每一步训练一个弱学习器以弥补前面模型的不足,都不能并行计算 3 都是减小偏差

不同点:1 AdaBoost中,当前学习器的“不足”由样本权重来决定  2 GBDT中当前学习器的不足“由”梯度决定

AdaBoost一般用于分类,GBDT一般用于回归,所以损失函数也不同。

AdaBoost存在对异常值敏感的问题,异常值被分类错误将会得到较大的权重,使得训练权重出现偏差。

2 AdaBoost几种基本机器学习算法哪个抗噪能力强,哪个对重采样不敏感?

提升方法包括AdaBoost,GBDT,随机森林等。AdaBoost算法可将弱分类器,例如决策树,LR,SVM等进行组合,提高预测能力。

AdaBoost与SVM算法的抗噪能力强,SVM作为弱分类器。

3 AdaBoost与随机森林的区别

对于提升方法,有两个问题需要回答:1 每一轮如何改变训练数据的权值或概率分布?2 如何将弱分类器组合成一个强分类器?

AdaBoost:提高被前一轮弱分类器错误分类的样本的权值,而降低那些被正确分类的样本的权值。加权多数表决方法,加大分类误差率小的弱分类器的权值,使其在表决中起较大作用,减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用。

随机森林:训练样本随机选取。虽然每一棵树的训练样本个数都是样本总数N,但是每一个样本的随机选取都是有放回的选取。这样,每一颗树的训练样本几乎都不相同。特征随机选取,假设训练数据有M个特征,随机森林的每一棵树只选取m(m < M)个特征用于构建决策树。每一棵树选取的特征可能都不完全相同。

强调:随机森林不进行剪枝。决策树剪枝是为了防止过拟合,而随机森林的“随机”已经防止了过拟合,因此不需要剪枝。

补充:随机森林有两个参数需要人为控制,一个是森林中树的数量,一般建议取很大。另一个是m的大小,推荐m的值为M的均方根。

4 boosting算法的思路是什么?

boosting的核心思想不同于bagging,它在基于样本预测结果对照与真实值的差距,进行修正,再预测再修正,逐步靠近正确值。

5 简述一下AdaBoost的权值更新方法

 

6 训练过程中,每轮训练一直存在分类错误的问题,整个AdaBoost却能快速收敛,为何?

每轮训练结束后,AdaBoost会对样本的权重进行调整,调整的结果是越到后面被错误分类的样本权重会越高。而后面的分类器为了达到较低的带权分类误差,会把样本权重高的样本分类正确。这样造成的结果是,虽然每个弱分类器可能都有分错的样本,然而整个AdaBoost却能保证对每个样本进行正确分类,从而实现快速收敛。

7 AdaBoost的优缺点?

优点:能够基于泛化性能相当弱的学习器构建出很强的集成,不容易发生过拟合

缺点:对异常样本比较敏感,异常样本在迭代过程中会获得较高的权值,影响最终学习器的性能表现

二、GBDT

https://blog.csdn.net/qq_24519677/article/details/82020863

GBDT的思想类似于数值优化中梯度下降求参方法,参数沿着梯度的负方向以小步长前进,最终逐步逼近参数的局部最优解。在GB中,模型每次拟合残差,逐步逼近最终结果。

GBDT全称梯度下降树,在传统机器学习算法里面是对真实分布拟合的最好的几种算法之一,在前几年深度学习还没有大行其道之前,GBDT在各种竞赛是大放异彩。

GBDT主要由三个概念组成:回归决策树(即DT),Gradient Boosting(即GB),Shrinkage

Shrinkage:每次走一小步逐渐逼近结果的效果,要比每次迈一大步很快逼近结果的方式更容易避免过拟合。即它不完全信任每一个残差树,它认为每棵树只学到了真理的一小部分,累加的时候只累加一小部分,通过多学几棵树弥补不足。Shrinkage仍然以残差作为学习目标,但对于残差学习出来的结果,只累加一小部分(step*残差)逐步逼近目标,step一般都比较小,如0.01~0.001()

1 GBDT的算法流程?

GBDT是通过采用加法模型(基函数的线性组合),不断减小训练过程产生的残差来达到将数据分类或回归的算法。针对一般损失函数优化困难问题,利用损失函数的负梯度在当前模型的值作为残差的近似值进行求解。

 

2 GBDT如何选择、构建特征?

GBDT选择特征的细节就是问你CART生成的过程。GBDT的弱分类器模型选择的是CART。CART生成的过程其实就是一个选择特征的过程。假设我们目前共有M个特征。第一步,我们需要从中选择出一个特征j,作为二叉树的第一个节点。然后对特征j的值选择一个切分点m,一个样本的特征j的值如果小于m,则分成一类,如果大于m,则分成另一类。如此便构建了CART树的一个节点。其他节点的生成过程和这个是一样的。

那么在每轮迭代的时候,如何选择这个特征j,以及如何选择特征j的切分点m?

回归树——最小二乘回归树生成法:

  • 历训练样本的所有的特征,对于特征j,我们遍历特征j所有特征值的切分点c.
  • 找到可以让下面这个式子最小的特征j以及切分点c:

(构建):将样本输入到GBDT生成的树中,所有树的叶子节点可以构建一个向量,输入样本可以获得一个关于叶子节点的0-1向量,将这个向量作为该样本的组合特征,和原来的特征一起输入到逻辑回归当中训练。

3 GBDT如何用于分类?

GBDT无论用于分类还是回归一直都是使用的CART回归树

这里面的核心是因为GBDT每轮的训练是在上一轮的训练的残差基础之上进行训练的。

这里的残差就是当前模型的负梯度值。这个要求每轮迭代的时候,弱分类器的输出的结果相减是有意义的。残差相减是有意义的。而类别结果相减是无意义的,因此需要数值结果进行相减,所以使用CART回归树。

具体例子:

具体到分类这个任务上面来,我们假设样本X总共有K类。来了一个样本x,我们需要使用GBDT来判断x属于样本的哪一类。

第一步,在训练的时候,针对样本X每个可能的类都训练一个分类回归树。假如目前样本有三类,即K=3。样本X属于第二类。那么针对该样本x的分类结果,其实我们可以用一个三维向量 [0, 1, 0] 来表示。0表示样本不属于该类,1表示样本属于该类。

针对样本有三类的情况,我们实质上是在每轮的训练的时候同时训练三棵树。第一棵树针对样本x的第一类,输入为(x, 0)。第二棵树输入针对样本x的第二类,输入为(x,1)。第三棵树针对样本x的第三类,输入为(x, 0)。

这里我们每棵树的训练过程就是CART的生成过程。我们参照之前的生成树的程序可以解出三棵树,以三棵树对x类别的预测值f1(x), f2(x), f3(x)。那么在此类训练中,我们仿照多分类的逻辑回归,使用softmax来产生概率,则属于类别1的概率:

并且,我们可以针对类别1求出残差 y11(x) = 0 - p1(x);类别2残差 y22(x) = 1 - p2(x);类别3残差 y33(x) = 0 - p3(x)。然后开始第二轮训练,针对第一类输入为(x, y11(x)),针对第二类输入为(x, y22(x)),针对第三类输入为(x, y33(x))。继续训练出三棵树。一直迭代M轮。每轮构建三棵树。

当训练完毕以后,新来一个样本x1,我们需要预测该样本的类别的时候,可以有这三个式子产生三个值,f1(x),f2(x),f3(x)。样本属于某个类别c的概率为:

4 GBDT通过什么方式减少误差?

每棵树都是在拟合当前模型的预测值和真实值之间的误差,GBDT是通过不断迭代来使得误差减小的过程。

5 GBDT的效果相比于传统的LR / SVM效果为什么好一些?

GBDT基于树模型,继承了树模型的优点(对异常值鲁棒不相关的特征干扰低(LR需要加正则)、可以很好地处理缺失值受噪音的干扰小

6 GBDT如何加速训练?

小数据集使用True,可以加快训练。是否预排序,预排序可以加速查找最佳分裂点。

7 GBDT的参数有哪些,如何调参?

 

8 GBDT实战中遇到的一些问题?

 

9 GBDT的优缺点

优点:

可以灵活处理各种类型的数据,包括连续纸和离散值。

在相对少的调参时间情况下,预测的准备率也可以比较高。这个是

缺点:由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过子采样的SGBT来达到部分并行。

10 GBDT如何进行正则化

 

11 GBDT中哪些部分可以并行

 

12 如何防止过拟合

 

三、XGBoost

1 XGBoost与GBDT相比有哪些区别

(1) 传统GBDT以CART作为基分类器,XGBoost还支持线性分类器

(2) 传统GBDT在优化时只用到一阶导数信息,XGBoost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数

(3) XGBoost在代价函数里加入了正则项,用于控制模型的复杂度

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值