分类模型的评价指标:Precision,Recall 和 Accuracy

栏目: R语言 · 发布时间: 6年前

内容简介:分类模型的性能(Performance)

分类模型的评价指标:Precision,Recall 和 Accuracy

分类模型的评价指标:Precision,Recall 和 Accuracy

分类模型的性能(Performance)

分类问题是当前机器学习、深度学习领域最为常见的问题,各式各样的模型种类繁多。

如何评价这些模型的优劣呢?自然要做测试:

  • 首先,准备好一些已知其真实分类的样本;

  • 然后,用分类模型对它们进行分类;

  • 最后,将分类模型预测(predict)或者推断(inference)的结果与实际情况相比较,以预测/推断结果与真实的符合程度为依据来评价分类模型的性能(performance)。

既然要判断程度,就必然会用到能够描述“多少”的数值型指标。今天我们就要介绍几种分类模型最常用的评价指标。

二分类模型的指标

我们先从最基础的二分类模型说起。

所有的二分类模型做预测/推断的结果都只能两个:阳性(Positive,即正例)和阴性(Negative,即负例)。

二分类模型最常用的指标是: 精准率(Precision) 召回率(Recall)。

对于一个测试样本,它本身有一个真实分类(阳性或者阴性)。将其输入给二分类模型后,模型会给它打一个标签——要么阳性,要么阴性。

样本的真实分类和预测分类可能一致也可能不一致,总之会形成一个两两正交的情况,如下:

预测结果为阳性 (Positive) 预测结果为阴性 (Negative)
预测结果是真实的 (True) TP :实际为Positive,也被预测为Positive的样本数

TN 实际为Negative,也被预测为Negative的样本数

预测结果是虚假的 (False) FP :实际为Negative 但被预测为Positive的样本数 FN :实际为Positive,但被预测为Negative的样本数

精准率 :Precision=TP / (TP+FP),即在所有被预测为阳性的测试数据中,真正是阳性的比率。

召回率 :Recall=TP / (TP+FN),即在所有实际为阳性的测试数据中,真正是阳性的比率。

为了综合这两个指标并得出量化结果, 又发明了 F1Score

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

显然上面三个值都是越大越好,但往往在实际当中P和R是矛盾的,很难保证双高。

除了精准率和召回率,还有一个 准确率(Accuracy) ,可以用来评估分类模型。

准确率指分类模型预测正确的结果在整体中的占比例。

Accuracy = 预测正确的样本数 / 所有样本数


二分类模型的Accuracy = (TP+TN) / (TP+TN+FP+FN) = (TP+TN) / Count(Samples)

多分类模型的指标

多分类模型的预测结果有多种类型,而不只是正例(阳性)和负例(阴性)两种。

虽然如此,前面说的Precision,Recall和Accuracy同样适用于多分类问题。

假设一个分类模型能预测N个分类:{Class1, Class2, ..., ClassN}.

每一个特定的测试样本都有一个真实的分类,经过模型预测后,又会有一个预测分类。

假设样本x1的真实分类是Class1,它的预测结果有N种可能( {Class1, Class2, ..., ClassN}中的任何一个)。

但是不管预测结果如何,从预测与真实的符合程度来看,只有两种可能: 预测正确 (被预测为Class1),和 预测错误 (被预测为Class1之外的任何一类)。

当一个测试集全部被预测完之后, 会有一些实际是Class1 的样本被预测为其他类,也会有一些其实不是Class1 的样本,被预测成Class1 ,这样的话就导致了下面这个结果:

预测结果为Class1(Positive) 预测结果为非Class1(Negtive)
预测结果是真实的(True) Class1_TP :实际为Class1,也被预测为Class1的样本数

Class1_ TN 实际不是Class1,也被测试为其他类(非Class1)的样本数

预测结果是虚假的(False) Class1_ FP :实际不是Class1 但被预测为Class1的样本数 Class1_ FN :实际为Class1,但被预测为其他类 (非Class1) 的样本数


根据上表,我们就可以计算:

Class1的精准率:Class1_Precision = Class1_TP/( Class1_ TP+ Class1_ FP), 即在所有被预测为Class1的测试数据中,预测正确的比率。

Class1的召回率: Class1_ Recall = Class1_ TP/( Class1_ TP+ Class1_ FN),即在所有实际为Class1的测试数据中,预测正确的比率。

Class1的F1Score:  Class1_ F1Score =  2 * (Class1_Precision * Class1_ Recall) / ( Class1_ Precision + Class1_ Recall)

同理,Class1的准确率:Class1_Accuracy = (Class1_TP + Class1_TN) / count(Samples)

一个多分类模型指标计算的例子

下面我们用一个例子来说明一下多分类模型的几种指标的计算。具体数据如下表:

Actual_Class1

Actual_Class2

Actual_Class3

Total_Precdicted

Predicted_Class1

30

20

10

60

Predicted_Class2

50

60

10

120

Predicted_Class3

20

20

80

120

Total_Actual

100

100

100

可以看出,分类器一共可分出三个类:Class1,Class2和Class3;测试样本一共有300个;测试样本中三个类是平均分布的。 

然后,针对这三个类,我们用下面四种颜色分别标注出它们各自对应的TP,TN,FP和FN:

TP

TN

FP

FN

Class1

Actual_Class1

Actual_Class2

Actual_Class3

Predicted_Class1

30

20

10

Predicted_Class2

50

60

10

Predicted_Class3

20

20

80

Class1_TP = 30

Class1_TN = 60 + 10 + 20 + 80 = 170

Class1_FP = 20 + 10 = 30

Class1_FN = 50 + 30 = 70

Class1_Precision = 30 / 60 = 0.5

Class1_Recall = 30 / 100 = 0.3

Class1_Accurancy = (30 + 170) / 300 = 0.67

Class2

Actual_Class1

Actual_Class2

Actual_Class3

Predicted_Class1

30

20

10

Predicted_Class2

50

60

10

Predicted_Class3

20

20

80

Class2_TP = 60

Class2_TN = 30 + 10 + 20 + 80 = 140

Class2_FP = 50 + 10 = 60

Class2_FN = 20 + 20 = 40

Class2_Precision = 60 / 120 = 0.5

Class2_Recall = 60 / 100 = 0.6

Class2_Accurancy = (60 + 140 ) / 300 = 0.67

Class3

Actual_Class1

Actual_Class2

Actual_Class3

Predicted_Class1

30

20

10

Predicted_Class2

50

60

10

Predicted_Class3

20

20

80

Class3_TP = 80

Class3_TN = 30 + 20 + 50 + 60 = 160

Class3_FP = 20 + 20 = 40

Class3_FN = 10 + 10 = 20

Class3_Precision = 80 / 120 = 0.67

Class3_Recall = 80 / 100 = 0.8

Class3_Accurancy = (80 + 160) / 300 = 0.8

多分类模型的整体性能

当我们评估一个多分类模型的时候,一般不会用具体某一个类的Precision,Recall或者Accuracy去对其进行评价,而是会用一个数值来代表整体性能。

通常会用到的指标是整体准确率。我们可能会想,整体正确率就是对所有类的Accuracy求均值或者加权求均值。

但是实际上,有一个更直接更方面的方法:

Overall Accuracy = 各类被预测对了的样本数量的累加 / 样本总数 = sum (class_i_TP) / count(Samples) 

比如上面的例子里,Overall Accuracy = (30 + 60 + 80) / 300 = 0.57

指标和数据绑定

需要注意的是,所有的性能指标:Precision,Recall,Accuracy等,都和具体的 测试数据有关。

同样的模型,换一套测试数据后,很可能某一类,甚至所有类的P,R,A会有所变化。

有变化是一正常的,但如果这种变化超过了一定幅度,就要考虑是否存在bias或者overfitting的情况。

扫描下面二维码,搭上小编直通车

分类模型的评价指标:Precision,Recall 和 Accuracy

欢迎扫面下列二维码关注“悦思悦读”公众微信号

分类模型的评价指标:Precision,Recall 和 Accuracy


以上所述就是小编给大家介绍的《分类模型的评价指标:Precision,Recall 和 Accuracy》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Beginning ARKit for iPhone and iPad

Beginning ARKit for iPhone and iPad

Wallace Wang / Apress / 2018-11-5 / USD 39.99

Explore how to use ARKit to create iOS apps and learn the basics of augmented reality while diving into ARKit specific topics. This book reveals how augmented reality allows you to view the screen on ......一起来看看 《Beginning ARKit for iPhone and iPad》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具