这一篇开始讲GBDT(梯度提升决策树), 根据上一篇可知,该模型每次学习的是损失函数的负梯度。所以基模型是回归树(因为每次都在拟合一个确定的值, 这和提升树不一样了,提升树中分类问题的基模型是二叉分类树)。正如提升树中所讲, GBDT可以用于回归问题,也可以用于分类问题。学习的流程和提升树是一致的,在确定损失函数后,只是基模型学习的目标不一样。最后的模型就是基模型的线性组合。
F表示组合的模型, f表示每次学习的模型, 首先我们定义一下损失函数
泰勒展开, 保留第一项, 得到
所以当时, 损失函数会变小。
对于回归问题:
损失函数可以是MSE,, 梯度是
损失函数还可以是绝对误差MAE,,
新的模型去拟合负梯度即可(对于MSE,拟合负梯度和拟合残差是一样的),和提升树一样的学习即可。
对于二分类问题:
损失函数
第m步的基模型拟合了m-1步之后的负梯度,
因此首先需要有第0个基模型,
对F求偏导,
m步拟合了负梯度之后,模型变成了
负梯度就是参数变化的方向,现在我们需要找到,使得损失函数最小, 即
我们不妨把 定义成 , 即第m个基模型的第j个划分空间值为。
所以第m个基模型求解变成了,
这个优化问题非常难求, 这里用牛顿法做一个近似
,
所以, 其中 是m-1步之后第i个样本的负梯度值,即
即解出了。
多分类问题:
损失函数使用交叉熵损失函数, , 其中,, 一共有K个二分类, 所以每一步都有k个基模型,一共有m*K个基模型。
, 如果是类别l的类, 则 = 1, 不然为0
每一步都是k个二分类,,
同理,现在我们需要找到,使得
同样把定义成
, 其中, 即m-1步学习后,类中第i个点的负梯度。
第m步学习就结束了
GBDT的介绍就到这里了,和提升树的不同就在于GBDT学习的是损失函数的负梯度,参数每次沿着负梯度前进一小步
在CTR预估中,会结合使用GBDT+LR, GBDT用来生成特征,增强LR模型的非线性能力。这一块读者可以查询相关的文章。
下一篇会介绍下一个Boosting模型,它在GBDT上又改进了一些内容,是一个大杀器。