C/C++教程

精度、召回率、准确率、F1、ROC、AUC的理解

本文主要是介绍精度、召回率、准确率、F1、ROC、AUC的理解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

精度(accuracy) 分类正确的样本数占总样本数的比例

错误率(error rate) 分类错误的样本数占总样本数的比例

通常来说精度(accuracy)不是一个好的性能指标,尤其是处理数据有偏差时候比如一类非常多,一类很少。

比如手写数字识别问题,只判断一副图片是不是5,由于5的图片只占百分之10左右,所以分类器总是预测图片不是5都会有90%左右的可能性是对的

混淆矩阵、准确率、召回率、F1

混淆矩阵

准确率(accuracy)

准确率 = (TP + TN) / 记录总数

uploading.4e448015.gif正在上传…重新上传取消uploading.4e448015.gif正在上传…重新上传取消

表示正确预测的样本占总样本的比例,准确率并不总是首选的指标,因为目标类别是不均衡的。大多数时候,TN样本远多于TP样本。举个例子,欺诈检测的数据集会包含99%的真实交易和1%的欺诈交易,如果模型预测所有的交易均为真实交易,那么准确率仍有99%。

关键是要找出关于正类别的性能,因此介绍如下几个指标。

举例:医生问诊,(真病人 + 真健康)/ 所有人

精度(precision)

 

表示正确预测出的正样本占所有预测为正样本的比例。

举例:真病人 / (真病人 + 假病人)

召回率

召回率 = TP / (TP + FN)

又称查全率,表示正确预测出的正样本占总正样本的比例,反映了模型预测正类别的性能。

举例:真病人 / (真病人 + 假健康)

精度和召回率不可兼得,增加精度会降低召回率,增加召回率会降低精度,因为保证精度,那么将会对预测结果严格筛选,这将导致部分正例被筛选淘汰,导致召回率降低。保证召回率,那么就会降低筛选的门槛,尽可能多的将正例筛选出来,那么就会有一些反例被筛选进去,导致精度下降。

也可以通过直接画出召回率对精度的曲线来进行观察,在其急剧下降之前根据需求选择合适点。

F1分数

F1分数是召回率和准确率的结合,使两者的调和平均,所谓调和平均就是会给小的值更大的权重,而不是同等地位看待,所以若要F1值高,那么需要两者都高。

 

 

 

 

 

 

 

 

 

 

 

这篇关于精度、召回率、准确率、F1、ROC、AUC的理解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!