AUC、ROC、Recall、Precision和F1 Score

简介: 以前看这东西经常迷惑,以为评估模型好坏的标准就是看预测对了多少,即:正确率(accuracy) = 预测对的 / 总数。但是,不能总是用这种简单的指标来评测模型的好坏。

以前看这东西经常迷惑,以为评估模型好坏的标准就是看预测对了多少,即:
正确率(accuracy) = 预测对的 / 总数。但是,不能总是用这种简单的指标来评测模型的好坏。写在最前面的一点,auc,roc,recall和precision都基于混淆矩阵,他们之间是有联系的。混淆矩阵如下:

img_aa2e96ee3139d5a289afb7932a45965f.png

我们将算法预测的结果分为下面四种情况:
1)正确肯定(True Positive,TP):预测为真,实际为真
2)正确否定(True Negative,TN):预测为假,实际为假
3)错误肯定(False Positive,FP):预测为真,实际为假
4)错误否定(False Negative,FN):预测为假,实际为真

1、Recall、Precision和F1 Score

Precision(查准率) = TP / (TP + FP)。例如,在我们所有预测有恶性肿瘤的病人中,实际上有恶性肿瘤的病人的百分比,越高越好。
Recall(召回率,吴恩达叫查全率) = TP / (TP + FN)。例如,在所有实际上有恶性肿瘤的病人中,成功预测有恶性肿瘤的病人的百分比,越高越好。
如果我们希望提高查准率,即我们希望只在非常确信的情况下预测为真(肿瘤为恶性),我们可以使用比0.5更大的阈值,如0.7,0.9.这样做我们会减少错误预测病人为恶性肿瘤的情况,同时却会增加未能成功预测肿瘤为恶性的情况。
如果我们希望提高召回率,尽可能的让有可能是恶性肿瘤的病人都得到进一步检查、诊断,我们可以使用比0.5更小的阈值,如0.3。根据不同的阈值,我们将查全率和召回率的关系绘制成图表,曲线的形状根据数据的不同而不同:


img_8d5fb111e5cd96dddc8e4e4be87df111.png

可以看出Precision和Recall是互相制约的关系。
我们希望有一个能帮助我们找到这个阈值的方法,一种方法是计算F1值(F1 Score),公式为:
F_1Score = 2 \frac{PR}{P + R}
选择F1值最大的阈值。

2、AUC和ROC

2.1、简介

AUC全称是Area Under roc Curve,是roc曲线下的面积。ROC全名是Receiver Operating Characteristic,是一个在二维平面上的曲线---ROC curve。横坐标是false positive rate(FPR),纵坐标是true positive rate(TRP)。对一个分类算法,我们可以根据其在测试样本上的表现得到一个TPR和FPR点对。这样,此分类器就可以映射成ROC平面上的一个点。调整这个分类器分类时候使用的阈值,我们可以得到一个经过(0,0), (1,1)的曲线,这就是分类器的ROC曲线。一般来说,曲线应该在(0,0), (1,1)连线(对角线)的上方。因为(0,0), (1,1)连线所形成的ROC曲线代表一个随机分类器。如果你的分类器在直线底下,说明你的分类器辣鸡。虽然,ROC curve来表示分类器很直观,但是,我们可以用一个数值来表示分类器的好坏,即AUC,它是ROC曲线下面的面积。通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的performance。

2.2、ROC和AUC

ROC由TPR和FPR组成,其中TPR = TP / (TP + FN) = Recall(TRP是召回率),FPR = FP / (FP + TN)。我们以FPR为x轴,TPR为y轴画图,就得到了ROC曲线。


img_41e7c2df392f095aaedd9b9926e73759.png

在ROC曲线中,可以曲线距离左上角越近,分类效果越好。然后用一个值表示,就有了AUC,好像没啥好说的。。。

目录
相关文章
|
4月前
|
TensorFlow 算法框架/工具
这个问题可能是由于在计算AUC和GAUC时出现了一些问题。
这个问题可能是由于在计算AUC和GAUC时出现了一些问题。
25 1
|
4月前
|
机器学习/深度学习 监控 数据可视化
训练损失图(Training Loss Plot)
训练损失图(Training Loss Plot)是一种在机器学习和深度学习过程中用来监控模型训练进度的可视化工具。损失函数是衡量模型预测结果与实际结果之间差距的指标,训练损失图展示了模型在训练过程中,损失值随着训练迭代次数的变化情况。通过观察损失值的变化,我们可以评估模型的拟合效果,调整超参数,以及确定合适的训练停止条件。
238 5
|
4月前
|
TensorFlow 算法框架/工具
由于在计算AUC和GAUC时出现了一些问题
由于在计算AUC和GAUC时出现了一些问题
37 1
|
8月前
|
机器学习/深度学习 算法 搜索推荐
精确率(Precision)和召回率(Recall)
精确率(Precision)和召回率(Recall)是用于评估分类模型性能的指标。它们通常用于二分类问题,例如判断一个样本是正例(Positive)还是负例(Negative)。
1884 0
|
4月前
|
TensorFlow 算法框架/工具
这个问题可能是由于在计算AUC和GAUC时出现了一些问题
这个问题可能是由于在计算AUC和GAUC时出现了一些问题
34 2
sklearn.metric.accuracy_score评价指标介绍和使用
sklearn.metric.accuracy_score评价指标介绍和使用
193 0
|
分布式计算 搜索推荐 数据库
准确率(Accuracy) 精确率(Precision) 召回率(Recall)和F1-Measure(精确率和召回率的调和平均值)
准确率(Accuracy) 精确率(Precision) 召回率(Recall)和F1-Measure(精确率和召回率的调和平均值) Spark 构建分类模型
1370 0
准确率(Accuracy) 精确率(Precision) 召回率(Recall)和F1-Measure(精确率和召回率的调和平均值)
|
9月前
|
机器学习/深度学习 开发者 Python
Normalized RMSE
Normalized RMSE(Root Mean Square Error)是一种常用的用于评估预测模型的指标,它是在 RMSE 的基础上进行了归一化处理,使得不同数据集之间的 RMSE 可以进行比较。
496 2
|
10月前
一张图深入的理解FP/FN/Precision/Recall
一张图深入的理解FP/FN/Precision/Recall
67 0
criterion = torch.nn.MSELoss() ;loss = criterion(y_pred.squeeze(), Y_train.squeeze()) 其中loss.item()的结果是指当前批次所有样本的mse总和还是平均值?
loss.item()的结果是当前批次所有样本的均方误差(MSE)值,而不是总和。这是因为torch.nn.MSELoss()默认返回的是每个样本的MSE值之和,并且在计算总体损失时通常会将其除以样本数量来得到平均损失。 在代码中,loss = criterion(y_pred.squeeze(), Y_train.squeeze())语句计算了y_pred和Y_train之间的MSE损失,然后通过调用item()方法获取了该批次训练样本的平均MSE损失。如果希望获取该批次训练样本的总MSE损失,可以使用loss.item() * batch_size来计算,其中batch_size是该批次
278 0