二元分类中如何针对类别不平衡调整LogLoss(对数损失)?
类别不平衡场景下的加权LogLoss解决方案
存在针对二元分类类别不平衡调整LogLoss的方法,最常用的是加权二元交叉熵损失(Weighted Binary Cross-Entropy),核心是给少数类样本的损失赋予更高权重,抵消类别不平衡导致的模型偏向性。
公式对比
标准LogLoss(二元交叉熵)公式:
LogLoss = - [y * log(p) + (1 - y) * log(1 - p)]
其中:
y:真实标签(1代表正类/少数类,0代表负类/多数类)p:模型预测样本为正类的概率值(范围0~1)
加权版LogLoss公式:
Weighted LogLoss = - [w_pos * y * log(p) + w_neg * (1 - y) * log(1 - p)]
权重计算方式
针对你真实场景96/4的类别比例,推荐用逆频率加权:
- 设正类(少数类)占比为
r_pos=0.04,负类(多数类)占比为r_neg=0.96 - 少数类权重:
w_pos = r_neg / r_pos = 0.96 / 0.04 = 24 - 多数类权重:
w_neg = 1(也可设为r_pos / r_neg,但通常将多数类权重设为基准值1)
另一种等价的权重计算方式基于样本数量:
w_pos = 总样本数 / (2 * 正类样本数) w_neg = 总样本数 / (2 * 负类样本数)
为什么需要调整?
标准LogLoss会被占比极高的多数类样本主导,模型为了降低整体损失会倾向于预测多数类,忽略少数类的预测准确性。加权后少数类的损失被放大,迫使模型学习少数类的特征,提升真实场景下的泛化能力。
内容的提问来源于stack exchange,提问作者Vittorio Haardt
相关产品推荐
相关产品推荐

