当前位置: 首页 > 科技观察

XGBoost+LR只是增加了特征

时间:2023-03-21 10:36:37 科技观察

LR(LogisticRegression)算法因其简单高效而成为业界最常用的算法之一。但是LR算法是线性模型,无法捕捉到非线性信息,需要大量的特征工程来寻找特征组合。为了发现有效的特征组合,Facebook在2014年推出了GBDT(GradientBoostDecisionTree)+LR方案[1](XGBoost是GBDT的后续发展)。然后Kaggle竞赛证明了这个想法的有效性[2][3]。1.XGBoost+LR原理XGBoost+LR融合方法的原理非常简单。先用数据训练一个XGBoost模型,然后把训练数据中的实例交给XGBoost模型得到实例的叶子节点,再用叶子节点作为特征训练一个LR模型。XGBoost+LR的结构如下图所示。刚开始接触XGBoost+LR的时候,我以为XGBoost+LR是一种自动替代特征工程的尝试。深度学习在CTR领域讲的是这样一个故事和逻辑:只需要对原始特征进行简单的变换,深度学习就可以通过大量人工特征取得比LR更好的效果。2.XGBoost叶节点不能替代特征工程。为了验证XGBoost+LR是一种自动替代特征工程的方法,还是只是一种特征工程的方法,我们在自己的业务数据上做了一些实验。下图是实验结果,其中:“xgboost+lr1”为XGBoost的叶节点特征、原始属性特征和二阶交叉特征用于LR训练;"xgboost+lr2"仅用于LR的叶节点特征;“lr1”为原始属性特征和二阶交集特征;“lr2”只有原始属性特征。从以上实验来看:1)“xgboost+lr2”明显弱于“lr1”方法,说明只使用叶节点特征的XGBoost+LR弱于带特征工程的LR算法。即XGBoost叶子节点无法替代特征工程,XGBoost+LR也无法替代传统特征工程。2)“xgboost+lr1”取得了所有方法中最好的效果,说明保留原有特征工程的方法XGBoost+LR效果更好。即XGBoost叶子节点特征是有效特征,XGBoost+LR是有效特征工程方法。以上实验结果与同事二哥之前的实验结果一致。在他没有使用二阶交叉特征工程技巧的实验中,结果是XGBoost>XGBoost+LR>LR,其中XGBoost+LR类似于我们的“xgboost+lr2”,LR类似于我们的“lr2”。3.强大的XGBoost只使用了XGBoost叶子节点特征,XGBoost+LR接近或弱于XGBoost。在下图中,我们发现XGBoost的每个叶子节点都有一个权重w,一个实例的预测值与这个实例所属的叶子节点的权重之和有关。如果二分类XGBoost使用sgmoid作为激活函数,即参数为“binary:logistic”,那么XGBoost最终的预测值等于sgmoid(叶节点的权重之和)。而LR最终的预测值等于sgmoid(特征对应的权重后)。因此,只要LR学习了叶子节点的权重,就可以重现XGBoost模型。因此,理论上,如果LR能够学习到更好的权重,即使只是XGBoost+LR的叶子节点特征也应该比XGBoost更好。但是从上面的结果来看,XGBoost+LR接近或者弱于XGBoost。XGBoost给叶子节点的权重很好,LR学习到的权重不能明显超过它。4.总结XGBoost+ LR在工业和竞赛实践中都取得了不错的成绩。但是,XGBoost的叶节点并不能完全替代人工特征。XGBoost+LR并没有尝试像深度学习那样带来自动特征工程的故事和逻辑。最终,XGBoost+LR的模式并没有超越特征工程。【本文为专栏作家“李莉”原创稿件,转载请联系授权】点此查看该作者更多好文