偏斜数据的ML模型验证

时间:2018-12-26 17:40:26

标签: machine-learning

说,我正在建立一个ML模型,以预测患者是否患有流感。我知道,平均而言,每100名患者中就有2名患有流感。

通常,为了估算模型的准确性,我只需要计算模型正确标注的新数据百分比即可:

accuracy rate = (correctly identified patients / total number of patients)

但是在这种情况下,我可以编写一个模型,将所有患者都标记为没有流感,并且在98%的时间内准确无误。

因此,估算者可能不仅应考虑模型正确标记了多少患者,还应考虑其实际发现的患病患者的数量,例如

accuracy rate = (correctly identified patients / total number of patients) *
                (correctly identified patients with flu / total number of patient with flu)

但是这个估算器没有现实世界的解释。

这是思考的正确方法,并且您将如何在这样的偏斜数据上计算模型的准确率?谢谢!

2 个答案:

答案 0 :(得分:0)

我认为您必须使用MAP。为此,您需要计算召回率和精度:

召回率=(真阳性)/(真阳性+假阳性)

精度=(真正)/(真正+假负)

  • 阳性:患者患有流感

  • 阴性:患者没有流感

  • 是:正确识别

  • 错误:标识错误

答案 1 :(得分:0)

如果要建立平衡模型,长答案是“取决于”,您可以查看的短期答案是马修斯相关系数(MCC) / 发数值

如您所见,当面对不平衡的数据集时,准确性是一个非常糟糕的指标。 MCC会考虑类的大小并对此进行更正。无论数据集的构成如何,对于相同的模型性能,它都能提供相同的结果。

  • TP =真实阳性数
  • TN =真实负数
  • FP =误报数量
  • TN =假阴性数

MCC = (TP * TN - FP * FN) / sqrt((TP + FP)*(TP + FN)*(TN + FP)*(TN + FN))

  • MCC = 1->完美预测
  • MCC = 0->没有关联
  • MCC = -1->绝对矛盾

仅凭经验(在我的领域中,因此需要大量盐):
与我合作的公司的合理模型通常始于MCC >= 0.75