类别不平衡是指分类任务中不同类别的训练样例数目相差很大
现有技术大体上有三类做法解决此问题:
1. 欠采样
2. 过采样
3. 阈值移动/再缩放
1. 欠采样
直接对训练集里的反类样例进行欠采样,即去除一些反例使得正反例数目接近,然后再进行学习。欠采样若随机丢弃反例,可能会丢失重要信息。代表性算法:EasyEmsemble,利用集成学习机制,将反例划分为若干个集合,供不同学习器使用,这样对每个学习器来看都进行了欠采样,但全局来看不会丢失重要信息。
2. 过采样
对训练集里的正类样例进行过采样,即增加一些正例,使得正反例数目接近,然后再进行学习。但不能简单对初始正例样本重复采样,否则过拟合严重。代表性算法SMOTE,通过对训练集的正例进行插值,产生额外的正例。
3. 阈值移动
基于原始训练集进行学习,但在用训练好的分类器进行预测时,将 = * 再缩放考虑入决策过程。
几率 反应正例可能性和反例可能性之比值,阈值设置为0.5表明分类器任务正反例可能性相同,即分类器决策为:
若 >1则为正例, 为预测几率.
当训练集中正反例的数目不同时,令 表示正例数目, 表示反例数目,观测几率为 ,通常假设训练集是真是样本总体的无偏采样,因此观测几率代表真是几率,所以只要预测几率大于观测几率就应判断为正例。即:
> 则预测为正例
但是,我们的分类器是基于 >1进行决策的,因此对其预测值进行调整,使其基于 >1决策时实际在执行 > ,所以,需要令:
= *
这就是类别不平衡学习的基本策略——再缩放
再缩放/再平衡虽然简单,但实际操作并不平凡。因为训练集是真实样本总体的无偏采样的假设,一般并不成立。未必可有效基于训练集观测几率来估计真实几率。