理解GBDT、XGBOOST

参考 https://www.csuldw.com/2019/07/12/2019-07-12-an-introduction-to-gbdt/

GBDT三大核心:

  1. 提升方法(加法模型+前向分步算法);
  2. 梯度提升:梯度与残差;
  3. 决策树:CART回归树。

为什么GBDT会引入gradient的概念?

  • 回归损失MSE:

    的一阶导数就是残差的形式,残差正好就是损失函数的负梯度

GBDT的缺点?

对异常值过于敏感

参考https://zhuanlan.zhihu.com/p/29765582
解决方法:用绝对值损失或者huber损失(设置了outlier阈值)

XGBOOST的生长策略(跟GBDT相似,只不过这里是二阶导+正则项)

参考https://zhuanlan.zhihu.com/p/29765582

XGBOOOST目标函数:
图片说明
G为叶子节点上各个样本的一阶导之和,H为二阶导之和

a、从深度为0的树开始,对每个叶节点枚举所有的可用特征

b、 针对每个特征,把属于该节点的训练样本根据该特征值升序排列,通过线性扫描的方式来决定该特征的最佳分裂点,并记录该特征的最大收益(采用最佳分裂点时的收益
分裂收益为:图片说明 分裂收益推导

c、 选择收益最大的特征作为分裂特征,用该特征的最佳分裂点作为分裂位置,把该节点生长出左右两个新的叶节点,并为每个新节点关联对应的样本集

d、回到第1步,递归执行到满足特定条件为止

为什么选取最佳分割点时要对样本特征值进行排序?

In order to do so efficiently, the algorithm must first sort the data according to feature values and visit the data in sorted order to accumulate the gradient statistics for the structure score in Eq7.

为了更高效地枚举所有分割方案.(比如样本在某特征为6,3,7,8,2,那么我们分割点取x,需要对每个样本进行判断是否大于x,然后决定分配到左节点还是右节点。而排序后,样本特征为2,3,6,7,8,则直接知道,x左边的分配到左结点,右边的分配到右节点。这样只需要从左到右一遍线性扫描即可。

XGBOOST的生长策略是level-wise的

参考https://www.zhihu.com/question/51644470/answer/146321804
XGBoost 采用 Level-wise 的增长策略,不加区分的分裂每一层的所有节点,可以实现并行计算,提高了训练速度,便于控制模型复杂度,不容易过拟合,但同时也因为节点增益过小增加了很多不必要的分裂,增加了计算量;LightGBM 采用 Leaf-wise 的增长策略减少了计算量,配合最大深度的限制防止过拟合,由于每次都需要计算增益最大的节点,所以无法并行分裂。
图片说明
图片说明

全部评论

相关推荐

关于“实习生工资多少才算正常”,其实并没有一个放之四海而皆准的标准,但如果结合一线城市的生活成本、工作强度以及实习本身创造的价值来看,我个人认为6000 元左右应当是一个基本及格线,也就是每天 200 多元。如果能达到 300、400 元一天,甚至更高,那无疑是更理想的状态。首先,从现实成本看,房租、通勤、餐饮几乎都是刚性支出。低于这个水平的实习,往往意味着实习生需要用家庭或存款“倒贴”工作,这在长期来看并不合理。实习本质上是学习,但并不等于“廉价劳动力”,更不应该是经济压力的来源。其次,愿意给实习生更高薪资的公司,通常不会是差公司。这至少说明两点:一是公司资金相对充足,不是靠压缩人力成本勉强维持;二是公司认可实习生的价值,希望你真正参与业务、创造产出,而不是只做边角料工作。很多高薪实习往往伴随着更规范的培养体系、更高的信息密度和更真实的项目经验。当然,高工资并不等于一切,但它往往是一个重要信号。能给到 300、400 元一天甚至更多的公司,往往对效率、能力和长期发展更有追求,也更可能处在一个有前景的赛道中。总结来说,实习工资不仅是钱的问题,更是公司态度、实力和发展前景的体现。在条件允许的情况下,争取一份“付得起你时间”的实习,本身就是一种理性选择。
北国牛马:你是不是忘了你一周只能上五天班,月薪6000那你日薪就得300了,日薪200一个月也就4000,也就刚好覆盖生活成本了
实习生工资多少才算正常?
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务