当目标不平衡时提高二元分类的准确性

机器算法验证 机器学习 sas
2022-03-28 10:55:40

我正在研究 BRFSS 数据集,目标是预测糖尿病。该数据集有 500,000 行和 405 列。这是一个 0/​​1 分类问题,0 与 1 的比例为 90:10。我尝试使用决策树、逻辑回归、决策树和逻辑回归的集合,在所有这些方法中我的错误分类率几乎是 14%。

  • 我应该怎么做才能提高准确性?

我看到之前的一篇文章说二次抽样或分配不同的权重有帮助。但我不确定这个比例。

  • 开始时的最佳比例是多少?
  • 我正在使用 SAS。有没有办法在 SAS 中进行二次抽样?
  • 我也有兴趣尝试加权方法。有没有办法在 SAS 中实现这一点?

编辑(2011 年 4 月 28 日)

我尝试了二次抽样,我的错误分类率从 14% 上升到 23%。对于 0 类和 1 类,我使用的比率是 50:50。数据中的原始比率是 90:10,并且按原样使用数据会产生 14% 的误差。所以我相信二次抽样不适用于我的数据。您会建议任何其他提高准确性的方法吗?

4个回答

问题更多在于准确性评分规则的选择。确保最终目标是分类而不是预测。正确分类的比例是一个不连续的不正确评分规则。不正确的评分规则是由虚假模型优化的规则。如果评分规则不正确,例如添加一个非常重要的预测器会使模型的准确性降低等事情可能会发生。使用对数似然(或偏差)或 Brier 二次评分规则会有所帮助。一旦模型最终确定,一致性指数 C(恰好等于 ROC 面积,使 ROC 看起来比实际更有用)是预测歧视的有用度量。

关于决策树,我建议如下。假设您有来自类的 90 个训练示例您可以使用决策树的集合,其中每棵树都根据中的 10 个随机选择的示例进行训练合奏团的决定可能是多数票。您可以使用不同的来查看它是如何工作的。C1C2NC1C2N

根据您共享的输出,节点的最大分支数设置为 2。提高该限制可能会为您提供更多分支选择,特别是如果 SAS 可以采用连续变量并将它们分解为类别。它的数据很糟糕,但这就是我们所处的游戏,只要你交叉验证你就站在坚实的道德基础上:-)

如果您使用基于树的方法,则可以使用拆分标准。例如,在每一步,选择给出最高加权准确度的分割(两个类准确度的平均值)。

这也可以用作随机森林的基础,这应该会给你一个很好的分类器。

我曾经使用类似的过程来提高精度,同时牺牲召回率。它工作得非常好(比对分类算法的分数进行阈值处理要好,因为分类算法仍然非常嘈杂)。