我想对设备的故障和无故障情况进行分类。标签 A 表示有故障,标签 B 表示无故障。
scikit-learn
为我提供了一份分类矩阵报告,如下所示:
precision recall f1-score support
A 0.82 0.18 0.30 2565
B 0.96 1.00 0.98 45100
现在我应该使用 A 或 B 结果中的哪一个来指定模型操作?
最佳答案
简介
没有一个分数可以普遍描述模型,一切都取决于您的目标是什么。就您而言,您正在处理故障检测,因此您有兴趣在大量非故障案例中查找故障。同样的逻辑适用于例如人群并寻找携带病原体的个体。
在这种情况下,对“错误”案例(或者例如您可能生病了)具有高召回率(也称为敏感性)通常非常重要。在这样的筛查中,通常可以诊断为“故障”,实际上效果很好 - 这就是您的误报。为什么?因为遗漏发动机或肿瘤中的故障部件的成本比要求工程师或医生验证该情况要大得多。
解决方案
假设这个假设(故障召回是最重要的指标)在您的情况下成立,那么您应该考虑标签 A(故障)的召回。按照这些标准,您的模型表现相当差:它只发现了 18% 的错误。很可能很大程度上源于以下事实:故障数量比非故障数量大约少 20 倍,从而引入了严重偏差(需要解决)。
我可以想到很多情况下这个分数实际上不会很差。如果您能够检测到 18% 的发动机故障(在其他系统之上)并且不会引入误报,那么它会非常有用 - 您不希望在一切正常的情况下过于频繁地向驾驶员发出火警警报。同时,您可能不想使用相同的逻辑,例如癌症检测并告诉患者“一切正常”,但诊断错误的风险非常高。
指标
为了完整起见,我将解释这些术语。考虑这些定义:
- tp - 真阳性(真正的故障)
- tn - 真阴性(不是故障)
- fp - 误报(检测到故障,但正常)
- fn - 漏报(检测到正常,但出现故障)
Here是一篇试图很好地解释什么是精确率、召回率和 F1 的文章。
关于machine-learning - scikit learn 中的分类报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58428533/