我创建了一个合成数据集,其中一个类有 20 个样本,另一个类有 100 个样本,因此创建了一个不平衡的数据集。现在平衡前数据分类的准确率为80%,而平衡后(即两个类中的100个样本)为60%。可能的原因是什么?
为什么过采样后高度不平衡的数据集的准确性会降低?
数据挖掘
分类
数据集
无监督学习
监督学习
阶级失衡
2021-09-20 17:15:32
2个回答
想象一下,您的数据不容易分离。您的分类器无法很好地区分正面和负面示例,因此它通常可以预测任何示例的多数类。在不平衡的情况下,它将得到 100 个正确示例和 20 个错误示例,从而产生 100/120 = 83% 的准确度。但是在平衡类之后,最好的结果是大约 50%。
这里的问题是准确率不是衡量不平衡类性能的好方法。可能是你的数据太难了,或者你的分类器能力不够强。通常最好查看混淆矩阵以更好地了解分类器的工作方式,或者查看准确性以外的指标,例如精度和召回率,分数(这只是准确率和召回率的调和平均值)或 AUC。这些通常都易于在常见的机器学习库中使用,例如scikit-learn.
准确性可能不是您问题的一个好的指标。
对于原始数据集,如果模型只是做一个虚拟预测所有样本都属于更大的类别,那么准确率将是 83% (100/120)。但这通常不是我们想要在不平衡数据集中预测的。
让我们来看一个欺诈检测问题。交易是欺诈的概率非常小(假设为 0.01%),但未被发现的欺诈交易的损失是巨大的(例如 100 万美元)。另一方面,手动验证交易的成本相对较小。在这种情况下,我们希望检测所有可能的欺诈行为,即使我们必须做出很多误报预测。
要解决不平衡的数据集,首先您必须选择要回答的问题。那么,这个问题的好指标是什么。在决定您应该使用哪种技术之前,请先回答这两个问题。
回到最初的问题。当我们对较小的类别进行过采样时,为什么准确性会降低?
那是因为这种技术给小类增加了更多的权重,使模型偏向于它。该模型现在将以更高的准确度预测小类,但整体准确度会降低。