论文阅读 (30):Granular Ball Sampling for Noisy Label Classification or Imbalanced Classification (2021)

介绍了一种名为粒球采样(GBS)的方法,该方法能够生成数据自适应的超球,进而用于噪声标签分类及不平衡数据处理。GBS通过划分生成粒球,并基于粒球进行采样。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引入

  本文要点
  1)提出粒球抽样 (granular-ball sampling, GBS):生成数据自适应的超球,超球上的点则是采样点;
  2)GBS可用于噪声标签分类领域;
  3)GBS可作为不平衡数据的欠采样方法;
  4)GBS时间复杂度接近 O ( N ) O(N) O(N)

1 粒球定义

  粒球GB是一个具有中心 c c c和半径 r r r属性的、覆盖一些点 GB ′ \text{GB}' GB的区域,且有 x i ∈ GB ′ ∣ i = 1 , 1 , … , M x_i\in\text{GB}'|i=1,1,\dots,M xiGBi=1,1,,M,则:
c = 1 M ∑ i = 1 M x i , r = 1 M ∑ i = 1 M ∥ x i − c ∥ (1) \tag{1} c=\frac{1}{M}\sum_{i=1}^Mx_i, \quad r=\frac{1}{M}\sum_{i=1}^M\|x_i-c\| c=M1i=1Mxi,r=M1i=1Mxic(1)其中 ∥ ⋅ ∥ \|\cdot\| 表示二范数。
  进一步,对于一个包含 k k k类样本 ( P 1 , P 2 , … , P k ) (P_1,P_2,\dots,P _k) (P1,P2,,Pk)的粒球,其标签按等权投票决定。

2 粒球生成

  GB的生成方法称为 k k k划分 ( k k k-division), k k k即是一个GB中数据点的类别数量。以 k = 2 k=2 k=2为例:
  1)随机生成两个中心点A和B;
  2)按照距离关系划分点。这样的一个过程很高效,时间复杂度为 O ( N ) O(N) O(N)
  3)判断每个GB的纯度,如果低于阈值 T T T ∣ | GB ′ ∣ > 2 d '|>2d >2d则继续划分,其中 d d d为数据集维度。纯度的计算如下:
  给定一个GB,其中的包含的点为GB ′ = P 1 ∪ P 2 ∪ ⋯ ∪ P k } '=P_1\cup P_2\cup\dots\cup P_k\} =P1P2Pk},则
purity ( GB ) = max ⁡ ( ∣ P i ∣ ) ∑ i ∣ P i ∣ (2) \tag{2} \text{purity}(\text{GB})=\frac{\max(|P_i|)}{\sum_i|P_i|} purity(GB)=iPimax(Pi)(2)  综上,GB的划分有两个条件:
  1)条件1:纯度低于 T T T
  2)条件2:包含的点过多。

3 基于粒球采样

  对于基于数据集生成的第 i i i个粒球,其中心 c i = ( c i 1 , c i 2 , … , c i j , … , c i d ) c_i=(c_i^1,c_i^2,\dots,c_i^j,\dots,c_i^d) ci=(ci1,ci2,,cij,,cid),半径为 r i r_i ri,则可在正负方向生成两个点,如下:
a = ( c i 1 , c i 2 , … , c i j + r i , … , c i d ) b = ( c i 1 , c i 2 , … , c i j − r i , … , c i d ) a=(c_i^1,c_i^2,\dots,c_i^j+r_i,\dots,c_i^d)\\ b=(c_i^1,c_i^2,\dots,c_i^j-r_i,\dots,c_i^d) a=(ci1,ci2,,cij+ri,,cid)b=(ci1,ci2,,cijri,,cid)  因此,一个粒球将产生 2 ∗ d 2*d 2d个这样的点
  基于粒球采样的步骤如下:
算法1

输入: 数据集 D D D,纯度阈值 T T T
输出: 采样数据集 D ′ D' D
1:初始化粒球簇GBs = { D } =\{D\} ={D}
2:如果粒球满足划分条件
3:  对于GBs中的每一个粒球 D i D_i Di
4:    如果purity ( D i ) < T (D_i)<T (Di)<T ∣ D i ∣ > 2 d |D_i|>2d Di>2d
5:      基于 k k k划分 D i D_i Di划分为 k k k个部分 D i ′ D_i' Di D i ′ ′ D_i'' Di
6:      添加划分部分到GBs;
7:      删除 D i D_i Di
8:初始化 D ′ = ∅ D'=\emptyset D=
9:遍历每一个粒球 D i D_i Di
10:  计算粒球中心 c i c_i ci和半径 r i r_i ri
11:  如果 D i D_i Di不满足划分条件2
12:    将 D i D_i Di中所有的点加入到 D ′ D' D
13:  否则
14:    for j = 1 , 2 , … , d j=1,2,\dots,d j=1,2,,d
15:       a = ( c i 1 , c i 2 , … , c i j + r i , … , c i d ) a=(c_i^1,c_i^2,\dots,c_i^j+r_i,\dots,c_i^d) a=(ci1,ci2,,cij+ri,,cid)
16:       b = ( c i 1 , c i 2 , … , c i j − r i , … , c i d ) b=(c_i^1,c_i^2,\dots,c_i^j-r_i,\dots,c_i^d) b=(ci1,ci2,,cijri,,cid)
17:      分别找到 D D D中离 a a a b b b最近的同标签点 a ′ a' a b ′ b' b
18:      把 a ′ a' a b ′ b' b加入到 D ′ D' D
19:返回 D ′ D' D

4 粒球与不平衡数据

  当数据不平衡时,粒球的使用如下:
算法2

输入: 数据集 D D D,纯度阈值 T T T
输出: 采样数据集 D ′ D' D
1:初始化粒球簇GBs = { D } =\{D\} ={D};且GBs ′ ∈ '\in GBs表示不满足第二条件的粒球簇。
2:使用算法1的2-8步生成粒球 D i ∈ D_i\in DiGBs
3:把具有最小样本数的某类数据 (记为小类,余下记为大类)加入 D ′ D' D
4:遍历GBs中的每一个粒球 D i D_i Di
5:  选取方式与算法1中选点方式一致
6:如果选取的大类样本的数量小于小类样本
7:  从大类样本所在类别相应的超球中选取一定数量的同类别样本,直到小类样本和大类样本数量的比例接近1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值