1.xgboost原理
XGBoost 作为一种GBDT ,GBDT的原理很简单,所有弱分类器的结果相加等于预测值,然后下一个弱分类器去拟合误差函数的误差。GBDT 每个新模型的建立是在之前残差梯度方向减小
传统GBDT在优化时只用到一阶导数信息,xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。顺便提一下,xgboost工具支持自定义代价函数,只要函数可一阶和二阶求导
XGBoost跟GBDT相比就是目标函数不一样 。
核心思想就是不断添加树,不断通过特征分裂生产一棵树,去拟合上次预测的残差
损失函数揭示训练误差(即预测分数和真实分数的差距)
目标函数只依赖于每个数据点在误差函数上的一阶导数g和二阶导数h
采用贪心算法+二次最优化,从根节点开始遍历所有特征,选择增益最高的,
增益包括,左边得分+右边得分+不加入的得分-复杂度代价

2.节点分裂时是如何选择特征的,XGBoost的并行化部分是如何实现的?
xgboost支持并行 ,在节点进行分裂时,需要计算每个特征的增益,对于某个特征,先按照该特征里的值进行排,然后选择增益最大的那个特征去做分裂,增益计算部分是多线程进行的

3.跟adaboost有啥区别?
adaboost是另一种,按照分类的对错分配不同的权重,让分错的权重越来越大,使得分错的得到重视

XGBoost的正则化是如何实现的?
正则化是为了防止过拟合,是表示树的复杂性的函数,值越小表示复杂度越低,泛化能力越强
xgboost的正则包括两部分,一个是叶子节点数量 ,一个是叶子节点的权重(得分) ,对权重进行L2平方

4.跟RandomForest有什么区别
RandomForest是bagging,因为不同基学习器是独立的,并行。进行随机采样

参考自https://blog.csdn.net/v_JULY_...


HelloData
15 声望3 粉丝