class_weight=‘balanced‘缓解类别不平衡问题

当 class_weight='balanced' 时,每个类别 i 的权重 w_i 计算如下:

nsamples​ :训练集总样本数

nclasses​ :类别总数(不包含背景,如果有)

ni​ :类别 i 的样本数

例

假设训练集共有 1000 个样本,分为 3 个类别:

复制代码
类别 A:500 个样本
类别 B:300 个样本
类别 C:200 个样本

那么:

复制代码
类别 A 的权重:1000/(3×500)=1000/1500≈0.6671000/(3×500)=1000/1500≈0.667
类别 B 的权重:1000/(3×300)=1000/900≈1.1111000/(3×300)=1000/900≈1.111
类别 C 的权重:1000/(3×200)=1000/600≈1.6671000/(3×200)=1000/600≈1.667

类别 C(样本最少)获得最大权重,类别 A(样本最多)权重最小。

在 SVM 中的作用

SVM 的目标是最小化:

其中 ξi是松弛变量。

class_weight 将样本的惩罚系数 C 乘以对应的类别权重。实际效果是:

复制代码
对少数类样本,其松弛变量 ξi​ 的惩罚被放大,迫使模型更努力地正确分类它们(或允许更少的误分类)。
对多数类样本,惩罚相对减小,模型对它们的误分类容忍度更高。

最终,模型会倾向于找到一个决策边界,使得少数类样本被更准确地分类,从而提升整体的类别平衡性能。

相关推荐
Nuanyt3 小时前
LeetCode Hot 100 链表专题(五)· 2 题(Java)
java·算法·leetcode·链表
硅谷秋水6 小时前
AgenticRoboRL:将“编程智能体”后训练引入智能体化机器人领域
人工智能·机器学习·语言模型·机器人
w_zero_one7 小时前
递归算法(一)
java·开发语言·算法
风影同志783248 小时前
20 个比特能装下多少行情?——实测拆解 Kronos 的 K 线分词器
算法
写的都是BUG9 小时前
APK 里的钥匙,一直就放在门口:聊聊加固真正该做什么
前端·算法
硅谷秋水9 小时前
DiscoveryRSI:通过递归学习发现有价值的假设
人工智能·机器学习·语言模型
地平线开发者9 小时前
CLIP 的零样本分类:一组文本如何变成图像分类器?
算法
hkNaruto9 小时前
【AI】游戏大模型智能体OODA过程记忆问题解决方案:AgenticSTS 有界记忆契约:技术分析与流水线改造操作手册
人工智能·游戏·机器学习
京东云开发者10 小时前
从“会生成”到“能生产”:萤火虫 AIGC 平台的 AI Infra 实践
算法·aigc·产品
youshi666810 小时前
PID——算法改进
算法