分类任务中数据类别不平衡问题的几种解决方案

类别不平衡(class-imbalance),是指分类任务中不同类别的训练样例数目差别很大的情况(例如,训练集正类样例10个,反类样例90个),本文假设正类样例较少,反类样例较多。

现有解决方案大体分为三类,如下文所示。

欠采样(undersampling)

欠采样方法,即去除一些反类样例,使得正、反类样例数量接近。

EasyEnsemble为欠采样的代表性算法,利用继承学习机制,将反例划分为若干个集合,供不同学习器使用,这样对每个学习器来看都进行了欠采样,但在全局来看却不会丢失重要信息。

欠采样示意图

上图为EasyEnsemble示意图,若反例样本是正例样本数量的4倍,将反例样本随机划分成4个集合,每个集合分别和全部正例样本组成不同的训练集,每个训练集由不同学习器进行学习,这样,每个训练集的数据都是平衡的,全局来看又不会舍弃掉任何反例样本。

过采样(oversampling)

过采样,即增加一些正例,使得正、反类样例数量接近。

SMOTE,过采样的代表性算法,通过对训练集的正例进行插值,来产生额外的正例。

阈值移动(threshold-moving)

阈值移动,直接基于原始训练集进行学习,但是修改分类器预测时的决策过程;下面以逻辑回归(logistics regression)为例,进行说明。

逻辑回归(logistics regression),即对数几率回归,其模型可以表示为:
y = 1 1 + e ( w T x + b ) y=\frac{1}{1+e^{-(w^\mathrm{T}x+b)}}
即:
ln y 1 y = w T x + b \ln{\frac{y}{1-y}}=w^\mathrm{T}x+b
其中, y y 为预测得到结果, x x 为输入样本数据, w w b b 为模型权值和偏置。

img

如上图所示,图中曲线为对数几率函数(Sigmoid 函数的一种),因此, y y 在0到1之间。

我们将 y y 视为样本 x x 为正例的可能性,那么 1 y 1-y 是其为反例的可能性,几率 y 1 y \frac{y}{1-y} 反映了正例可能性和反例可能性之比。

一般情况下,

样本平衡时,分类器的决策规则为:

  • y 1 y > 1 \frac{y}{1-y}>1 ,则 预测为正例;
  • 上条规则亦可以表示为,若 y > 0.5 y>0.5 ,则 预测为正例。

样本不平衡时,记 m + m^+ 为正例样本数量, m m^- 为反例样本数量,分类器决策规则变为:

  • y 1 y > m + m \frac{y}{1-y}>\frac{m^+}{m^-} ,则 预测为正例;
  • 上条规则亦可以表示为,若 y 1 y × m m + > 1 \frac{y}{1-y}\times\frac{m^-}{m^+}>1 ,或 y > m + m y>\frac{m^+}{m} ,则 预测为正例。

这种类别不平衡学习的策略也叫“再缩放”(rescaling)或“再平衡”(rebalance)

猜你喜欢

转载自blog.csdn.net/kuaizi_sophia/article/details/84894363