引入
本文要点:
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
xi∈GB′∣i=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=1∑Mxi,r=M1i=1∑M∥xi−c∥(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\}
′=P1∪P2∪⋯∪Pk},则
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)=∑i∣Pi∣max(∣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,…,cij−ri,…,cid) 因此,一个粒球将产生
2
∗
d
2*d
2∗d个这样的点
基于粒球采样的步骤如下:
算法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,…,cij−ri,…,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 Di∈GBs
3:把具有最小样本数的某类数据 (记为小类,余下记为大类)加入 D ′ D' D′
4:遍历GBs中的每一个粒球 D i D_i Di
5: 选取方式与算法1中选点方式一致
6:如果选取的大类样本的数量小于小类样本
7: 从大类样本所在类别相应的超球中选取一定数量的同类别样本,直到小类样本和大类样本数量的比例接近1。