Alex_McAvoy

想要成为渔夫的猎手

类别不平衡问题

【类别不平衡问题】

对于分类学习方法,都有一个共同的假设,即:不同类别的训练样例数目相同

如果不同类别的训练样例数目稍有差别,通常对分类影响不大,但是若差别很大,则会对学习造成影响,测试结果非常差

对于二分类问题,假设有 $998$ 个反例,$2$ 个正例,那么学习方法只需返回一个永远将新样本预测为反例的分类器,就能达到 $99.8\%$ 的精度,显然,这样的分类器没有价值

对于多分类问题,在将其拆解为多个二分类任务时,当使用 OvR 或 MvM 策略后,产生的二分类任务就有可能出现类别不平衡(Class-imbalance),即分类任务中不同类别的训练样例数目差别很大

例如,在银行信用欺诈交易识别中,属于欺诈交易的应该是很少部分,绝大部分交易是正常的,这就是一个正常的类别不平衡问题

一般而言,如果类别不平衡比例超过 $4:1$,那么分类器会因为数据不平衡性而无法满足分类要求,因此在构建分类模型之前,需要对分类不平衡性问题进行处理

【再缩放策略】

基本思想

从线性分类器的角度进行讨论,当使用 $\hat{y}=f(\mathbf{x_i};\boldsymbol{\theta})$ 对新样本进行拟合时,事实上是在用预测出的 $\hat{y}$ 与一个阈值比较,一般来说,通常将阈值设为 $0.5$,即在 $\hat{y}>0.5$ 时判为正类,在 $\hat{y}\leq 0.5$ 时判为负类

$\hat{y}$ 实际上反映了 $\mathbf{x}$ 为正类的可能性,$1-\hat{y}$ 反应了 $\mathbf{x}$ 为负类的可能性,两者的比值 $\frac{\hat{y}}{1-\hat{y}}$ 称为几率(Odds),其反应了 $\mathbf{x}$ 为正类的相对可能性

当阈值设为 $0.5$ 时,恰好表明分类器认为 $\mathbf{x}$ 为正类、负类的可能性相同,即分类器的决策规则为:

当训练集中正类、反类数目不同时,用 $n^+$ 表示正类数目,$n^-$ 表示负类数目,则观测几率为 $\frac{n^+}{n^-}$,假设训练集是真实样本总体的无偏估计,这时,观测几率就代表真实几率

因此,只要分类器的预测几率高于观测几率,就判为正类,即:

但分类器是基于 $\frac{\hat{y}}{1-\hat{y}}>1$ 进行决策的,因此需要对预测值进行调整,使其基于 $\frac{\hat{y}}{1-\hat{y}}>\frac{n^+}{n^-}$ 执行 $\frac{\hat{y}}{1-\hat{y}}>1$,即再缩放(Rescaling)策略

简单来说,就是通过调整数据集中正类和负类的数目,从而对预测值进行缩放调整

再缩放策略虽然简单,但实际操作却没这么容易,因为在实际应用中,假设训练集是真实样本总体的无偏估计这个假设往往不成立,即不能有效地基于训练集观测几率来推断真实几率

策略的实现

在实际应用中,有以下五种公认的方法去对数据集进行调整:

  1. 随机减少大类的样本数量
  2. 随机减少特定大类的样本数量
  3. 随机增大小类的样本数量
  4. 随机增大特定小类的样本数量
  5. 修改阈值,使阈值更符合实际情况

其中,通过实现第 1、2 种方法来使用再缩放策略的方法被称为欠采样,通过实现第 3、4 种方法来使用再缩放策略的方法被称为过采样,通过实现第 5 种方法来使用再缩放策略的方法被称为阈值移动

【欠采样】

欠采样(Under-sampling)是指对大类的数据样本进行采样,从而减少该类数据样本的个数,使其与其他类的数目接近,然后再进行学习

目前,最常用的欠采样算法是 AdaBoost 迭代算法,其是为解决基于随机丢弃大类样本可能会丢失一些重要信息的问题

AdaBoost 迭代算法 是基于集成学习(Ensemble Learning)简单集成(Easy Ensemble)的思想,其将大类随机分为若干个集合,每个集合分别与小类合并,得到多个新的训练子集,再利用每个训练子集分别训练 AdaBoost 弱分类器,最后集成所有的 AdaBoost 弱分类器,最终得到经过提升的的 AdaBoost 强分类器

这样对每个弱分类器来看,都进行了欠采样,在全局来看,没有丢失重要信息

【过采样】

过采样(Over-sampling)是指增加小类数据样本的个数,使其与其他类的数目接近,然后再进行学习,其代表算法是 SMOTE 算法

要注意的是,过采样不能简单地对小类进行重复采样,这会导致出现过拟合

SMOTE 算法通过数据插值的思想来产生额外的小类样本数据,其基本思想是:对每个小类样本 $a_i$,从其最近的 $k$ 个邻居中随机选择一个样本 $b_i$,然后在 $a_i$ 与 $b_i$ 的连线上随机选择一点,作为新合成的小类样本 $c_i$

SMOTE 算法有效地防止了过拟合问题,但可能扩大噪声的影响范围,并加剧分类边界模糊化

【阈值移动】

在分类问题中,阈值一般设为 $0.5$,当有可能出现类别不平衡问题时,可以根据实际情况对阈值进行移动,调整阈值,进而增加某一类的权重,以达到解决类别不平衡问题的目的,这就是阈值移动(Threshold Moving)

也就是说,阈值移动是直接基于原始训练集进行学习,在完成训练要进行预测时,将再缩放策略,即:

嵌入到决策过程中,通过改变阈值来达到解决类别不平衡问题的目的

感谢您对我的支持,让我继续努力分享有用的技术与知识点!