算法层面
1. Xgboost在代价函数里加入了正则项,用于控制模型的复杂度,降低了过拟合的可能性。正则项里包含了树的叶子节点个数,每个叶子节点上输出的score的L2模的平方和,普通GBDT没有。
T为叶子节点的数量,W为叶子的权重。
Y帽子 为预测值,Y为目标值。
gamma ,delta 为参数
2.xgboost损失函数对误差部分是二阶泰勒展开,GBDT 是一阶泰勒展开,所以损失函数定义的更精确。
传统GBDT在优化时只用到一阶导数信息,xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。为什么xgboost要用泰勒展开,优势在哪里?xgboost使用了一阶和二阶偏导, 二阶导数有利于梯度下降的更快更准. 使用泰勒展开取得函数做自变量的二阶导数形式, 可以在不选定损失函数具体形式的情况下, 仅仅依靠输入数据的值就可以进行叶子分裂优化计算, 本质上也就把损失函数的选取和模型算法优化/参数选择分开了. 这种去耦合增加了xgboost的适用性, 使得它按需选取损失函数, 可以用于分类, 也可以用于回归。
3.对每棵子