如何提高不平衡数据集的准确性(不是精度)?

数据挖掘 数据集 可视化 预处理 不平衡数据
2022-03-13 00:23:03

我正在尝试的 Kaggle 比赛中有一个不平衡的数据集。数据集的目标变量是二进制的,它偏向于 0。 0 - 70% 1 - 30% 我尝试了几种机器学习算法,如逻辑回归、随机森林、决策树等。但所有这些算法的准确率都在 70% 左右. 似乎模型总是倾向于预测 0。所以我尝试了几种方法来获得如下所示的无偏数据集。

  1. 使用 SMOTE 和其他技术对数据集进行上采样。
  2. 欠采样数据集
  3. 改变模型的重量。

但是所有这些步骤都降低了准确性而不是提高了准确性。曲线下面积和精度有所提高,但不幸的是我必须以某种方式提高精度才能赢得比赛。

因此,如果您能告诉我有关提高不平衡数据集准确性的技术,我将不胜感激。

1个回答

根据您的评论,我将在这里详细说明(基本上评论太长了)

准确性可能不是衡量模型性能的好方法。想象一下 99 个“0”和 1 个“1”的问题。始终显示“0”的模型将具有 99% 的准确率,并且是无用的,因为您想检测“1”。一个模型给你 10 '1' 包括真正的模型要好得多,但准确度要低得多。

然后,您必须正确定义您的问题,并根据它更改指标。例如,在这些情况下有用的指标之一可能是 AUC,因为它不受不平衡数据集的影响。

因此,您可以应用的一种方法是尝试最大化 AUC,当您找到好的模型时,在您的测试中手动选择 30% 得分最高的特征。如果你在你的选择中找到了一半的真“1”,这已经是一个非常好的结果(根据问题的难度),而准确性会更差。

你真的必须调整你试图最大化你的问题的指标:因为在这里,有更多的可能性是'0'而不是'1',准确度非常好,分类器总是猜测'0',并调整你的模型跟随准确性可以将您变成这样的分类器。