xgboost与gbdt的区别
我认为xgboost和gbdt最大的区别还是数学上,或者说优化上的。
gbdt是用最小二乘拟合负梯度。
xgboost是把损失函数在F_m-1(X)处二阶泰勒展开,一阶导、二阶导及正则项看成本轮损失函数削减量,求导等于0,算出最优叶子节点参数,参数反带回去,把损失函数削减量看成一个打分函数进行树分裂。
gbdt的叶节点参数也可以合并最优步长,通过最小化损失函数求得,所以他们两者的最大差异最终体现在树的分裂方式上,xgb按上述打分函数分裂,gbdt按SE分裂。
xgboost相较于gbdt还一些优化,比如:
1.xgb在损失函数上加入了正则项
2.xgboost加入列抽样
3.xgboost在最优切分点寻找上进行了优化
4.xgb还有一些并行化实现,并且支持分布式
留言
張貼留言