xgboost算法理论模型公式推导
时间: 2024-08-21 13:03:22 浏览: 56
XGBoost(eXtreme Gradient Boosting)是一种高效的机器学习算法,它是梯度提升(Gradient Boosting)算法的一个高效实现版本。XGBoost在处理大规模数据集时具有良好的扩展性和速度,同时在多个机器学习竞赛中取得了优异的成绩。
XGBoost算法的理论模型基于梯度提升决策树(Gradient Boosted Decision Trees, GBDT),核心思想是通过逐步添加新的树来改进模型。每棵树都是前一棵树预测的残差(实际值与预测值之差)的一个函数。目标函数可以表示为:
\[Obj(\theta) = L(\theta) + \Omega(\theta)\]
其中,\(L(\theta)\) 是损失函数(用于衡量模型预测值和真实值之间的差异),\(\Omega(\theta)\) 是正则项(用于控制模型复杂度,避免过拟合),\(\theta\) 表示树的所有参数。
对于第t轮的提升,目标函数可以写成:
\[Obj^{(t)} = L^{(t)} + \Omega^{(t)} = L^{(t-1)} + \sum_{i=1}^{n} l(y_i, \hat{y}_i^{(t-1)} + f_t(x_i)) + \Omega(f_t)\]
这里,\(L^{(t)}\) 是t轮迭代后的损失函数,\(\hat{y}_i^{(t-1)}\) 是第t-1轮的预测值,\(f_t(x_i)\) 是在第t轮新加入的树的预测值,\(l\) 是损失函数的实例(例如均方误差),\(n\) 是样本数。
在XGBoost中,树是结构化为多个树节点的加法模型,树的复杂度由以下公式控制:
\[\Omega(f_t) = \gamma T + \frac{1}{2} \lambda \sum_{j=1}^{T} w_j^2\]
其中,\(T\) 是叶节点的个数,\(w_j\) 是叶节点的权重,\(\gamma\) 和 \(\lambda\) 是正则化参数。
为了优化目标函数,XGBoost使用泰勒二阶展开近似损失函数,得到目标函数的近似形式:
\[Obj^{(t)} \simeq \sum_{i=1}^{n} [l(y_i, \hat{y}_i^{(t-1)}) + g_i f_t(x_i) + \frac{1}{2} h_i (f_t(x_i))^2] + \Omega(f_t)\]
这里,\(g_i\) 和 \(h_i\) 分别是损失函数对预测值的一阶导数和二阶导数。
最后,通过以下优化问题找到最佳的树结构和叶子权重:
\[\text{argmin}_{f_t} \sum_{i=1}^{n} [g_i f_t(x_i) + \frac{1}{2} h_i (f_t(x_i))^2] + \Omega(f_t)\]
这个问题可以通过贪心算法来解决,也就是每次分裂树节点时都选择使得损失函数下降最多的方向进行分裂,直到达到树的最大深度或其他停止条件。
阅读全文