类别不平衡问题: 指的是在分类任务中不同类别的训练样本数目差异很大的问题。
我们简单举一个例子:如果我们要判断一名大学生究竟是研究生还是本科生,我们已知在大学中本科生的数量会远远高于研究生的数量,我们假设本科生与研究生比例为9:1。此时,我们只需要将所有学生都判断成是本科生,这样我们的模型就有90%的正确率。但是这样的模型是没有意义的,因为它不可以识别研究生。
所以,各种分类学习的方法都有一个基本的假设:不同类别的训练样例数目相当,或者差异不大。
但是,当这一假设不成立的时候,我们的分类学习方法可能不会得到良好的结果。为了解决这一问题,现在大体上有三种方法。不失一般性,我们认为正例的样本数量远高于反例。
方法一:欠采样
欠采样(亦称为下采样)的思想很简单:对训练集中的正例进行欠采样,即去除一些正例,使得正例和反例的数目相当,在进行学习。
欠采样法的优势在于,它缩小了样本数目,时间成本将会缩小;但是,也就是因为其缩小了样本数量,模型的准确率可能得不到保证,并且随机删除样例也会造成信息的丢失。
目前比较好的方法是将欠采样应用到集成学习中,即对正例进行多次欠采样,之后配以反例,从而形成多组正例/反例数据集,供多个学习器使用。这样看来,每个学习器都采用了欠采样,但是在全局看来不会丢失重要信息。
方法二:过采样
过采样(亦称为上采样)的思想也很简单:对训练集中的反例进行过采样,即增加一些反例使得正例和反例的数目相同,之后在进行学习。
过采样的方法增加了数据量,同时也增加了学习的时间成本。需要注意的是:过采样不能简单的从反例中随机抽取样本,因为这样会导致严重的过拟合问题。
目前比较好的解决方法是通过对反例的插值来产生额外的反例,进而将正例和反例的数量调整至大致相当。
方法三:再缩放
我们分类器的工作原理是预测出 y y y值, y y y表达的是正例的可能性。然后将 y y y与一个阈值进行比较,通常都是与0.5进行比较,若 y > 0.5 y>0.5 y>0.5时判为正例,否则为反例。
上式也可写为:若 y 1 − y > 1 \dfrac{y}{1-y} > 1 1−yy>