[30]Confusion Matrix 用来衡量Classifier Model的方式 Precision和Recall

在上一篇([29]维护Custon Vision Model – 使用历史查找记录做训练以及如何版控)看完了如何用历史的搜索结果来持续training Model(模型)并且透过iteration做到Model的测试训练以及版控,不过上一篇也遗留了一个问题,怎么看目前的Model是好还是坏?

这里面就牵扯到了一些数学概念,因此在这一篇将介绍怎么评判一个Classifier Model是好还是坏,透过Confusion Matrix以及Precision和Recall来了解一个Classifier Model的情况。

背景介绍
到目前为止所使用的Custom Vision服务其实在创建的是所谓的Classifier Model,也就是所谓的分类型的模型。

Classifier Model主要作用是判断某个传入的数据是不是属于某个分类。白话一点来说,假设我有个判断照片是不是狗的模型,那么只会有可能是是和不是。

当然上面给的例子是一种分类而已,但是模型可能有好多种类来判别。为了让接下来不那么复杂,将会只有一类的来介绍。

有了这个背景介绍了之后,来看看怎么看一个Model的准确率。

怎么计算Model准确度?Confusion Matrix介绍
当只有一类的额情况下,用Model判断一张图片只有可能是四种结果:

True Positive (TP)
Model判断图片属于狗,并且实际上这张图片是狗。
True Negative (TN)
Model 判断图片不属于狗,并且实际上这张图片不是狗。
False Positive (FP)
Model 判断图片属于狗,但是实际上这张图片不是狗。
False Negative (FN)
Model判断图片不属于狗,但是实际上这张图片是狗。
这四种结果可以画成一张表,也就是所谓的Confusion Matrix:

Model判断是狗 Model判断不是狗
实际是狗 TP FN
实际不是狗 FP TN
如果把数字填上去就会变成:

Model判断是狗 Model判断不是狗
实际是狗 5 2
实际不是狗 1 6
计算准确度
既然把表创建出来了之后,接下来就看看从数学角度怎么计算,这边介绍3种:

Accuracy
Recall
Precision
Accuracy
Accuracy是日常生活最长用的一种算法,也就是把对的加总和总数相除得到结果,公式来说就是:

Accuracy = (TP+TN)/(TP+FP+TN+FN)

以我们的例子就是:(5 + 6) / (5 + 1 + 6 + 2) = 11 / 14 = 0.79。

Accuracy貌似是很好的一个计算方式,但是实际上没有任何意义。

想象一下,假设今天这个Model要用作于判断病患有没有糖尿病,如果说实际上的人有糖尿病的比例是 0.03 (随便说的数字哦),那么就算我的Model对于任何病例进来都判断说没有糖尿病,那么最后的Accuracy也会有 0.97

因此,这个数字在Classifier Model来说一点意义也没有,因此才有了另外两个数字。

Recall
Recall的的含义是,和狗相关的图片能够找出多少张。

公式是:TP / (TP + FN)

以我们的例子就是:5 / (5 + 2) = 5 / 7 = 0.71

Precision
Precision的含义是:所有认为是狗的,多少真的是狗

公式是:TP / (TP + FP)

以我们例子就是:5 / 5 + 1 = 5 / 6 = 0.83

以我们上面的例子来说,这个Model的Precision比Recall高,换句话说当这个Model认为是狗的时候,是狗的几率很大。

更加的白话介绍Precision和Recall
上面的介绍可能还是有点抽象,下面是用图片的方式介绍Precision和Recall(来源Wikipedia)

Precisionrecall.svg.png
用图片介绍Precision和Recall,原始位置:https://en.wikipedia.org/wiki/Precision_and_recall
如果图片还是不太明白,换一个生活例子。

假设你有个10年的女朋友(谜之声:单身狗遭到暴击),这10年期间他以不同的名义组织活动送你礼物。一切很美好直到有天他想要测试你有多爱她,因此问了你一个问题:

我总共送过你多少次礼物?然后都送了一些什么?

这个时候你为了更好答题(关系到你的幸福生活),说可不可以给一些提示。女朋友说我接下来列出一些礼物,你先告诉我那些事我曾经送过的。

这个时候你大脑的Classifier Model就开始运作啦:

Recall – 你总共记得多少次有收到礼物
Precision – 有多少次收到的礼物猜对了
怎么选择Precision还是Recall
最好的情况当然是两个都是100%最好,但是取决于今天这个Model要用来预测什么,侧重会不同。

假设今天要预测是某个病患有没有癌症,这个时候Recall比Precision重要。因为,误判一个人没有癌症但是其实有的后果严重太多,因此这个时候追求的可能就是Recall。

因此,Model要搭配应用来做Training。

结语
这篇介绍了Confusion Matrix并且介绍了Classifier Model常用的两个指针:Precision和Recall。

实际上Classifier Model还有别的指针,不过因为Custom Vision只有显示这两个,因此目前只介绍了这两个,在未来,有介绍到自己写程序Training Classifier Model的时候在介绍其他的指针。

到目前为止,对于整个Cognitive Service应该有个疑问,没办法离线使用吗?

Custom Vision可以,下一篇([31]Custom Vision Train好的Model导出脱机和给app使用)将介绍怎么把Custom Vision的Model导出并且被本地使用。

Add a Comment

电子邮件地址不会被公开。 必填项已用*标注