一:理论推导+伪代码gradient boosting decision tree
-
基学习器是cart决策树,以cart回归树为例,每次决策时将样本划分为左右两颗子树R1和R2,在R1,R2内部使得平方和最小的c1,c2是样本和的平均值,划分点使得整体最小平方和最小。
image.png -
拟合残差
弱学习器h1,h2...串行生成,每个弱学习器学习的是前面所有树和与真实值的残差(负梯度)。第t轮,上一轮的损失函数L(y,f(t-1)),如果损失函数选取最小平方差,那么沿负梯度(残差)的方向能够使得其获取最小值,负梯度刚好是残差,本轮学习后,损失函数为L(y,f(t-1)+ht)
image.png
每一轮优化的是当前的损失函数,损失函数沿负梯度的方向下降最快,因此我们学习的是负梯度,学习到负梯度之后,预测值到达新的点,新的点可以根据学习负梯度的结果来求。
-
伪代码
image.png
二、理解梯度下降法
整个集成学习的目标是优化L=g(f(x)-y),g可以是平方差也可以是其他误差函数,在最开始根据决策树学习到一棵树后,计算出当前的L0,为了使L减小,f(x)为自变量,找到L在当前点的梯度方向,因为L沿梯度方向下降最快,基于这个优化得到一个新的f(x)和新的L1,依次类推,L不断沿梯度方向下降,每一轮优化得到一个新的f(x),f(x)是对样本的预测。
三、gbdt优缺点
优点:
预测精度高
适合低维数据??
能处理非线性数据
缺点:
并行麻烦(因为上下两棵树有联系)
如果数据维度较高时会加大算法的计算复杂度
四、代码实现
网友评论