xgboost模型初始化用到的公式
时间: 2023-06-17 21:02:42 浏览: 62
XGBoost模型初始化的公式如下:
$$\hat{y_i^{(0)}} = \frac{1}{N}\sum_{i=1}^N y_i$$
其中,$\hat{y_i^{(0)}}$是对所有样本的目标值$y_i$求平均得到的初始预测值,$N$是样本总数。
接下来,我们需要为每个叶节点$i$分配一个权重$q_i$,用于计算样本的得分。这里使用了二阶泰勒展开(second-order Taylor expansion)的方法,公式如下:
$$\mathcal{L}^{(t)} = \sum_{i=1}^N l(y_i, \hat{y}_i^{(t-1)} + \sum_{j=1}^m q_{j} h_j(x_i)) + \Omega(f^{(t)})$$
其中,$\mathcal{L}^{(t)}$表示第$t$轮迭代的损失函数,$l$是损失函数,$\hat{y}_i^{(t-1)}$是第$t-1$轮迭代的预测值,$h_j(x_i)$表示样本$x_i$在第$j$个叶节点上的得分,$q_j$是第$j$个叶节点的权重,$m$是叶节点个数,$\Omega(f^{(t)})$是正则化项。
我们需要最小化$\mathcal{L}^{(t)}$来得到每个叶节点的权重$q_j$。具体地,我们可以通过牛顿法(Newton’s method)求解。每次迭代的公式如下:
$$q_j^{(t)} = -\frac{G_j^{(t)}}{H_j^{(t)} + \lambda}$$
其中,$G_j^{(t)}$和$H_j^{(t)}$分别表示第$t$轮迭代中第$j$个叶节点的一阶和二阶导数,$\lambda$是正则化系数。
在得到每个叶节点的权重$q_j$后,我们就可以计算样本$x_i$在叶节点上的得分$h_j(x_i)$,公式如下:
$$h_j(x_i) = \begin{cases} 1, &\mbox{if } x_i \in R_j \\ 0, &\mbox{otherwise} \end{cases}$$
其中,$R_j$表示第$j$个叶节点所包含的样本集合。
最终,我们将所有叶节点的得分加权求和,得到样本的预测值:
$$\hat{y}_i^{(t)} = \hat{y}_i^{(t-1)} + \sum_{j=1}^m q_j^{(t)} h_j(x_i)$$
这样就完成了XGBoost模型的初始化。