机器学习模型指标的介绍

持续更新中...

Posted by Echo on June 4, 2018

如何评估一个模型的好坏?根据不同的需求会有不同指标,以下便对于机器学习过程中的模型指标进行简单整理,方便检索与学习。

准确率

准确率(Accuracy,一般简写为acc)最容易理解,因为它在我们日常生活中经常会被提到,比如在做判断题的时候,共有10道题目,若你做对了7道,毫无疑问,你的准确率就是70%,此时也会有人说错误率(Error,一般简写为err)为30%。

这两种表达都对,但在评估你的模型时如何表达却是一件值得斟酌的事情。 比如为了给一个听觉上的冲击,我可以说我的模型把分类错误率降低了50%,但也许你的模型所作的贡献仅仅是把acc从80%提升到了90%。因为我们知道acc = 1 - err

查准率和查全率

在学习查准率(Precision,一般简写为P)和查全率(Recall,一般简写为R)之前,需要先了解几个定义。

什么是TP、TN、FP以及FN?

在二分类问题中,我们常把模型预测的结果分为4类:

  Real = 1 Real = 0
Predict = 1 TP FP
Predict = 0 FN TN

其中Real代表真值,Predict代表预测值。因而样本总个数便是 TP + TN + FP + FN

在次基础上,查准率定义为P = TP / (TP + FP),查全率定义为 R = TP / (TP + FN)。那么既然有了err,为什么需要P和R呢?因为单纯的err是不足的!

考虑类偏斜(Skewed Classes)情况,我们在实际问题中经常会遇到这样的情况,比如我们想要训练模型来预测肿瘤是否为恶性,但是训练集中只有1%的恶性肿瘤,通过训练神经网络模型,得到的err为3%,一个看似不错的结果,然而如果我们使用一个简单的语句,不论任何输入都预测肿瘤为良性的,那么err仅为1%,显然如果选择err作为模型评估标准是很不理智的。

在上述err为1%的情况下,由于TP + FP = 0,因而暂不考虑P,但R仅为0,因而我们在评估一个模型的时候需要同时考虑P和R,而不仅仅是err。

F1值

前面提到了同时考虑P和R,但这是两个独立的值,因而在比较不同的模型时不可避免地会出现模型A的P高R低,但模型B的P低R高,此时哪个模型更优呢?F1值可以告诉你!F1值定义为:F1 = 2 * (P * R) / (P + R)

但F1值不一定就是好的评判标准。比如在二分类问题中,我们的模型是用于预测肿瘤良恶性的,这时模型的查全率就比较重要,因为我们的目的是宁可错判一百不能放过一个,若是真的放过了一个恶性肿瘤,那一条鲜活的生命就有可能流失。可以看到,根据模型应用场景的不同,我们选择的评估标准也会存在差异。

那么如何针对同一个模型根据自己的需求改变P和R呢?在二分类时,一般会设置阈值为0.5,但这是并不是一个准则,我们可以根据需求来修改。

增加阈值,预测的结果就会更准确,此时P会增加,但R会降低。
减小阈值,模型放过的真例就会变少,R会增加,P会降低。

MAP

MAP(Mean Average Precious)一开始是在推荐系统或者搜索引擎中提出的,是一个综合P和R的评估标准。

如何综合呢?P只考虑搜索一个主题的返回结果中相关文档的个数,没有考虑文档之间的排序,但对于一个搜索引擎或者推荐系统而言每次主题搜索返回的结果必然有序,且越相关越靠前,AP的概念就此产生,对于一个有序的list,计算AP时首先计算出每个位置的P,然后对于所有位置的P求平均,特别的,若该位置的文档是不相关的,那么P=0。而MAP便是一个集合中每个主题的AP的平均值。

举个栗子,假设有两个主题,主题1有4个相关网页,主题2有5个相关网页。某系统对于主题1检索出4个相关网页,其rank分别为1, 2, 4, 7;对于主题2检索出3个相关网页,其rank分别为1,3,5。对于主题1,平均准确率为(1/1+2/2+3/4+4/7)/4=0.83。对于主题 2,平均准确率为(1/1+2/3+3/5+0+0)/5=0.45。则MAP=(0.83+0.45)/2=0.64。

Pre@R

有时,也会用到Pre@R来描述P和R的综合指标。

Pre@R定义为当使用者从第一个检索结果往下看到第R个时,所累计到的精确率P,也就是r/R,其中的r是前R篇结果中相关文件的个数。

P value(P值)

P值是什么呢?我觉得这篇文章解释地很清楚。不过需要注意的是文章中仅提及了某种假设检验(即卡方检验)下的P值求法。除此之外,还有T检验、Z检验以及F检验等,但除了统计变量值得计算公式以及分布表外,检验流程基本是一致的。

而在数据分析中,P值一般用于检验输出变量输入变量的关系,H0通常假设两者没有关系,因此若结果显示P值小于0.05,则拒绝H0,即两者关系显著。