Gradient boosting Decision Tree。

1. 核心思想

GBDT 是一种迭代的决策树算法,它由多棵决策树组成。GBDT 的核心在于将所有决策树的输出累加作为最终结果,因此 GBDT 中的每一棵树都是 回归树,即每棵树拟合的是之前模型的残差。每次迭代都会训练一个新的树来优化先前的误差,通过这种方式,不断提升模型的整体预测能力。

2. 算法步骤

  1. 初始化模型:使用常数函数初始化模型,比如将目标变量的均值作为初始预测值。

  2. 计算残差:对于每一个样本,计算当前模型的残差,即目标值与当前预测值的差异。

  3. 拟合残差:训练一棵决策树,使其能够拟合上一步的残差(拟合负梯度)。

  4. 更新模型:将新树的预测结果乘上学习率(缩放系数),然后将其加到当前模型的预测值中。

\[ F_m(x) = F_{m-1}(x) + \alpha h_m(x) \]

其中,\(F_m(x)\) 表示第 \(m\) 次迭代后的模型,\(F_{m-1}(x)\) 是前一次迭代的模型,\(h_m(x)\) 是当前树的输出,\(\alpha\) 是学习率。

  1. 重复步骤 2-4:直到达到指定的迭代次数或误差收敛。

3. 损失函数

GBDT 可以处理 回归问题分类问题,因此对应的损失函数根据任务的不同而变化:

  • 回归问题:使用 均方误差(MSE, Mean Squared Error) 作为损失函数,公式如下:

\[ L = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y_i})^2 \]

  • 分类问题:可以使用 对数损失函数交叉熵损失函数

\[ L = - \sum_{i=1}^{n} y_i \log(\hat{y_i}) + (1 - y_i) \log(1 - \hat{y_i}) \]

GBDT 通过负梯度来估计损失函数的残差,并逐步拟合这个负梯度,从而不断减少误差。

4. 优势

  1. 高精度:GBDT 在各种任务中都有很好的表现,尤其是 回归任务二分类任务

  2. 处理复杂非线性问题:GBDT 通过多棵回归树累积,可以处理复杂的非线性关系。

  3. 灵活性:GBDT 可以灵活地适用于回归和分类问题,损失函数可以根据具体问题自定义。

  4. 可扩展性:可以与其他模型(如神经网络)结合使用,增强模型的性能。

5. 缺点

  1. 训练时间较长:由于 GBDT 是一种逐步迭代的算法,且每次迭代需要构建一棵新的决策树,因此训练时间较长。

  2. 难以并行化:由于 GBDT 每次迭代都依赖于前一次迭代的结果,无法像随机森林那样轻松地并行化处理。

  3. 容易过拟合:如果树的深度过大或者迭代次数过多,GBDT 容易过拟合。

  4. 对缺失值敏感:GBDT 不能像一些其他算法一样自适应处理缺失值,因此数据预处理较为重要。