本公式来源于文章 “《GBDT 算法的原理推导》 11-13初始化模型 公式解析” , 拿出来写一下具体的化简过程。
对于对数损失下的GBDT初始预测值 f 0 ( x ) f_0(x) f0(x),应该是通过最大化对数似然得到一个基于对数几率的表达式。我们现在来详细推导这个公式。
1. 问题的定义
对于二分类问题,假设目标值 y i y_i yi 取值为 0 或 1。我们的目标是找到一个初始预测值 f 0 ( x ) f_0(x) f0(x),使得它最小化所有样本的对数损失。对于二分类任务,GBDT的初始化通常会选择预测输出为正类概率的对数几率(log odds)。
2. 对数损失函数
对于一个样本 ( x i , y i ) (x_i, y_i) (xi,yi),对数损失函数定义为:
L ( y i , p ) = − [ y i log p + ( 1 − y i ) log ( 1 − p ) ] L(y_i, p) = - [y_i \log p + (1 - y_i) \log (1 - p)] L(yi,p)=−[yilogp+(1−yi)log(1−p)]
其中 p p p 是预测的正类概率。在GBDT中,我们希望找到一个值 f 0 f_0 f0 作为初始预测值。对于二分类问题,模型输出的对数几率(log odds)与正类概率的关系为:
p = 1 1 + e − f 0 p = \frac{1}{1 + e^{-f_0}} p=1+e−f01
因此, f 0 f_0 f0 可以被看作是模型输出的对数几率。
3. 目标函数
我们希望最小化所有样本的对数损失总和:
f 0 = arg min f ∑ i = 1 N L ( y i , p i ) = arg min f ∑ i = 1 N − [ y i log p i + ( 1 − y i ) log ( 1 − p i ) ] f_0 = \arg \min_{f} \sum_{i=1}^N L(y_i, p_i) = \arg \min_{f} \sum_{i=1}^N - \left[y_i \log p_i + (1 - y_i) \log (1 - p_i)\right] f0=argfmini=1∑NL(yi,pi)=argfmini=1∑N−[yilogpi+(1−yi)log(1−pi)]
将 p i p_i pi 用 f 0 f_0 f0 表示,即 p i = 1 1 + e − f 0 p_i = \frac{1}{1 + e^{-f_0}} pi=1+e−f01,带入上式:
f 0 = arg min f ∑ i = 1 N − [ y i log ( 1 1 + e − f 0 ) + ( 1 − y i ) log ( 1 − 1 1 + e − f 0 ) ] f_0 = \arg \min_{f} \sum_{i=1}^N - \left[y_i \log \left(\frac{1}{1 + e^{-f_0}}\right) + (1 - y_i) \log \left(1 - \frac{1}{1 + e^{-f_0}}\right)\right] f0=argfmini=1∑N−[yilog(1+e−f01)+(1−yi)log(1−1+e−f01)]
4. 化简对数项
根据 log ( 1 1 + e − f 0 ) = − log ( 1 + e − f 0 ) \log \left(\frac{1}{1 + e^{-f_0}}\right) = -\log(1 + e^{-f_0}) log(1+e−f01)=−log(1+e−f0) 和 1 − 1 1 + e − f 0 = e − f 0 1 + e − f 0 1 - \frac{1}{1 + e^{-f_0}} = \frac{e^{-f_0}}{1 + e^{-f_0}} 1−1+e−f01=1+e−f0e−f0,我们可以将对数项展开为:
f 0 = arg min f ∑ i = 1 N − [ y i ( − log ( 1 + e − f 0 ) ) + ( 1 − y i ) ( − f 0 − log ( 1 + e − f 0 ) ) ] f_0 = \arg \min_{f} \sum_{i=1}^N - \left[y_i (-\log(1 + e^{-f_0})) + (1 - y_i) \left(-f_0 - \log(1 + e^{-f_0})\right)\right] f0=argfmini=1∑N−[yi(−log(1+e−f0))+(1−yi)(−f0−log(1+e−f0))]
化简后得到:
f 0 = arg min f ∑ i = 1 N [ y i log ( 1 + e − f 0 ) + ( 1 − y i ) ( f 0 + log ( 1 + e − f 0 ) ) ] f_0 = \arg \min_{f} \sum_{i=1}^N \left[y_i \log(1 + e^{-f_0}) + (1 - y_i)(f_0 + \log(1 + e^{-f_0}))\right] f0=argfmini=1∑N[yilog(1+e−f0)+(1−yi)(f0+log(1+e−f0))]
进一步整理,可以得到最优初始值的方程:
f 0 = log ∑ i = 1 N y i N − ∑ i = 1 N y i f_0 = \log \frac{\sum_{i=1}^N y_i}{N - \sum_{i=1}^N y_i} f0=logN−∑i=1Nyi∑i=1Nyi
这表明,初始预测值 f 0 ( x ) f_0(x) f0(x) 是正类样本的对数几率(log odds)。