人工智障-XGBoost简介
XGBoost是专注于梯度提升算法的机器学习函数库,此函数库速度快,且学习效果优良。
1,GBDT算法原理
XGBoost实现的是一种通用的Tree Boosting算法,此算法的一个代表为GBDT(梯度提升决策树)。GBDT原理首先利用训练集和样本真正值训练一棵树,然后使用这棵树预测训练集,得到每个样本的预测值,由于预测值与真值存在偏差,所以二者相减可以得到残差,接下来训练第二棵树,此时不使用真值,而是使用残差作为标准答案。两棵树训练完成后,可以再次得到每个样本的残差,训练第三棵树,树的总棵树可以通过监控某些指标来停止训练。预测新样本的时候,每棵树都会有一个输出值,将这些输出值相加,皆可以得到最终预测值。
2,XGBoost的改进
2.1 损失函数从平方损失推广到二阶可导损失
GBDT的核心是在于后面的树是拟合的前面预测值的残差,这样可以一步步逼近真实值。XGBoost的方法是,将损失函数做泰勒展开到二阶,使用前两阶作为改进残差,可以证明,传统GBDT使用的残差是泰勒展开到一阶的结果。
2.2 加入了正则化项
正则化方法是数学中用来解决不适定问题的一种方法,正则化是为了限制模型的复杂度,模型越复杂,越有可能记住训练数据,导致训练误差达到很低,而测试误差很高,也就是发生了过拟合。
2.3支持列抽样
列抽样是指训练每棵树的时候,不是使用所有特征,而是从中抽取一部分来训练这棵树。这种方法是用在随机森林中
3, XGBoost运行这么快
3.1 连续性特征的处理
决策树在训练时进行分叉,对于连续性特征,枚举所有可能分叉点将会十分耗时
3.2 利用数据稀疏性
对离散特征做one-hot处理,