趋近智
对于回归问题,梯度提升(Gradient Boosting)通常通过将新树拟合到残差来工作。然而,将其应用于分类任务需要不同的方式。分类任务涉及类别标签(例如,0或1)作为目标变量,因此无法简单地计算像 y−y^ 这样的残差。此外,模型的原始输出不是类别标签,而是一个连续分数,需要将其转换为概率。
为了解决这个问题,我们调整此框架以处理概率。主要思想是让模型预测正类的对数几率,这是一个从负无穷到正无穷的值。然后,我们可以使用逻辑(或S型)函数将此对数几率分数转换为介于0和1之间的概率。
这种设置使我们能够为分类问题使用更合适的损失函数,即对数损失,也称为二元交叉熵。
对于二元分类问题,其中真实标签 y 为0或1,单个观测值的对数损失定义为:
L(y,p)=−[ylog(p)+(1−y)log(1−p)]这里,p 是正类(y=1)的预测概率。
分析此函数:
该函数对自信但错误的预测惩罚远大于对自信且正确的预测奖励,这是分类损失函数的一个理想特性。
对数损失函数惩罚那些自信但错误的预测。当真实标签为1(蓝线)时,随着预测概率接近0,损失趋于无穷大。同样,当真实标签为0(红线)时,随着概率接近1,损失增大。
我们知道,梯度提升根据损失函数的负梯度训练新模型。对于使用MSE的回归问题,这个梯度仅仅是残差。现在,我们来找到使用对数损失的分类问题的对应部分。
首先,设 F(x) 是我们当前集成模型对观测值 x 的原始输出。此输出在对数几率空间中。我们使用逻辑函数将其转换为概率 p:
p=1+e−F(x)1现在,我们需要找到对数损失函数 L(y,p) 相对于模型原始输出 F(x) 的导数。使用链式法则,导数是:
∂F(x)∂L=∂p∂L⋅∂F(x)∂p在完成导数推导(机器学习课程中的常见练习)后,我们得到一个非常简单的结果:
∂F(x)∂L=p−y因此,负梯度,即我们的下一棵树将以此为训练依据的值,是:
−∂F(x)∂L=−(p−y)=y−p这个结果 y−p 是分类的伪残差。它是实际标签(0或1)与模型当前预测概率之间的差值。例如,如果真实标签是1,模型预测概率是0.3,则伪残差是 1−0.3=0.7。下一棵树将训练以预测这个值,使整体模型的预测更接近正确答案。
这个巧妙的结果展示了梯度提升框架的效用。通过选择正确的损失函数,我们得到一个“类似残差”的量,这使得相同的顺序误差校正过程对分类问题有效,就像对回归问题一样。
此框架直接扩展到多类别分类问题。模型不再输出单个对数几率值,而是生成一个对数几率向量,每个类别一个。然后,使用 softmax函数 将这些值转换为概率分布。
相应的损失函数是多项式偏差,常被称为类别交叉熵。过程保持不变:计算此损失函数对每个类别的负梯度,得到一组伪残差。通常在每个提升迭代中为每个类别训练一个单独的树,以预测这些伪残差,更新模型对每个类别的对数几率分数。虽然实现细节更为复杂,但将树拟合到梯度的基本机制保持不变。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造