GBDT,是Gradient Boost Decision Tree的缩写,是Boosting家族的一元,即通过训练前后依赖的一组的学习器,组成一个强学习器,对外提供服务
GBDT底层是决策树,这个从名字可以看出来,而且用的是CART算法;所以一定要了解CART的分类以及回归的算法。
首先描述一下算法的流程,然后我们再通过一个例子来解释一下。
GBDT的原理就是构建模型(树),然后计算这个模型和真实值的偏差(残差,residual),将偏差作为标签纸,样本特征不变,构建新的模型(树),在基于这个模型,再和上一次训练数据的标签纸进行残差计算,作为下一个学习器的训练标签,如此往复,知道构建的残差达到目标大小,或者迭代数达到了指定数目。
GBDT的原理的数据公式如下:
首先是构建一个初始化的模型:
(f_0(x)=arg min_c sum_{i=1}^NL(y_i,c))
即求得c值,以是的损失函数的达到最小值,毫无疑问,在限定取值范围的情况下,均值是最小值。或者我们可以推导一下:
(sum_{i=1}^{N} L(y_i, c) = sum_{i=1}^{N}frac{1}{2}(y_i - c_i)^2) 对此式求导数为0,以求得极值: $frac{partial sum L(y_i, c)}{partial y_i} = sum_{i=1}^{N}left(y_i - c
ight)$
$=sum_{i-1}^{N}y_i - Nc = 0 (`
可以推知:
c = `)frac{sum_{i-1}^N y_i}{N} $`,即y的均值,在本例中