GBDT

一、流程

基函数线性加权和得到最终的强分类器。每轮迭代得到一个弱分类器,这个分类器是在上一轮的残差基础上得到的。本轮就是要找一个cart树,使得本轮的损失函数值更加的小。

二、如何选择特征(就是如何生成cart树)

回归树:平方误差和最小化,对于特征A=a时,集合D的误差最小时,就选择这个特征值最为切分点。

分类树:使用基尼系数,计算对于特征A=a时,集合D的基尼指数最小时,就选择这个特征最为切分点。

三、如何构建特征?

GBDT本身不能产生特征的,产生的是特征的组合。

例如用gbdt生成两颗子树(cart回归树),一共5个叶子节点,那么将一个样本放入到这两个子树中,肯定会在这两个子树的某一个叶子节点输出,最后有两个输出。令输出的叶子节点为1,否则为0,那么组成的向量就是[0,1,1,0,0],这就是特征的组合后的向量,再将这个和原来的特征一起输入的逻辑回归函数中进行训练,最后的效果得到了提升,而不用全都是人工设定的特征了。

四、损失函数拟合?

用损失函数的负梯度去拟合本轮损失值(残差)的近似值,进而去拟合一颗cart回归树

五、如何用于分类呢?

更改损失函数就行了。使用指数损失函数、对数似然函数等。

六、优缺点

灵活处理各种类型数据;

调参时间少,且准确率高;

使用健壮的损失函数,对异常值的鲁棒性很强;

七、GBDT为什么比神经网络计算性能好?

boost是降低偏差,在很弱的弱分类器上就能够得到和强大的强分类器。bagging是降低方差,在神经网络上用的多。

神经网络是bagging,而且是bp算法,bp算法是基于梯度下降法的,所以在计算过程中是非常复杂的,梯度要累乘,计算量很大,但是gbdt每次迭代都是在上一轮的迭代基础上进行更新的,而且每个cart树神很浅的,因为是很简单的弱分类器,所以相应的计算量没有这么通过bp算法计算的计算量大。

 

posted @ 2019-08-11 22:16  Austin_anheqiao  阅读(703)  评论(0编辑  收藏  举报