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​ 的惩罚被放大,迫使模型更努力地正确分类它们(或允许更少的误分类)。
对多数类样本,惩罚相对减小,模型对它们的误分类容忍度更高。

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

相关推荐
luj_176817 小时前
残熵算法实时化三大瓶颈突破
c语言·开发语言·网络·经验分享·算法
mCell18 小时前
你以为短链接只是 Hash + 301/302?
后端·算法·架构
KaMeidebaby19 小时前
卡梅德生物技术快报|抗体亲和力成熟工业化调控新机制:差异性浆细胞增殖工艺优化思路
java·开发语言·人工智能·算法·机器学习·架构·spark
luj_176820 小时前
心形曲线轨迹控制三大关键技术
c语言·开发语言·c++·经验分享·算法
tmlx3I08120 小时前
高光谱拼接算法(六)RANSAC 误匹配剔除
人工智能·算法·机器学习
不相心 -w-20 小时前
基础-滑动窗口-(定长 | 不定长)
算法
硅谷秋水21 小时前
World Engine:迈向自动驾驶的后训练时代
人工智能·深度学习·机器学习·计算机视觉·语言模型·自动驾驶
醉城夜风~21 小时前
Java详解经典算法题:接雨水(三种实现方案+原理剖析)
java·开发语言·算法
ysa05103021 小时前
【板子】ST表
c++·笔记·算法·板子
CHHH_HHH21 小时前
【C++11】深入解析C++可变参数模板
开发语言·c++·算法·stl·c++11