在算法圈,相信大家对XGBoost的大名早有耳闻,在CTR广告点击预估中更是炙手可热的大神器,接下来我就给大家简单介绍下,XGBoost到底是何方神圣?
1. 关于XGBoost
在正式介绍XGBoost之前,首先说下GBDT,它是一种基于boosting增强策略的加法模型,训练的时候采用前向贪心算法进行学习,每次迭代都学习一棵CART树来拟合之前 t-1 棵树的预测结果与训练样本真实值之间的残差。XGBoost是在GBDT基础上进行了一系列优化,比如损失函数采用了二阶泰勒展式、目标函数加入正则项、支持并行和缺失值自动处理等,但二者在核心思想上没有大的变化。
2. XGBoost与GBDT的区别
相同点:生成树的核心思想及方法相同。
不同点:
基分类器:XGBoost的基分类器不仅支持CART决策树,还支持线性分类器,可以解决分类和回归问题。
损失函数:XGBoost对损失函数采用了二阶泰勒展式,GBDT只用了一阶导数信息,并且XGBoost还支持自定义损失函数,但要求损失函数一阶、二阶可导。
正则化:XGBoost的目标函数加了正则项, 相当于预剪枝,这样学习出来的模型更加不容易过拟合。
随机选特征:与随机森林类似,XGBoost支持特征随机选取,防止过拟合。
缺失值处理:对于每棵树中的每个非叶子结点,XGBoost可以自动学习出它的默认分裂方向。如果某个样本该特征值缺失,则会将其划入默认分支。
并行处理:虽然在生成新树的过程中是串行关系,但在特征维度可以并行处理。即在进行特征分裂时可通过多线程并行处理,极大提升训练速度。
3. XGBoost与随机森林的区别
相同点:都是由多棵树组成,最终的结果都是由多棵树一起决定。
不同点:
集成方法:随机森林属于bagging方法,而XGBoost属于boosting方法;
偏差-方差权衡:随机森林通过不断随机取样本和特征来降低模型的方差,而XGBoost通过不断生成新树来拟合残差降低模型整体的偏差;
训练样本:随机森林每次迭代的样本是从全部训练集中有放回抽样得到的,而XGBoost则每次使用全部样本进行训练;
并行性:随机森林每棵树之间可以并行生成,而XGBoost只能按顺序生成;
最终结果:随机森林最终结果是多棵树进行投票表决(回归问题是取平均),而XGBoost是通过加权融合;
数据敏感性:随机森林对异常值不敏感,而XGBoost对异常值比较敏感;
泛化能力:随机森林不易过拟合,而XGBoost容易过拟合。
好了,以上就是XGBoost的简单介绍,相信大家对XGBoost已经有了一个基本的了解。最后我们还是通过slearn中自带的癌症预测数据集来看看XGBoost的威力到底如何~
可以看到,AUC为0.98!!所以说XGBoost的牛皮不是吹的吧,哈哈?下节课给大家讲解模型训练中常遇到的两个问题——过拟合与欠拟合,敬请期待!