机器学习评价指标总结(二分类篇)

疾病预测

我们以疾病预测为例子来介绍分类的指标。疾病预测是一个二分类预测任务,我们需要预测患者是否患有疾病。

如下图,假设一共有100个样本,其中90个是正常未患病的人,10个是患病的人,现在模型预测出12个患病的人,88个未患病的人。

预测患病的人中,8人真正患病(真阳性),4人并未患病(假阳性)。预测未患病的人中,86人未患病(真阴性),4人患病(假阴性)。

我们根据预测的结果和真实值可以计算出常见的评估指标,以下将结合该例子进行具体介绍。

混淆矩阵

混淆矩阵(Confusion Matrix)是用于评估二分类问题的指标,它展示了模型的预测结果与真实标签之间的对应关系。

混淆矩阵将预测结果分为四个不同的类别:真阳性(True Positive, TP)、假阴性(False Negative, FN)、假阳性(False Positive, FP)和真阴性(True Negative, TN)。

它的具体构成如下:

预测为正例 预测为负例
真实为正例 True Positive (TP) False Negative (FN)
真实为负例 False Positive (FP) True Negative (TN)

在上面的例子中,混淆矩阵即为:

预测为正例 预测为负例
真实为正例 8 2
真实为负例 4 86

基于这个混淆矩阵,我们可以计算出一些二分类指标来评估模型的性能。常见的指标包括准确率(Accuracy)、精确率(Precision)、召回率(Recall)和F1分数(F1 Score)等。

基础指标

准确率(Accuracy)

准确率表示模型正确预测的样本数占总样本数的比例,计算公式为:

Accuracy=TP+TNTP+TN+FP+FN

按照上述例子的情况,准确率的计算为:

精确率(Precision)

精确率衡量的是模型在预测为正样本的样本中有多少是真正的正样本,也就是预测为正例的样本中,真正为正例所占的比例,计算公式为:

Precision=TPTP+FP

按照上述例子的情况,精确率的计算为:

召回率(Recall)

召回率衡量的是在所有实际为正样本中,有多少被正确地预测为正样本,计算公式如下:

Recall=TPTP+FN

按照上述例子的情况,召回率的计算为:

精确率和召回率的关系

精确率和召回率是互相影响的。在某些情况下,提高精确率可能会导致召回率降低,反之亦然。

精确率的目标是尽可能地减少将负样本错误的预测为正样本的情况,即减少假阳性的数量。在疾病预测的例子中,精确率表示模型能够将样本正确预测为患病的能力。

而召回率的目标是尽可能地识别出所有的真正的正样本,也就是减少假阴性的数量。在疾病预测的例子中,召回率表示模型能够正确识别出患病样本的能力,避免将患病的人错误地预测为健康。

这两个指标提供了对模型性能的不同视角,因此我们需要一些指标来综合衡量模型的性能。

综合指标

除了精确率和召回率,还有一些综合指标可以用于评估分类模型的性能,包括 F1 分数、ROC 曲线和 AUC。

F1 分数(F1 Score)

F1 分数综合考虑了精确率和召回率,是精确率和召回率的调和平均值,计算公式如下:

F1score=2×(Precision×Recall)Precision+Recall

F1 分数的取值范围为 0 到 1,其中分数较高的情况表示模型能够同时取得较高的精确率和召回率,即模型能够在保持准确性的同时捕捉到更多的真实正例。

P-R曲线

在二分类问题中,我们使用一个阈值来决定将样本预测为正例还是负例,当模型输出的概率值或得分值超过该阈值时,我们将样本预测为正例;否则,将样本预测为负例。

不同的阈值会导致分类结果的变化,当阈值较低时,模型更容易将样本判定为正例,这可能会提高召回率,但精确率可能会降低。相反,当阈值较高时,模型更谨慎地将样本判定为正例,这可能会提高精确率,但召回率可能会降低。

因此,我们需要找到一个平衡点,而P-R曲线(Precision-Recall Curve)就是用来展示精确率和召回率在不同阈值下的变化关系的。

在P-R曲线上,横轴表示召回率,纵轴表示精确率。通过计算F1分数,我们能够找到一个合适的阈值来平衡二者。

平均精确率均值(Average Precision)

平均精确率均值(Average Precision, AP)是 P-R 曲线下的面积。AP 衡量了模型在不同召回率水平下的平均精确率,越高的 AP 值表示模型性能越好。

ROC曲线

ROC曲线(Receiver Operating Characteristic Curve),ROC曲线是以不同阈值下的假阳性率(False Positive Rate)和真阳性率(True Positive Rate)为横纵轴绘制的曲线。

其中FPR和TPR的定义如下:

FPR=FPFP+TN

TPR=recall=TPTP+FN

按照上述的例子,假阳率的计算为:

真阳率的计算为:

在计算了TPR和FPR之后,我们就能得到一个ROC曲线上的一个坐标点,即(0.044, 0.8)。要绘制完整的 ROC 曲线,需要在不同的阈值下计算多个TPR和FPR值,并将它们连接起来形成一条曲线,即完整的ROC曲线。

对于ROC曲线来说,x轴的值越小,则负样本中被误报的比例越小,真阴性越多。y的值越大,则真阳性的比例更大,假阴性越少,漏报较低。

ROC曲线更接近左上角,说明模型能够有效地区分正例和负例。通过观察 ROC 曲线的形状和接近左上角的程度,我们可以了解模型在不同阈值下的性能优劣。

绘制ROC曲线后,可以通过平衡误报和漏报的情况来选择合适的阈值。

AUC(ROC曲线下面积)

对于不同的模型,我们可以绘制出两条ROC曲线,那么如何通过ROC曲线来比较模型的性能呢?

除了ROC曲线的形状,可以计算每个模型的 ROC 曲线下的面积(AUC)来比较不同的模型,较高的 AUC 值表示模型具有更好的分类能力和区分能力。

对比P-R/AP 和 ROC/AUC

目标:P-R 曲线关注的是精确率和召回率之间的权衡,重点在于正例的预测准确性和发现率。而 ROC 曲线关注的是真阳性率和假阳性率之间的权衡,重点在于模型在不同阈值下对正例和负例的分类能力。

敏感性:P-R 曲线更加敏感于正例样本的变化,尤其在正例样本较少的情况下,P-R 曲线可以更好地评估模型的性能。而 ROC 曲线更适用于每个类的观测数值大致相同的情况。

posted @   阿莱慢慢来  阅读(573)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示