共计 761 个字符,预计需要花费 2 分钟才能阅读完成。
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_… 等