作者:Jason Brownlee
编译:Florence Wong – AICUG
本文系AICUG翻译原创,如需转载请联系(微信号:834436689)以获得授权
不平衡的数据集是在类别分布中存在严重偏差的数据集,例如少数类比多数类是1:100或1:1000。
训练数据集中的这种偏差会影响许多机器学习算法,从而导致某些算法完全忽略少数类别。这是一个问题,因为通常少数类在预测中最重要。
解决分类不平衡问题的一种方法是,对训练数据集进行随机重采样。随机重采样不平衡数据集的两种主要方法是,从多数类中删除样本(称为欠采样),并从少数类中复制样本(称为过采样)。
在本教程中,您将发现针对不平衡分类地随机过采样和欠采样。
完成本教程后,您将知道:
- 随机重采样提供了一种朴素技术,可以重新平衡不平衡数据集的类分布。
- 随机过采样会复制训练数据集中少数类的示例,并可能导致某些模型的过拟合。
- 随机欠采样会从多数类中删除示例,并可能导致丢失对模型无价的信息。
教程概述
本教程分为五个部分。他们是:
- 随机重采样不平衡数据集
- 不平衡学习库(Imbalanced-learn library)
- 随机过采样不平衡数据集
- 随机欠采样不平衡数据集
- 结合随机过采样和欠采样
随机重采样不平衡数据集
重采样涉及创建训练数据集的新的转换版本,其中所选示例具有不同的类分布。
对于不平衡的分类问题,这是一种简单有效的策略。
“应用重采样策略以获得更平衡的数据分布是解决不平衡问题的有效方法。”
— 不平衡分布下的预测模型调研,2015年。
最简单的策略是为转换后的数据集随机选择示例,称为随机重采样。
对于不平衡分类,有两种主要的随机重采样方法:他们是过采样和欠采样。
- 随机过采样:在少数类中随机复制示例。
- 随机欠采样:随机删除多数类中的示例。
随机过采样涉及从少数类中随机选择样本,进行替换,并将其添加到训练数据集中。随机欠采样涉及从多数类中随机选择示例,并将其从训练数据集中删除。
“在随机欠采样中,多数类实例将被随机丢弃,直到达到更均衡的分布为止。”
—第45页,学习不平衡:基础,算法和应用程序, 2013年
这两种方法均可重复使用,直到在训练数据集中获得所需的类分布为止,例如在类别之间平均分布。
他们被称为“ 朴素的重采样 ”方法,因为他们就数据不进行假设,也不使用启发式方法。这使该方法易于实现且执行速度快,这对于非常大和复杂的数据集是理想的。
两种技术都可用于两类(二进制)分类问题和具有一个或多个多数或少数类的多类分类问题。
重要的是,对分类分布的更改仅应用于训练数据集。目的是影响模型的拟合。重采样对于用于评估一个模型性能的测试或留守数据集是不适用的。
通常,这些朴素的方法可能是有效的,尽管这取决于所涉及的数据集和模型的细节。
让我们仔细研究每种方法,以及如何在实践中使用。
不平衡学习库(Imbalanced-learn library)
在这些示例中,我们将使用不平衡学习Python库(imbalanced-learn Python library)提供的实现,可以通过pip如下安装:
sudo pip install imbalanced-learn
您可以通过打印已安装的库的版本来确认安装成功:
# check version number
import imblearn
print(imblearn.__version__)
运行示例将打印已安装库的版本号;例如:
0.50
随机过采样不平衡数据集
随机过采样涉及从少数类样本中随机复制样本,并将其添加到训练数据集中。
从训练数据集中随机抽取样本会进行替换。这意味着可以选择少数群体的例子,并多次将其添加到新的“更加平衡 ”的训练数据集中。从原始训练数据集中选择他们,将其添加到新的训练数据集中,然后在原始数据集中返回或“替换 ”他们,以便再次选择他们。
对于受偏斜分布影响,并且模型拟合受一个给定类的多个重复示例影响的,那些机器学习算法而言,该技术可能是有效的。这可能包括迭代学习系数的算法,例如使用随机梯度下降的人工神经网络。它还可能影响寻求数据良好分割的模型,例如支持向量机和决策树。
调整目标类的分布可能很有用。在某些情况下,为严重不平衡的数据集寻求平衡的分布,可能导致,被影响过的算法去过度拟合少数类,从而导致泛化误差增加。在训练数据集上的表现效果会更好,但在留守数据集或测试数据集上的性能却变差。
“…随机过采样可能会增加发生过拟合的可能性,因为它制作了少数类示例的精确副本。这样,例如,一个符号分类器就可以构建看似准确的规则,但实际上涵盖了一个重复的示例。“
—第83页,从不平衡数据集中学习,2018年。
因此,要深入了解该方法的影响,最好在过采样后监视训练数据集和测试数据集的性能,并将结果与原始数据集上的以相同算法进行比较。
少数类的示例数量增加,尤其是在类偏斜严重的情况下,也可能导致拟合模型时计算成本显着增加,尤其是考虑到模型一次又一次地,在训练数据集中看到了相同的示例。
“…在随机过采样中,将少数类示例的随机副本集添加到数据中。这可能会增加过度拟合的可能性,特别是对于较高的过采样率。此外,它可能降低分类器性能并增加计算量。“
— 不平衡分布下的预测模型的调研,2015年。
可以使用RandomOverSampler类实现随机过采样。
可以定义该类,并采用可以设置为“minority ” 的sample_strategy参数,以自动平衡具有一个或多个多数类的少数类。
例如: