XGBoost的威名想必大家都有所耳闻,它不仅是数据科学竞赛神器,在工业界中也被广泛地使用。本文给大家分享珍藏了多年的XGBoost高频面试题,希望能够加深大家对XGBoost的理解,更重要的是能够在找机会时提供一些帮助。
首先需要说一说GBDT,它是一种基于boosting增强策略的加法模型,训练的时候采用前向分布算法进行贪婪的学习,每次迭代都学习一棵CART树来拟合之前 t-1 棵树的预测结果与训练样本真实值的残差。
XGBoost对GBDT进行了一系列优化,比如损失函数进行了二阶泰勒展开、目标函数加入正则项、支持并行和默认缺失值处理等,在可扩展性和训练速度上有了巨大的提升,但其核心思想没有大的变化。
XGBoost在设计时,为了防止过拟合做了很多优化,具体如下:
XGBoost模型的一个优点就是允许特征存在缺失值。对缺失值的处理方式如下:
find_split时,缺失值处理的伪代码
XGBoost目标函数最终推导形式如下:
利用一元二次函数求最值的知识,当目标函数达到最小值Obj*时,每个叶子结点的权重为wj*。
具体公式如下:
相同点:
不同点: