背景
样本类别不均衡是分类问题中常常遇到的问题。在实际业务中,不同类别的样本量差异非常大,或者少数样本代表了业务的关键数据(少数样本更重要),例如,异常检测,恶意刷单,黄牛订单,信用卡欺诈等业务中,正类的样本比例往往只占很小的一部分。
方法
1.过采样
也叫上采样、重采样,通过增加少数类别的样本来改变不同类别的样本比例,达到类别比例均衡
方法1:复制多份少数样本, 容易发生过拟合
方法2:SMOTE算法, 领用邻近的样本生成新的样本, 新样本 = 原样本 + 噪声
x
n
=
x
i
+
λ
(
x
j
−
x
i
)
x_n = x_i + \lambda(x_j-x_i)
xn=xi+λ(xj−xi), 其中,
x
j
,
x
i
x_j, x_i
xj,xi是相邻的样本的特征
2.欠采样
也叫下采样,通过减少多数类别的样本来改变不同类别的样本比例,达到类别比例均衡
方法:随机删除
注意:采样的方式会并且只能改变训练集的分布,测试集不能做采样!
3.模型
欠采样+集成学习
将多数类别的样本进行随机采样,与少数类别形成多个训练集 (A1, B), (A2,B), (A3,B)训练3个基模型,让这三个模型进行投票; 每个模型不能看到所有的数据,其训练数据的分布与总体样本的数据分布不一致
4.损失函数
对于深度学习,使用focal loss
l
o
s
s
=
−
(
1
−
p
t
)
α
l
o
g
(
p
t
)
loss = -(1-p_t)^{\alpha} log(p_t)
loss=−(1−pt)αlog(pt)
权重 * NCE(负交叉熵损失)
pt为预测值∈[0,1], alpha为超参数, (1-pt)^alpha为权重, focal loss对loss进行加权,对于比较难预测的样本的loss,赋给较高的权重,在反向传播时,这部分样本的梯度更大,更新这部分参数。