本文意图
- 欣赏XGBoost目标函数的推导过程
- 理解XGBoost的几个重要超参数的意义
- 明白在实际使用时,如何调整树的数量这个超参数
目录
第一部分 目标函数推导
1.1 基础知识铺垫
1.1.1 集成学习基本概念
- 弱评估器:
只要比随机猜测要准,即准确率>50%就达标的预测器
- Bagging(随机森林):
一次性建立多个平行且独立的弱评估器,用这些弱评估器的结果进行平均
- Boosting(GDBT):
逐一构建弱评估器,每次迭代过程中都随机再增加一棵树
1.1.2 AdaBoost完整流程
- 初始化训练数据权值分布。假设有N个样本,每个训练样本初始被赋予相同权值1/N
- 迭代训练弱分类器。每次迭代中,若一个样本被准确分类,降低它的权值;相反,若一个样本被错误分类,提高它的权值。使用权值更新过的样本集继续训练下一个分类器
- 将各个弱分类器组合。若一个弱分类器的误差率小,加大它的权重,使其在最终分类函数中起较大作用;相反,若一个弱分类器误差率大,减小它的权重,使其在最终分类函数中起较小作用
1.1.3 XGBoost完整流程
在开始目标函数推导之前,我们先来大致的了解一下XGBoost的完整流程。在查看下面流程的过程中,你一定会对眼花缭乱的公式感到困惑。公式中的每个字母是什么意思?为什么要使用这个公式?这个公式是如何得来的?这些问题将在后续得到一一解答!
1.2 定义目标函数的思路
在机器学习算法中,定义目标函数的思路通常是:选取一个损失函数,作为衡量模型预测是否准确的依据,控制模型偏差;设定一个正则化项,作为衡量模型泛化能力的依据,控制模型方差。
XGBoost的作者陈天奇的思路也不例外。我们将XGBoost的目标函数分成两个部分,损失函数和正则化项,并在后面的部分分别对这两个部分作详细的说明。