GBDT
Gradient boosting Decision Tree。
1. 核心思想
GBDT 是一种迭代的决策树算法,它由多棵决策树组成。GBDT 的核心在于将所有决策树的输出累加作为最终结果,因此 GBDT 中的每一棵树都是 回归树,即每棵树拟合的是之前模型的残差。每次迭代都会训练一个新的树来优化先前的误差,通过这种方式,不断提升模型的整体预测能力。
2. 算法步骤
初始化模型:使用常数函数初始化模型,比如将目标变量的均值作为初始预测值。
计算残差:对于每一个样本,计算当前模型的残差,即目标值与当前预测值的差异。
拟合残差:训练一棵决策树,使其能够拟合上一步的残差(拟合负梯度)。
更新模型:将新树的预测结果乘上学习率(缩放系数),然后将其加到当前模型的预测值中。
\[ F_m(x) = F_{m-1}(x) + \alpha h_m(x) \]
其中,\(F_m(x)\) 表示第 \(m\) 次迭代后的模型,\(F_{m-1}(x)\) 是前一次迭代的模型,\(h_m(x)\) 是当前树的输出,\(\alpha\) 是学习率。
- 重复步骤 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. 优势
高精度:GBDT 在各种任务中都有很好的表现,尤其是 回归任务 和 二分类任务。
处理复杂非线性问题:GBDT 通过多棵回归树累积,可以处理复杂的非线性关系。
灵活性:GBDT 可以灵活地适用于回归和分类问题,损失函数可以根据具体问题自定义。
可扩展性:可以与其他模型(如神经网络)结合使用,增强模型的性能。
5. 缺点
训练时间较长:由于 GBDT 是一种逐步迭代的算法,且每次迭代需要构建一棵新的决策树,因此训练时间较长。
难以并行化:由于 GBDT 每次迭代都依赖于前一次迭代的结果,无法像随机森林那样轻松地并行化处理。
容易过拟合:如果树的深度过大或者迭代次数过多,GBDT 容易过拟合。
对缺失值敏感:GBDT 不能像一些其他算法一样自适应处理缺失值,因此数据预处理较为重要。