gbdt的缺点,GBDT是什么
——GBDT的原理很简单,所有弱分类器的结果加在一起等于预测值。directory==3354GBDT的原理很简单。将所有弱分类器的结果相加后,就是预测值。==1.3.gbdt算法的过程1.1助推思想1.2解释GBDT是怎么一回事3。GBDT的优势和局限是什么?3.1优势3.2局限4。RF(随机森林)和GBDT 5的区别与联系。代码实现
解释GBDT算法的过程
Gdt (GradientBoosting决策树)全称为斜率改进的决策树,它采用了Boosting的思想。
1.1 Boosting思想Boosting方法在训练基分类器时采用串行方式,基分类器之间存在依赖关系。基本思想是将基本分类器逐层堆叠,每一层在训练中对前一层的误分类样本赋予更高的权重。测试时,根据各层分类器结果的权重得出最终结果。
装袋不同于系列训练中的助推。Bagging方法在训练过程中对各个基分类器没有很强的依赖性,可以并行训练。
1.2 GBDT是指GBDT的原理很简单,把所有弱判别器的结果加起来等于预测值,然后用弱判别器拟合误差函数预测值的残差。残差是预测值和真实值之间的误差。当然,弱分类器用树来表示。
举个很简单的例子,比如我30岁了,但是计算机和模型的GBDT不知道我多大了。GBDT怎么样?
它在20岁时用第一个弱分类器(或者第一棵树)随机拟合,发现误差是10岁。
其次,用第二棵树,6年生,拟合剩余损失,发现相差只有4年生;
然后在第三棵树上用3岁拟合剩余的差,差的只有1岁;
最后用第四课的树来拟合剩余的残差,非常完美。
最后结合四棵树的结论,实际树龄为30年(实际工程中,gbdt计算负斜率,用负斜率近似残差)。
为何gbdt可以用用负梯度近似残差呢?
在回归任务中,GBDT预测了每次迭代中每个样本的值。这时的损失函数就是均方误差损失函数。
因此,如果损失函数的均方损失函数设置为“是”,则每次拟合的值为“真值-当前模型的预测值”,即残差。这个时候的变量就是求“当前预测模型的值”,也就是求相对于它的负斜率。
训练过程
简单来说,假设训练集中只有A、B、C、D四个人。他们的年龄分别是14、16、24和26岁。其中,A和B分别是高一和高三学生;c和D分别是应届毕业生和工作两年的员工。用传统的回归决策树训练,可以得到下图所示的结果。
现在我们对GBDT也这样做。因为数据太少,限制做两个以上的叶节点。也就是说,每棵树上只有一根树枝。然后,我仅限于学习两棵树。得到下图所示的结果。
在第一个分支中,如图1所示,A和B的年龄相近,C和D的年龄相近,所以把它们分开,用每个分支的平均年龄作为预测值。
这时计算残差(残差是指A的实际值-A的预测值=A的残差),所以A的残差是14的实际值-15的预测值=残差-1。
请注意。a的预测值是指前面所有树的累积和。这里,前面只有一棵树,所以直接15。如果有树,必须全部累加,作为a的预测值。
然后,去第二棵树学习那些残差-1,1,-1,1而不是A B C D的原值,第二棵树只有1和-1两个值,直接分成两个节点。也就是说把A和C分成左,B和D分成右进行计算。(残差都是0,说明第二棵树的预测值等于实际值。只要把第二棵树的结论加到第一棵树上,就可以得到实际年龄,大家就可以得到真实的预测值。
也就是说,目前A、B、C、D的预测值与实际年龄相符。太好了!
答:答:14岁高一种马
D: 26岁,工作两年的员工,经常被粗鲁的行人质疑购物太多。预测年龄D=25 1=26。
因此,GBDT需要累积多个树的分数来获得最终的预测分数。在每次迭代中,基于现有的树,添加一棵树来拟合预测结果和前一棵树的真实值之间的残差。
3.GBDT的优势和局限是什么?3.1优势预测阶段计算速度快,可以在树间并行计算。
在密集分布的数据集上,GBDT凭借其优秀的泛化能力和表达能力,在Kaggle的多次比赛中始终名列前茅。
通过使用决策树作为弱分类器,GBDT模型具有良好的解释力和鲁棒性,能够自动发现特征之间的高阶关系。
3.2局限性GBDT在高维稀疏数据集上的表示比支持向量机和神经网络更差。
与其他模型相比,GBDT在处理文本分类特征方面不如数值。
特征明显的时候。
训练过程需要串行训练,所以只能在决策树中使用一些局部并行的方法来提高训练速度。
4.RF(随机森林)和GBDT的异同:
都是由多棵树组成的,最终的结果是由多棵树共同决定的。
当使用CART树时,RF GBDT可以是分类树或回归树。
差异:
形成随机森林的树可以并行生成,而GBDT是串行生成的。
随机森林的结果是多数票,而GBDT是多棵树的累积和。
随机森林对异常值不敏感,而GBDT对异常值敏感。
随机森林是为了减少模型的方差,而GBDT是为了减少模型的偏差。
随机森林不需要特征规范化。而GBDT需要特征归一化。
5.代码的实现是表面的,但需要实践。
GitHub:https://github.com/NLP-LOVE/ML-NLP/blob/master/Machine学习/3.2 GBDT/GBDT_demo.ipynb
以上内容引用自:
github/ML-NLP/机器学习/3.2 GBDT
——快乐花瓣补充代码参考:
Python科学计算——Numpy.genfromtxt
pd的分析。DataFrame()函数(最清晰的解释)
iloc的使用(最简单)
scikit-learn梯度提升树(GBDT)概述(包括所有参数的详细介绍)