计算 F-Score,哪个是“正”类,多数类还是少数类?

机器算法验证 机器学习 分类
2022-03-18 01:28:03

我正在计算沙盒数据集的F 分数:100 名医疗患者,其中 20 名患有癌症。我们的分类器错误地将 20 名健康患者归类为患有癌症,将 5 名患有癌症的患者错误归类为健康,其余的则正确。

我们计算真阳性真阴性误报假阴性

我们遇到了关于哪个类别先来的争论,那些测试癌症“阳性”的类别,或多数类别,例如那些“健康”的类别。

明确的问题:这个数据集中的正确真阳性率是多少?是吗:

  1. # 预测健康患者超过 # 实际健康患者
  2. # 预测癌症患者超过 # 实际癌症患者

如果您可以参考一些支持一种假设或另一种假设的文献,则可以加分。

请注意,我浏览了一些关于 f 分数的文本,但没有看到关于这一点的明确讨论:

https://en.wikipedia.org/wiki/F1_score http://rali.iro.umontreal.ca/rali/sites/default/files/publis/SokolovaLapalme-JIPM09.pdf

维基百科关于精确度和召回率的文本似乎暗示“真阳性”由正在执行的任何“测试”定义,因此在这种情况下定义为少数类,因为“测试”是针对癌症的。但是,我发现讨论不够严谨,无法说服我。如果我简单地用“健康”患者的测试来描述测试,我会更改 f 分数,但这只是语义上的更改。我希望 f 分数有一个数学上严格的定义。

https://en.wikipedia.org/wiki/Precision_and_recall

3个回答

我认为您已经发现 F 分数并不是评估分类方案的好方法。从您链接的 Wikipedia 页面中,可以简化 F 分数的公式:

F1=2TP2TP+FP+FN

在哪里TP,FP,FN分别是真阳性、假阳性和假阴性的数量。

您会注意到,公式中根本没有考虑真阴性病例的数量(相当于病例总数)。因此,无论您的分类结果中真阴性的数量非常高还是非常低,您都可以拥有相同的 F 分数。如果您采用案例 1,“预测的健康患者数量超过实际健康患者的数量”,“真阴性”是那些被正确归类为患有癌症但成功识别癌症患者并没有进入 F -分数。如果您采用案例 2,“预测癌症患者的数量超过实际癌症患者的数量”,那么正确分类为没有癌症的患者数量将被忽略。在这种情况下,两者似乎都不是一个好的选择。

如果您查看我最喜欢的关于分类和回归的易于访问的参考资料、统计学习简介、统计学习要素Frank Harrell 的回归建模策略和相关课程笔记,您将找不到太多关于 F- 的讨论。分数。您经常会发现注意不要仅仅基于评估分类程序TP,FP,FN,TN价值观。您最好使用逻辑回归等方法专注于准确评估可能的疾病状态,在这种情况下,它将患癌症的概率与您包含在分类方案中的预测变量的值相关联。然后,正如 Harrell 在Regression Modeling Strategies第 2 版第 258 页所说:

如果您根据概率模型制定分类规则,那么您就是冒昧的。假设开发了一个模型来帮助医生诊断疾病。医生有时会声称需要一个二元决策模型,但如果给定一个概率,他们将正确地应用不同的阈值来治疗不同的患者或订购其他诊断测试。

因此,在患有癌症的情况下,成为某个类别成员的概率的良好模型比任何特定的分类方案更有用。

精确度是您预测为阳性的总数中实际患有癌症的比例,

precision = ( number of true positives ) / (number of positives predicted by your classifier)

召回率(或真阳性率)是准确识别分类器预测的所有分数的百分比

true positive rate = true positives / ( True positive + False negative)

谈到 F 分数,它是衡量精度和召回率之间权衡的指标。让我们假设您将预测正数的阈值设置为非常高。 假设如果预测为正,如果h(x) >= 0.8为负if h(x) < 0.8,则精度很高,但召回率很低。您的精度为(15)/(15+20) = 42.8% (15 是真阳性的数量 20 总癌变,减去 5 是错误预测的)

如果你想有高召回率[或真阳性率],这意味着你想避免漏掉阳性病例,这样你就更容易预测阳性。预测正面,h(x) >= 0.3否则预测负面。基本上,召回率高意味着您避免了很多误报这里你的真实阳性率是( 15 / (15+5) )= 75%

对癌症分类器具有高召回率可能是一件好事,你完全需要在这里避免假阴性。但这当然是以精度为代价的。

F 分数衡量精确预测与避免假阴性之间的这种权衡。它的定义可以是任意的,具体取决于您的分类器,假设它被定义为精度和真阳性率之间的平均值。

这不是一个很好的 F-score 度量,因为您可能有巨大的召回值和非常低的精度(例如,预测所有情况为正),您最终仍会得到一个 F-score,这与您的准确率和召回率相同平衡良好。

将 F 分数定义为:

              2 * (Precision * Recall) / (Precision + Recall) 

为什么?如果你的准确率或召回率非常低,或者两者兼而有之,你的 F 分数就会下降;你就会知道出了点问题。

对于分类器预测所有负数的情况,我建议您计算 F 分数、精度和召回率,然后使用实际算法。如果它是一个倾斜的集合,您可能需要更多的训练数据。

另请注意,在交叉验证集上测量 F 分数是一个好主意。它也被称为 F1 分数。

http://arxiv.org/ftp/arxiv/papers/1503/1503.06410.pdf

https://www.google.co.in/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=a+probabilistic+theory+of+precision+recall+and+f+score

除了前面的答案,请注意F 1分数也可以解决为:

F1score=21P+1R

其中P = 精度,R = 召回率 = 真阳性率 (TPR)。

这提供了在求解F 1分数时每次引用PR的优势。