收集的问题(gbdt xgb)

XGB为什么要二阶展开
:作者:Zsank
链接:https://www.zhihu.com/question/277638585/answer/522272201
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Xgboost使用二阶展开效果更好的原因,应该与牛顿法使用海塞矩阵比SGD好的原因一样。说说我自己的想法,关于Xgboost用泰勒二阶展开的原因,主要有两点:Xgboost官网上有说,当目标函数是MSE时,展开是一阶项(残差)+二阶项的形式(官网说这是一个nice form),而其他目标函数,如logloss的展开式就没有这样的形式。为了能有个统一的形式,所以采用泰勒展开来得到二阶项,这样就能把MSE推导的那套直接复用到其他自定义损失函数上。简短来说,就是为了统一损失函数求导的形式以支持自定义损失函数。这是从为什么会想到引入泰勒二阶的角度来说的二阶信息本身就能让梯度收敛更快更准确。这一点在优化算法里的牛顿法里已经证实了。可以简单认为一阶导指引梯度方向,二阶导指引梯度方向如何变化。这是从二阶导本身的性质,也就是为什么要用泰勒二阶展开的角度来说的如果面试只问为什么效果比较好的话,第二点应该就足够了。不过面试的话,都答吧,今年秋招太可怕了。。。P.S.为什么要在形式上与MSE统一?因为MSE是最普遍且常用的损失函数,而且求导最容易,求导后的形式也十分简单。所以理论上只要损失函数形式与MSE统一了,那就只用推导MSE就好啦,简单嘛欢迎大家来交流,有不对的地方还请指出放上Xgboost的链接:Introduction to Boosted Trees
+
:采用泰勒展开的形式近似损失函数,能够减少分裂子叶时的计算量。
:用泰勒展开式只是为了对所有二阶可导的损失函数都可以做近似替换
:官网上给出的原因是展开形式好,能很好的复用MSE的推导流程,同时对自定义损失函数的拓展支持也比较好。

为什么xgboost要用泰勒展开,优势在哪里?

xgboost使用了一阶和二阶偏导,二阶导数有利于梯度下降的更快更准。使用泰勒展开取得函数做自变量得二阶导数形式,可以在不选定损失函数具体形式的情况下,仅仅依靠输入数据的值就可以进行叶子分裂优化计算,本质上也就把损失函数的选取和模型算法优化/参数选择分开了,这种去耦合增加了xgboost的适用性,使得它按需选取损失函数,可以用于分类,也可以用于回归

https://zhuanlan.zhihu.com/p/85995153常见树问题

XGB的抽样
https://www.pinggu.com/post/details/5ece33b695fbaa64c2ed248e

树模型的对比
https://blog.csdn.net/zhang15953709913/article/details/84587425?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param

怎么做数据预处理
https://www.cnblogs.com/echodong/p/9360278.html
https://www.cnblogs.com/pinard/p/9093890.html

rf xgboost gbdt常见问题
https://zhuanlan.zhihu.com/p/85995153

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值