gbdt/回归树/xgboost(xgboost没看)

  1. 回归树一个例子:
    https://blog.csdn.net/weixin_40604987/article/details/79296427

回归树和分类树类似,区别是分类树是选择一个特征的值进行划分,而回归树是选择一个特征的切分点进行划分。另外,分类树叶节点的输出是节点中最多数目的类别,而回归树输出的是叶节点所有样本值的平均值。

  1. GBDT
    GBDT为Boosting家族的一员,它和Adaboost有很大的不同。Adaboost 是利用前一轮弱学习器的误差率来更新训练集的权重,这样一轮轮的迭代下去,简单的说是Boosting框架+任意基学习器算法+指数损失函数。GBDT也是迭代,也使用了前向分布算法,但是弱学习器限定了只能使用CART回归树模型,同时迭代思路和Adaboost也有所不同,简单的说Boosting框架+CART回归树模型+任意损失函数。
      GBDT的思想可以用一个通俗的例子解释,假如有个人30岁,我们首先用20岁去拟合,发现损失有10岁,这时我们用6岁去拟合剩下的损失,发现差距还有4岁,第三轮我们用3岁拟合剩下的差距,差距就只有一岁了。如果我们的迭代轮数还没有完,可以继续迭代下面,每一轮迭代,拟合的岁数误差都会减小。
    (参考:https://blog.csdn.net/akirameiao/article/details/80009155)

GBDT第一轮输入样本,选一个最后的特征和切分点构建回归树,使得叶节点的残差和最小,节点保存其内所有样本的预测均值。然后将第一轮得到的每个样本的残差作为第二轮回归树模型的输入,并选最优特征和最优切分点,结果保存残差的均值。依次构建。当来一个测试样本要预测值的时候,先输入第一轮的模型,得到一个预测的均值,然后依次输入后续的模型,因为模型的结点保存的是残差的均值,因此对均值进行相应的加减最终得到预测值。

gbdt/回归树/xgboost(xgboost没看)_第1张图片
如上图所示当求A的预测值时,先进入第一个树,被分到左边,得到均值为15,然后进入第二个树,被分到左边,结点的残差为-1,因此A的预测值为15+(-1)=14

即总体步骤是:对于样本集选一个特征和划分点进行分类,分完之后每个区域样本值的平均值作为该叶子结点的值(预测值),然后计算每个节点内样本的残差(样本值-节点内样本平均值)作为下一轮输入的标签。

参考:
https://www.cnblogs.com/willnote/p/6801496.html

https://www.cnblogs.com/pinard/p/6140514.html (这个讲的很详细有很多公式推导,我是略看的)

GBDT每一轮训练时所关注的重点是本轮产生结果的残差,下一轮以本轮残差作为输入,尽量去拟合这个残差,使下一轮输出的残差不断变小。所以GBDT可以做到每一轮一定向损失函数减小的梯度方向变化,而传统的boosting算法只能是尽量向梯度方向减小,这是GBDT与传统boosting算法最大的区别

GBDT例子:(感觉这个例子步骤挺怪的)
https://blog.csdn.net/zpalyq110/article/details/79527653

3.xgboost
参考:
https://blog.csdn.net/wolf963/article/details/78508858

xgboost与gbdt的区别。。xgboost原理没看懂

你可能感兴趣的:(机器学习)