Gradient Boosting各个子模型之间使用的样本是一样的么,还是子模型2的输入数据只是模型1预测错的那部分数据

来源:13-6 Ada Boosting 和 Gradient Boosting

慕虎6493860

2020-03-05

Gradient Boosting各个子模型之间使用的样本是一样的么,还是子模型2的输入数据只是模型1预测错的那部分样本数据

写回答

1回答

liuyubobobo

2020-03-06

模型 2 的样本和模型 1 的样本完全一致。只不过对应的 y 变了,是真正的 y 和模型 1 预测的 y 的差。也就是 模型 2 拟合的是不能被模型 1 拟合的那部分。这里的“那部分”,不是从 x 的角度说的,而是从 y 的角度说的。


==========


我明白你的意思了。是这样的:gradient boosting 的原理主要作用在回归问题上。请首先基于回归问题。可以再理解一下上面我的回答,在回归问题上,应该很清晰。


比如 y 的真值是 1.5,但是模型 1 预测的结果是 1.2,那么对于模型 2 来说,这个 x 对应的 y 就是 0.3。也就是模型 2 的作用是预测出模型 1 的误差,把模型 1 犯得错误修正。当然,模型 2 可能也有误差,于是需要模型 3,依次类推。


但是,gradient boosting 的思想可以用在分类问题上。但是内部的具体计算,依然是回归的思路:计算的是损失函数的值。因为即使是分类问题,落实到具体计算上,我们依然是在最小化损失函数(再回顾一下逻辑回归?)如果损失函数是 0,我们的分类任务就 100% 正确了。


对于此,可以看一下 sklearn 的 GradientBoostingClassifier 的文档,说的很清晰:GB builds an additive model in a forward stage-wise fashion; it allows for the optimization of arbitrary differentiable loss functions


划重点:differentiable loss functions。Gradient Boosting Classifier 是一个逐渐优化可微分的损失函数的过程。


传送门:https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html 


继续加油!:)

0
2
liuyubobobo
回复
慕虎6493860
我在我原有的回答中进行了补充。继续加油!:)
2020-03-07
共2条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5839 学习 · 2437 问题

查看课程