CNN笔记(7)---不平衡数据的处理(imbalance)

12.不平衡数据的处理(imbalance)

除了常规的分类,回归任务,图像语义分割,深度估计等像素级别任务也不乏不平衡样本的出现

12.1 数据层面处理方法

数据层面处理方法多借助数据采样法(sampling)使整体训练集样本趋于平衡

即各类样本数基本一致

12.1.1 数据重采样

重采样包括上采样和下采样

对于样本较少的类别,使用上采样(赋值/数据扩充),增加样本数

对于样本较多的类别,使用下采样,使不同类别数据均等

下采样时不是随机丢弃部分样本,而是在批训练时,每批随机挑选样本进入训练集

仅使用数据上采样有可能会引起模型过拟合问题。

保险有效的数据重采样是将上采样和下采样结合使用

12.1.2 类别平衡采样
  • 类别平衡采样:

    • 样本按类别分组,每个类别生成一个样本列表
    • 训练过程中,先随机选择一个或几个类别
    • 每个类别对应的样本列表中随机选择样本

    对于海量类别任务极其繁琐

  • 类别重组(label shuffling)

    • 按照类别顺序,对原始样本排序,计算每个类别样本数量,记录最多样本数
    • 根据最多样本数,对每个类别产生一个随机排列列表
    • 用列表中的随机数对各自类别的样本数取余,得到对应索引值
    • 根据索引提取图像,生成该类图像的图像随机列表
    • 所有类别的随机列表连在一起随机打乱次序,得到最终列表(最终列表中,每类样本数目均等)
    • 遍历列表进行训练,下一轮重复上述操作

    优点:只需要原始图像列表,所有操作在内存中线性完成。

    与数据下采样有异曲同工之意

12.2 算法层面处理方法

增大小样本错分的“惩罚代价”

12.2.1 代价敏感方法
1.基于代价敏感矩阵(类别级别)

假设某训练集共 N 个样本,形如: {xn,yn}Nn=1 { x n , y n } n = 1 N ,其中样本标记 y y 隶属于K类

代价敏感矩阵方法:利用K×K的矩阵 C C 对不同样本类别施加错误惩罚(权重)

C=[C(1,1)C(1,2)C(1,K)C(2,1)C(2,2)C(2,K)C(K,1)C(K,2)C(K,K)]

其中, C(yi,yj)[0,] C ( y i , y j ) ∈ [ 0 , ∞ ] 表示类别 yi y i 错分为 yj y j 的惩罚\代价,其取值不小于0;而对角线上的 C(yi,yi)=0 C ( y i , y i ) = 0

施加代价后的训练目标

训练得到某分类器 g 使得期望代价之和 nC(yn,g(xn)) ∑ n C ( y n , g ( x n ) ) 最小。

2.基于代价敏感向量(样本级别)

对某样本 (xn,yn) ( x n , y n ) ,有对应的一个 K 维代价敏感向量 cn[0,)K c n ∈ [ 0 , ∞ ) K ,其中 cn c n 的第 k 维表示该样本被错分为第k 类的惩罚

在模型训练阶段是将样本级别的代价敏感向量与样本以 (xn,yn,cn) ( x n , y n , c n ) 三元组形式一同作为输入数据送入学习算法

代价敏感矩阵实质上只是代价敏感向量的一种特殊形式

12.2.2 代价敏感法中权重的指定方式

代价敏感方法处理不平衡样本问题的前提是需要事先指定代价敏感矩阵或向量,关键是错分惩罚错分权重的设定。

a.按照样本比例指定

根据不同类别的样本数量比例,样本数多的类别的错分权重低一些,小样本的类别错分权重大一些。

e.g. 类别 a:b:c=3:2:1 a : b : c = 3 : 2 : 1
代价敏感矩阵可以指定为:

C=03/232/3021/31/20 C = [ 0 2 / 3 1 / 3 3 / 2 0 1 / 2 3 2 0 ]

整体乘上类别树的最小公倍数6,保证有效惩罚权重不小于1
C=09184012230 C = [ 0 4 2 9 0 3 18 12 0 ]

b.根据混淆矩阵指定

混淆矩阵(Confusion Matrix)

混淆矩阵的每一列代表一个类的实例预测,每一行代表真实类别

e.g.

类别a类别b类别c
类别a413
类别b234
类别c3221

根据各类样本错分样本数设置代价敏感矩阵取值

一种方式是直接以错分样本数为矩阵取值

e.g.

C=023102340 C = [ 0 1 3 2 0 4 3 2 0 ]

更优方案:考虑各类的错分比例,调整权重

a类错分比例 50%
b类错分比例 67%
c类错分比例 19%
总错分比例 136%

a类错分占比:36.76%
b类错分占比:49.26%
c类错分占比:13.97%

以此为权重乘原代价矩阵,取整,得到新的代价矩阵:

C=09942360281101970 C = [ 0 36 110 99 0 197 42 28 0 ]

参考文献:解析卷积神经网络—深度学习实践手册

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值