Boosting算法
为什么要找负梯度?
函数值沿着梯度的方向增加的最快,逆着梯度的方向函数值减小的最快。
因此我们用上一个学习器f_T-1与目标值y的差距(注意:是损失函数而不是原始的偏差y_i - y_p)的负梯度作为拟合当前学习器f_T的目标。
我们希望在拟合f_T的时候能降低f_T-1 - y的差距。
如果拟合第一棵树时,我们的输入是【x_i,y_i】,那么我们拟合f_T时的输入就变成【x_i,-grad_i】
一颗决策树,本质上一个叶节点才是一个子分类函数,所有的样本最终都是分类到同的叶节点中。因此,对于决策树的提升拟合过程中每次关注的是叶节点的boosting。
GBDT基于回归树的,如何做分类?
因为是基于残差拟合,因此GBDT都是基于回归树,残差有实际意义。即使在做分类问题,也是将类别转化成概率,看成回归问题。
无论是回归问题还是分类问题(拟合的是离散值,直接做差没有意义)都是以回归树为解决手段。分类问题可以通过对数几率转化为拟合类别概率,那么概率的差值就有意义的。
对于GBDT系列算法,需要考虑的东西
- F_0( )如何初始化---以观测到的对数相对几率初始化
- 如何由F_T 拟合 F_T+1
- 最终,学习器组合预测时,组合权重怎么求?
GBDT和RF的基学习器都是CART
Gini指数适合分类问题的节点分裂选择
MSE适合回归问题的节点分裂选择
另外,分类问题可以转化成类别概率的回归问题
节点分裂的计算公式,与损失函数计算是两码事。