《GBDT 算法的原理推导》 11-13初始化模型 公式解析
本文是将文章《GBDT 算法的原理推导》中的公式单独拿出来做一个详细的解析,便于初学者更好的理解。
公式(11-13)是GBDT算法的第一步,它描述了如何初始化模型。公式如下:
f 0 ( x ) = arg min c ∑ i = 1 N L ( y i , c ) f_0(x) = \arg \min_c \sum_{i=1}^N L(y_i, c) f0(x)=argcmini=1∑NL(yi,c)
1. 公式(11-13)的意义
公式(11-13)用于初始化GBDT模型的预测值。在GBDT算法中,模型 f ( x ) f(x) f(x) 是通过多棵树的组合逐步构建的,而在开始构建任何一棵树之前,我们需要一个初始的预测值 f 0 ( x ) f_0(x) f0(x)。
2. 为什么需要初始化模型
在GBDT的训练过程中,每一轮都会通过一棵新树来“纠正”前面的模型。但是,在第一轮时,我们还没有任何树,所以需要一个初始值。这个初始值 f 0 ( x ) f_0(x) f0(x) 是模型预测的起点,后续的每棵树都基于它进行优化。
3. 如何确定初始值 f 0 ( x ) f_0(x) f0(x)
公式(11-13)告诉我们,初始预测值 f 0 ( x ) f_0(x) f0(x) 是通过最小化所有样本的损失函数来确定的。具体来说:
- 这里的 c c c 是一个常数,表示所有样本统一的初始预测值。
- 我们希望找到一个常数 c c c,使得对于所有样本 ( x i , y i ) (x_i, y_i) (xi,yi) 的损失函数之和 ∑ i = 1 N L ( y i , c ) \sum_{i=1}^N L(y_i, c) ∑i=1NL(yi,c) 最小。
4. 损失函数 L ( y i , c ) L(y_i, c) L(yi,c) 的作用
在GBDT中,损失函数 L ( y , f ( x ) ) L(y, f(x)) L(y,f(x)) 用于衡量模型预测值 f ( x ) f(x) f(x) 与真实值 y y y 之间的差距。通过最小化损失函数,我们可以得到一个合理的初始预测值。
对于不同的任务,损失函数 L ( y , f ( x ) ) L(y, f(x)) L(y,f(x)) 会有所不同,因此这个初始值的具体求法也会不同。常见的损失函数包括:
- 平方损失(用于回归任务): L ( y , f ( x ) ) = ( y − f ( x ) ) 2 L(y, f(x)) = (y - f(x))^2 L(y,f(x))=(y−f(x))2
- 对数损失(用于二分类任务): L ( y , f ( x ) ) = − [ y log f ( x ) + ( 1 − y ) log ( 1 − f ( x ) ) ] L(y, f(x)) = - [y \log f(x) + (1 - y) \log (1 - f(x))] L(y,f(x))=−[ylogf(x)+(1−y)log(1−f(x))]
5. 不同损失函数下的初始值求解
下面我们分别介绍在常见损失函数下,如何求解 f 0 ( x ) f_0(x) f0(x):
(1)平方损失(用于回归任务)
假设损失函数是平方损失,即:
L ( y i , c ) = ( y i − c ) 2 L(y_i, c) = (y_i - c)^2 L(yi,c)=(yi−c)2
此时,公式(11-13)变为:
f 0 ( x ) = arg min c ∑ i = 1 N ( y i − c ) 2 f_0(x) = \arg \min_c \sum_{i=1}^N (y_i - c)^2 f0(x)=argcmini=1∑N(yi−c)2
这是一个简单的最小二乘问题。通过求导并让导数等于零,我们可以得出最优的 c c c 值为所有 y i y_i yi 的均值:
f 0 ( x ) = 1 N ∑ i = 1 N y i f_0(x) = \frac{1}{N} \sum_{i=1}^N y_i f0(x)=N1i=1∑Nyi
因此,在平方损失的情况下,GBDT的初始预测值就是所有样本目标值的均值。
(2)对数损失(用于二分类任务)
假设我们要解决一个二分类问题,使用对数损失函数:
L ( y i , c ) = − [ y i log c + ( 1 − y i ) log ( 1 − c ) ] L(y_i, c) = - [y_i \log c + (1 - y_i) \log (1 - c)] L(yi,c)=−[yilogc+(1−yi)log(1−c)]
在这种情况下,公式(11-13)变为:
f 0 ( x ) = arg min c ∑ i = 1 N − [ y i log c + ( 1 − y i ) log ( 1 − c ) ] f_0(x) = \arg \min_c \sum_{i=1}^N - [y_i \log c + (1 - y_i) \log (1 - c)] f0(x)=argcmini=1∑N−[yilogc+(1−yi)log(1−c)]
通过对 c c c 求解,我们可以得出 f 0 ( x ) f_0(x) f0(x) 为正类样本的比例(即所有 y i y_i yi 的均值),或者等价地,初始预测值是正类概率的对数几率:
f 0 ( x ) = log ∑ i = 1 N y i N − ∑ i = 1 N y i f_0(x) = \log \frac{\sum_{i=1}^N y_i}{N - \sum_{i=1}^N y_i} f0(x)=logN−∑i=1Nyi∑i=1Nyi
6. 总结
公式(11-13)的作用是初始化GBDT模型,使得初始预测值 f 0 ( x ) f_0(x) f0(x) 能够尽量接近真实值,从而为后续的树提供一个合理的起点。通过最小化损失函数之和,我们可以根据不同的损失函数类型选择合适的初始值,例如:
- 回归任务中使用平方损失的均值。
- 分类任务中使用对数损失的对数几率。
这一初始化过程确保了GBDT的模型从一开始就具有一定的预测能力。
对数损失下的GBDT初始预测值f0(x) 的表达式 推导过程