前言: 之前所说的分类学习方法都是基于训练样本比例大致相同,不同类别之间样本数目相差不大的情况, 但若差别很大,例如有 985 个反例,但正例只有 15 个,那么学习训练之后,学习器只需将任何一个新样本都预测为反例,就能达到 98.5% 的精度; 但这样学习器没什么价值。像这样训练样本比例相差很大的情况即为 类别不平衡问题 。
解决方法 :数值再缩放策略
- 阈值移动(Threshold-moving)
- 过采样(Over-sampling)
- 欠采样(Under-sampling)
1. Threshold-moving
对于样本数据比例相同时,我们采用
y
=
w
T
x
+
b
y=w^{T}x+b
y=wTx+b 来对新样本 x 进行分类,y>0.5时判别为正例,否则为反例,相当于对 y 设立一个阈值,设置为0.5,那么此时分类器分类规则则是:
上面可以看出,当阈值设置为 0.5 的时候,那么上式的
y
1
−
y
\frac{y}{1-y}
1−yy 则是与 1 进行比较;相应的,对于类别不平衡问题,我们可以尝试改变阈值,不是和1进行比较,我们可以对其进行更改。
令m+为正例数目,m-为反例数目,此时我们观测几率则是
m
+
m
−
\frac{m^{+}}{m^{-}}
m−m+,因此当预测几率大于观测几率时,则判定为正例,即:
注意: 分类器都是基于第一幅图那样来进行决策,因此,需要再次进行调整,即:
2. Over-sampling
过采样 则是增加少的那一部分样本来使得正、反例数目接近,然后进行学习。
- 样本插值 (代表性算法:SMOTE)
- 样本生成 (GAN)
3. Under-sampling
欠采样 则是去除一些样本来使得正、反例数目接近,然后进行学习。
- 集成学习机制 (代表性算法:EasyEnsemble)
4. 加权损失函数