【问题标题】:ML model validation on skewed data对倾斜数据进行 ML 模型验证
【发布时间】:2019-05-24 21:45:05
【问题描述】:

比如说,我正在构建一个机器学习模型来预测患者是否患有流感。我知道,平均而言,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)

但是这个估计器没有真实世界的解释。

这是一种正确的思考方式吗?您将如何根据这种倾斜的数据计算模型的准确率?谢谢!

【问题讨论】:

  • 您刚刚偶然发现了一个名为“类不平衡”的巨大子主题,其中准确性确实毫无意义;开始无情地谷歌搜索......

标签: machine-learning


【解决方案1】:

如果您想要一个平衡模型,长答案是“视情况而定”,短期您可以研究的答案是称为 马修斯相关系数 (MCC) / Phi 值

如您所见,当面对不平衡的数据集时,准确度 是一个非常糟糕的指标。 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

开始

【讨论】:

    【解决方案2】:

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

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

    精度 =(真阳性)/(真阳性 + 假阴性)

    • 阳性:患者有流感

    • 阴性:患者没有流感

    • 正确:正确识别

    • 错误:识别错误

    【讨论】:

      猜你喜欢
      • 2015-09-24
      • 1970-01-01
      • 2021-04-23
      • 1970-01-01
      • 2020-06-05
      • 2017-05-03
      • 2019-04-01
      • 2021-07-25
      • 1970-01-01
      相关资源
      最近更新 更多