将二进制分类的误报减少到0的最佳方法?

机器算法验证 神经网络 分类 优化 假阳性率
2022-03-27 19:04:29

我正在处理一项任务,即使是 0.00001 fp 速率也是不可接受的,因为当它不是阳性时检测为阳性会在此任务中产生非常糟糕的后果,所以当我使用 k 折叠时,它需要在我的数据集中精确为 0 ,所以每次折叠为 0。基本上我的模型至少应该很好地学习我自己数据集中的所有负样本,并且永远不会错误地将它们分类为正样本。

但是最好的方法是什么?

到目前为止,我想到了两件事,但如果有更好的方法,请告诉我:

  1. 在训练期间给正样本一个非常大的权重

  2. 正样本的数据增强,因此使正数据集大 100 倍之类的

总结问题:

你正在给一个包含足够平衡数据的二元分类任务,并被要求在给定的数据集上训练一个误报率为 0 的深度神经模型,你会怎么做?(输入昏暗在 1k-3k 左右)

2个回答

使用概率分类而不是硬 0-1 分类。也就是说,预测一个实例为正的概率。使用适当的评分规则来评估这些预测概率。

然后考虑是否可以根据这些概率做出决定。您可能希望也可能不希望使用单个阈值将您的概率映射到难分类。相反,您甚至可能希望对多个不同的操作使用多个阈值。概率和决策之间的映射应该基于关于错误(和正确)决策成本的明确假设。更多在这里。

简而言之:将建模/预测部分与决策分离。

根本不要将准确性用作 KPI。这是误导性的,尤其是(但不仅是)不平衡的数据。与准确性完全相同的问题同样适用于 FPR。

同样,不要超重一类。这类似于过采样,通常用于“解决”类不平衡 - 但不平衡的数据不是问题(只要您不使用误导性 KPI,如准确度或 FPR),过采样或加权不会解决非-问题

除了@StephanKolassa 非常重要的一点:二进制分类实际上是你需要的吗?

  • 二元分类(或更一般的区分分类)假设正面和负面是明确定义的类别。

  • 相比之下,一类分类器(又名类模型)只假设被建模的类是明确定义的。

    这样的模型还将检测“非该类”,以检测与模型类不同的案例的新(以前未知)方式。

一类分类也可用于概率种类(或输出为分数或与建模类的距离)。

@StefanKolassa 写的关于正确评分的所有内容也适用于一类分类器。通过构造,一类分类器“不关心”相对类频率,因此也不关心类不平衡。

一类分类与异常值和异常检测密切相关。


完全不相关的一点:当您的测试数据达到 0 FPR 时,请注意相关的置信区间。根据您测试的阳性病例数,您只能声称,例如,基于该测试,FPR 的单边 95% 置信区间 < x。

法则表明,您需要在超过 3e6 个真正阴性和独立的测试用例中观察到 0 个误报,以使 FPR 的单边 95% 置信区间低于 1e-6。

(这是针对作为测试用例分数的品质因数的额外点:它们具有高方差)