XGBoost + LR 就是加特征而已

人工智能2025-11-05 14:10:331336

LR (逻辑回归) 算法因其简单有效,特征成为工业界最常用的而已算法之一。但 LR 算法是特征线性模型,不能捕捉到非线性信息,而已需要大量特征工程找到特征组合。特征为了发现有效的而已特征组合,Facebook 在 2014年介绍了通过 GBDT (Gradient Boost Decision Tree)+ LR 的特征方案 [1] (XGBoost 是 GBDT 的后续发展)。随后 Kaggle 竞赛实践证明此思路的而已有效性 [2][3]。

1. XGBoost + LR 的特征原理

XGBoost + LR 融合方式原理很简单。先用数据训练一个 XGBoost 模型,而已然后将训练数据中的特征实例给 XGBoost 模型得到实例的叶子节点,然后将叶子节点当做特征训练一个 LR 模型。而已XGBoost + LR 的特征结构如下所示。

我***接触到 XGBoost + LR 的而已时候,认为 XGBoost + LR 是特征尝试自动替代特征工程的方法。深度学习在 CTR 领域便是在讲述这样的故事和逻辑:只需人工对原始特征进行简单的变换,深度学习能取的b2b信息网比大量人工特征的 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 的格局没有超越特征工程。

【本文为专栏作者“李立”的原创稿件,转载请通过获取联系和授权】

戳这里,看该作者更多好文

本文地址:http://www.bzve.cn/html/41d66199297.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

热门文章

全站热门

你曾经考虑过 在 Ubuntu 中管理开机启动应用 吗?假如在开机时,你的 Ubuntu 系统启动得非常缓慢,那么你就需要考虑这个问题了。每当你开机进入一个操作系统,一系列的应用将会自动启动。这些应用被称为‘开机启动应用’ 或‘开机启动程序’。随着时间的推移,当你在系统中安装了足够多的应用时,你将发现有太多的‘开机启动应用’在开机时自动地启动了,它们吃掉了很多的系统资源,并将你的系统拖慢。这可能会让你感觉卡顿,我想这种情况并不是你想要的。让 Ubuntu 变得更快的方法之一是对这些开机启动应用进行控制。 Ubuntu 为你提供了一个 GUI 工具来让你找到这些开机启动应用,然后完全禁止或延迟它们的启动,这样就可以不让每个应用在开机时同时运行。在该文中,我们将看到 在 Ubuntu 中,如何控制开机启动应用,如何让一个应用在开机时启动以及如何发现隐藏的开机启动应用。这里提供的指导对所有的 Ubuntu 版本均适用,例如 Ubuntu 12.04, Ubuntu 14.04 和 Ubuntu 15.04。在 Ubuntu 中管理开机启动应用点击它来启动。下面是我的Startup Applications的样子:在 Ubuntu 中移除开机启动应用要将一个程序从开机启动程序列表中移除,选择对应的选项然后从窗口右边的面板中点击移除按钮来保留你的偏好设置。需要提醒的是,这并不会将该程序卸载掉,只是让该程序不再在每次开机时自动启动。你可以对所有你不喜欢的程序做类似的处理。让开机启动程序延迟启动这将展示出运行这个特定的程序所需的命令。保存并关闭设置。你将在下一次启动时看到效果。增添一个程序到开机启动应用列表中这将展示出在各种类别下你安装的所有程序。在 Ubuntu 的低版本中,你将看到一个相似的菜单,通过它来选择并运行应用。在各种类别下找到你找寻的应用,然后点击 属性 按钮来查看运行该应用所需的命令。例如,我想在开机时运行 Transmission Torrent 客户端。这就会向我给出运行 Transmission 应用的命令:接着,我将用相同的信息来将 Transmission 应用添加到开机启动列表中。第 2 步: 添加一个程序到开机启动列表中就这样,你将在下一次开机时看到这个程序会自动运行。这就是在 Ubuntu 中你能做的关于开机启动应用的所有事情。到现在为止,我们已经讨论在开机时可见到的应用,但仍有更多的服务,守护进程和程序并不在开机启动应用工具中可见。下一节中,我们将看到如何在 Ubuntu 中查看这些隐藏的开机启动程序。在 Ubuntu 中查看隐藏的开机启动程序复制代码代码如下:你可以像先前我们讨论的那样管理这些开机启动应用。我希望这篇教程可以帮助你在 Ubuntu 中控制开机启动程序。任何的问题或建议总是欢迎的。修改开机启动等待时间查看并修改配置文件 复制代码代码如下:复制代码代码如下:复制代码代码如下:我们可以将等待时间修改为自己想要的了。如:复制代码代码如下:

双方交易域名需要实名认证吗?需要了解交易域名哪些?

对二级域名有何看法?有什么二级域名优化技巧?

申请的域名到手后可以退款吗?该怎么做?

探索刷机精灵的刷机方式(了解刷机精灵的操作步骤和注意事项)

合适的域名长度是怎样的?新手如何掌握域名长度?

为什么要解析域名?新手该怎么去解析域名?

怎么换新的网站域名?域名更换有什么技巧?

友情链接

滇ICP备2023006006号-39