根据以往的经验梯度提升树(gradient boosted tree)可谓横扫Kaggle,不使用GBT感觉都没法再Kaggle混了。决策树相对深度学习来说可谓优点多多:好理解,易解释,对非平衡数据友好,训练起来快等等。在本文中我们主要来了解下LightGBM这个框架并用Kaggle的实战数据来操练下。数据集在这:credit card fraud detection.
LightGBM
这个框架轻便快捷,设计初衷为用于分布式训练。它支持大规模数据并可再GPU上训练。在很多情况下LightGBM比XGBoost更准更快,当然这个没那么绝对,依情况而定,不能绝对说谁就比谁要好。
Gradient Boosting
当我们提到集成学习时,肯定首先映入脑海的是bagging(装袋法)和boosting(提升法). bagging法包含许多独立模型的训练,最终通过某种形式的整合(平均,投票等)给出预测。装袋集成法的杰出代表是Random Forest.
相反,Boosting通过有序地训练模型,其中每个模型从先前模型的误差中学习。从弱模型开始,迭代地训练模型,每个模型添加到先前模型的预测以产生强大的总体预测。
在梯度提升决策树中,通过在相对于先前模型的叶节点的损失函数的误差残差计算的平均梯度的方向上应用梯度下降来找到序列模型。
关于梯度提升的 excellent explanation 可以看过来。 下面简要摘抄介绍:
Considering decision trees, we proceed as follows. We start with an initial fit, F0, of our data: a constant value that minimizes our loss function L0:
in the case of optimizing the mean square error, we can take the mean of the target values:
With our initial guess of F0, we can now calculate the gradient, or pseudo residuals