类别不平衡 (class-imbalance):指分类任务中不同类别的训练样例数目差别很大的情况。
解决方式
再缩放(改变分类决策规则)
举个例子,在二分类中如果在类别平衡的情况下,假设预测为1的概率为p,则预测为0的概率为1-p,则:
p
1
−
p
>
1
{p \over 1-p}>1
1−pp>1时,类别为1,否则类别为0。若类别不平衡呢,假设数据集中,类别为1的数量为
m
1
m^1
m1,类别为0的数目为
m
0
m^0
m0,
m
1
m^1
m1!=
m
0
m^0
m0,观测概率为
m
1
m
0
m^1 \over m^0
m0m1,只要分类器的预测几率高于观测几率就应判定为类别1:
p
1
−
p
{p \over 1-p}
1−pp>
m
1
m
0
m^1 \over m^0
m0m1
进行一个简单的调整,就变为求:
p
′
1
−
p
′
{{p'} \over 1-p'}
1−p′p′=
p
1
−
p
{p \over 1-p}
1−ppx
m
1
m
0
m^1 \over m^0
m0m1
欠采样
对较多类的数据样本进行采样来减少该类数据样本的个数,使其与其他类数目接近,然后再进行学习。
缺点:欠采样可能会丢失一些重要信息。
代表EasyEnsemble:利用集成学习机制,将反倒划分为若干个
集合供不同学习器使用,这样对每个学习器来看都进行了欠采样,但在全局来看却不会丢失重要信息。
过采样
对较少类的数据样本进行采样来增加小类的数据样本个数。
代表性算法SMOTE:通过对训练集里的正例进行插值来产生额外的正例。思路:对每个少数类样本a,从它的最近邻中随机选一个样本b,然后在a、b之间的连线上随机选一点作为新合成的少数类样本。
阈值移动
直接基于原始训练集进行学习,但在用训练好的分类器进行预测时,将 p ′ 1 − p ′ {{p'} \over 1-p'} 1−p′p′= p 1 − p {p \over 1-p} 1−ppx m 1 m 0 m^1 \over m^0 m0m1嵌入到其决策过程中。