算法模型评估之混淆矩阵,accuracy,查准率,查全率,AUC(ROC)等小总结

学习机器模型,少不了借助一些策略来评估模型的好坏,而准确率、精确率(查准率)、召回率(查全率)、F1值、ROC曲线的AUC值,都可以作为评价一个机器学习模型好坏的指标(evaluation metrics),而这些评价指标直接或间接都与混淆矩阵有关,前四者可以从混淆矩阵中直接计算得到,AUC值则要通过ROC曲线进行计算,而ROC曲线的横纵坐标又和混淆矩阵联系密切,所以在了解这些评价指标之前,先知道什么是混淆矩阵很有必要,所以在这里集体整理一下。
上面这些评估指标sklearn中的metrics包均有实现,如果想使用,直接掉包即可。

from sklearn.metrics import confusion_matrix
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.metrics import f1_score

关于更加详细的模型选择问题,可以参考我下面的笔记:
选择模型详解: 从算法评估-算法审查-算法比较

下面回归正传:

1. 混淆矩阵

主要用于比较分类结果和实际测得值, 可以把分类结果的精度显示在一个混淆矩阵里面
在这里插入图片描述

上表所示的混淆矩阵中,行表示数据在模型上的预测类别(predicted class/predicted condition),列表示数据的真实类别(actual class/true condition)。在看混淆矩阵时,要分清样本的真实类别和预测类别,有些地方的行列表示可能和这里不一致。

通过混淆矩阵,我们可以很直观地看清一个模型在各个类别(positive和negative)上分类的情况。
在这里插入图片描述

TP、FP、TN、FN,第二个字母表示样本被预测的类别,第一个字母表示样本的预测类别与真实类别是否一致。

下面看下面这个图片的例子理解一下吧:
在这里插入图片描述

2. 准确率

准确率(accuracy)计算公式如下所示:
在这里插入图片描述
    准确率表示预测正确的样本(TP和TN)在所有样本(all data)中占的比例。

在数据集不平衡时,准确率将不能很好地表示模型的性能。可能会存在准确率很高,而少数类样本全分错的情况,此时应选择其它模型评价指标。

3. 精确率(查准率)和召回率(查全率)

positive class的精确率(precision)计算公式如下:
在这里插入图片描述
positive class的召回率(recall)计算公式如下:
在这里插入图片描述
positive class的精确率表示在预测为positive的样本中真实类别为positive的样本所占比例;positive class的召回率表示在真实为positive的样本中模型成功预测出的样本所占比例。

positive class的召回率只和真实为positive的样本相关,与真实为negative的样本无关;而精确率则受到两类样本的影响。

4. F1值和Fβ值

F1 值的计算公式如下:
在这里插入图片描述

F1 值就是精确率和召回率的调和平均值,F1值认为精确率和召回率一样重要。

Fβ 值的计算公式如下:
在这里插入图片描述

在β=1时,Fβ就是F1值,此时Fβ认为精确率和召回率一样重要;当β>1时,Fβ认为召回率更重要;当0<β<1时,Fβ认为精确率更重要。除了F1值之外,常用的还有F2和F0.5。

5. ROC曲线及其AUC值

AUC全称为Area Under Curve,表示一条曲线下面的面积,ROC曲线的AUC值可以用来对模型进行评价。ROC曲线如图 1 所示:
在这里插入图片描述
ROC曲线的纵坐标True Positive Rate(TPR)在数值上就等于positive class的recall,记作recallpositive,横坐标False Positive Rate(FPR)在数值上等于(1 - negative class的recall),记作(1 - recallnegative)如下所示:
在这里插入图片描述

通过对分类阈值θ(默认0.5)从大到小或者从小到大依次取值,我们可以得到很多组TPR和FPR的值,将其在图像中依次画出就可以得到一条ROC曲线,阈值θ取值范围为[0,1]。

ROC曲线在图像上越接近左上角(0,1)模型越好,即ROC曲线下面与横轴和直线FPR = 1围成的面积(AUC值)越大越好。直观上理解,纵坐标TPR就是recallpositive值,横坐标FPR就是(1 - recallnegative),前者越大越好,后者整体越小越好,在图像上表示就是曲线越接近左上角(0,1)坐标越好。

上图展示了3个模型的ROC曲线,要知道哪个模型更好,则需要计算每条曲线的AUC值,一般认为AUC值越大越好。AUC值由定义通过计算ROC曲线、横轴和直线FPR = 1三者围成的面积即可得到。

小总

这次记录了模型评估的一些指标的理解,之前虽然在学习机器学习Python实战这本书中,也看到了这些评估的技巧,包括西瓜书的第二章,也在讲述这些技巧,但是一直没有去下功夫理解,或者是理解完了就忘了,这次再次学习决策树的时候, 偶然之间又用到了这个metrics,所以又参考了一篇博客整理了一下,现在搞清楚了。

参考:
[1] https://www.cnblogs.com/wuliytTaotao/p/9285227.html(博客)
[2] 西瓜书 第二章(书籍)
[3] 机器学习Python实战(书籍)

发布了66 篇原创文章 · 获赞 67 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/wuzhongqiang/article/details/103526851