gbdt为什么需要泰勒公式展开进行节点分裂计算

  统计/机器学习    浏览次数:5283        分享
0

在看gbdt、xgboost原理介绍时,经常可以看到从原始的cost function推导到一个经过泰勒公式展开的公式,最终形态是这个样子:

文章来源:https://cloud.tencent.com/developer/article/1005611。然后根据这个公式计算哪种feature split能带来最大的cost减少。

但我的问题是,为什么需要推导到这种形态才计算cost的变化呢?原始的cost简单明了:

就是直接带入每个data就可以得到一个cost了,也可以对每种feature split进行计算。

第一个公式的意义何在?

 

coolmich   2019-04-26 23:20



   2个回答 
1

1.对于regression的square loss,只有二阶导数,你给的两个公式相等,不需要再讨论。

2.对于logistic regression的logistic-loss,两个公式不同:

2.1, 原始loss计算量更大,二阶近似计算量小,还有分割点的近似计算。

2.2 二阶近似解更稳定。

xgboost论文参考论文[12]里讲到用原始loss,存在numerically unstable问题,用二阶近似loss得到的每棵树鲁棒性更强,结果更稳定。

wiki中关于Gentle AdaBoost 和AdaBoost的区别是:

我理解是,本来每棵树学习的是残差。如果是贪婪的学习“准确”的残差,会存在“Z”字型的学习曲线,步长过大,残差的符号会变化,残差会振荡减小,收敛更慢。loss的二阶近似,相当于用牛顿法循环减小残差,(一棵树是一个循环),类似加了正则项,减小了残差符号振荡的可能性。

SofaSofa数据科学社区DS面试题库 DS面经

Zealing   2019-04-28 10:01

0

楼主先区分一下,gbdt用不到二阶导的,xgb在此做了修改之后用的二阶导

SofaSofa数据科学社区DS面试题库 DS面经

tianjiayang0711   2019-04-29 13:37



  相关讨论

请教lightGBM中的level wise具体计算步骤是怎样的?

关于为什么要用GBDT的疑问

请问针对Adaboost、GBDT等集成学习同一个特征是否可以入模多次?

随机森林中增加树的数量对于偏差和方差的影响

关于knn算法中kd树的问题

随机森林预测问题

剪枝是什么意思

怎么理解RandomForest中的max_features?

决策树剪枝有什么策略或者注意事项?

决策树的深度和数据特征个数的关系

  随便看看

软聚类,硬聚类?

sklearn可以用gpu加速吗?

pandas DataFrame中经常出现SettingWithCopyWarning

随机森林如何调参?

鞍点的数学定义是什么?