GDBT

目录

GDBT

1概念:

2. GBDT的优点和局限性有哪些?

2.1 优点

2.2 局限性

3. RF(随机森林)与GBDT之间的区别与联系


 

GDBT

GDBT(gradient boosting decision tree):全名为梯度提升树,内部子树为CART树,基于Boosting集成思想提出的。

参考详解  发现优质的开源项目(经典的各种ML、DL方法)

1概念:

GBDT的原理很简单,就是所有弱分类器的结果相加等于预测值,然后下一个弱分类器去拟合误差函数对预测值的残差(这个残差就是预测值与真实值之间的误差,在使用MSE时,)。当然了,它里面的弱分类器的表现形式就是各棵树。

举一个非常简单的例子,比如我今年30岁了,但计算机或者模型GBDT并不知道我今年多少岁,那GBDT咋办呢?

  • 它会在第一个弱分类器(或第一棵树中)随便用一个年龄比如20岁来拟合,然后发现误差有10岁;
  • 接下来在第二棵树中,设置当前预测值为10岁,用当前树用拟合10岁,发现差距还有4岁;
  • 接着在第三棵树中拟合残差4岁,发现差距只有1岁了;
  • 最后在第四课树中用1岁拟合剩下的残差,完美。
  • 最终,四棵树的结论加起来,就是真实年龄30岁(实际工程中,gbdt是计算负梯度,用负梯度近似残差)。

为何gbdt可以用用负梯度近似残差呢?

回归任务下,GBDT 在每一轮的迭代时对每个样本都会有一个预测值,此时的损失函数为均方差损失函数,

那此时的负梯度是这样计算的

 

所以,当损失函数选用均方损失函数是时,每一次拟合的值就是(真实值 - 当前模型预测的值),即残差。此时的变量是y',即“当前预测模型的值”,也就是对它求负梯度。在神经网络中梯度优化是以具体参数更细为代表,而在GDBT中,是以树这种模型空间代替参数来进行更新的。

注意:GBDT做分类时,每一次迭代需要有k棵树,k是类别数目,每棵树对一个类别进行预测。每个叶子节点也只是输出一个值,可把这颗树看作一个函数f,f将输入样本的特征映射为该值。(注意,该值并不是类别的概率,概率还需要一个logistic转化,logistic regression是:特征x先转化成实值z,然后z经过logistic regression转化成概率p(x),这里叶子节点的值相当于z)。
 

2. GBDT的优点和局限性有哪些?

2.1 优点

  1. 预测阶段的计算速度快,树与树之间可并行化计算。
  2. 在分布稠密的数据集上,泛化能力和表达能力都很好,这使得GBDT在Kaggle的众多竞赛中,经常名列榜首。
  3. 采用决策树作为弱分类器使得GBDT模型具有较好的解释性和鲁棒性,能够自动发现特征间的高阶关系,并且也不需要对数据进行特殊的预处理如归一化等。

2.2 局限性

  1. GBDT在高维稀疏的数据集上,表现不如支持向量机或者神经网络。
  2. GBDT在处理文本分类特征问题上,相对其他模型的优势不如它在处理数值特征时明显。
  3. 训练过程需要串行训练,只能在决策树内部采用一些局部并行的手段提高训练速度。

3. RF(随机森林)与GBDT之间的区别与联系

相同点

都是由多棵树组成,最终的结果都是由多棵树一起决定。

不同点

  • 组成随机森林的树可以分类树也可以是回归树,而GBDT只由回归树组成
  • 组成随机森林的树可以并行生成,而GBDT是串行生成
  • 随机森林的结果是多数表决表决的,而GBDT则是多棵树累加之和
  • 随机森林对异常值不敏感,而GBDT对异常值比较敏感
  • 随机森林是减少模型的方差,而GBDT是减少模型的偏差
  • 随机森林不需要进行特征归一化。而GBDT则需要进行特征归一化

4. 调参优化

代码调优:参考

参数优化:

loss : {'deviance 对数损失 - sum(log(pi**pi))', 'exponential 指数损失 e**(-y*f(x))'},(默认='deviance')

learning_rate : float, optional (default=0.1),每棵按照学习率做缩减

n_estimators : int (default=100),迭代次数

max_depth : integer, optional (default=3),树的最大深度,限制了每棵树的叶子节点数目

criterion : string, optional (default="friedman_mse"),分裂标准,默认为均方误差

min_samples_split : int, float, optional (default=2),节点分裂时需要的最小样本数目

min_samples_leaf : int, float, optional (default=1),叶子节点最小样本数目,预剪枝

subsample : float, optional (default=1.0),样本采样率

max_features : int, float, string or None, optional (default=None),寻找最优分裂特征时需要的特征数量

min_impurity_split : float,停止生长阈值,预剪枝

max_leaf_nodes : int or None, optional (default=None),叶子节点最大数目

min_impurity_decrease : float, optional (default=0.),节点分裂阈值 

feature_importances_ : array, shape = [n_features],特征重要性

oob_improvement_ : array, shape = [n_estimators],损失变化列表

train_score_ : array, shape = [n_estimators],训练样本得分

loss_ : LossFunction,损失函数 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值