4.10 分类模型评估方法
4.10.1 准确率/精确率/召回率/F1值
机器学习中有很多分类模型评估指标,如准确率(Accuracy)、召回率(查全率,Recall)和精确率(查准率,Precision),其都是比较常见的。
1.准确率
我们先来说一下准确率,准确率也是我们日常生活中用得较多的一个判断指标,准确率的计算很简单,准确率=所有预测正确的结果除以所有结果。比如一个模型要识别5张图片,最后识别正确4张图片,错了1张,那么准确率就是4/5=80%。
倘若某人声称创建了一个能够识别登上飞机的恐怖分子的模型,并且准确率(Accuracy)高达99%,这能算是个好模型吗?已知美国全年平均有8亿人次的乘客,并且在2000—2017年间共发现了19名恐怖分子。如果有一个模型将从美国机场起飞的所有乘客都标注为非恐怖分子,那么这个模型达到了接近完美的准确率——99.99999%。这听起来确实令人印象深刻,但是美国国土安全局肯定不会购买这个模型。尽管这个模型拥有接近完美的准确率,但是在这个问题中,准确率显然不是一个合适的度量指标。
恐怖分子检测是一个不平衡的分类问题:我们需要鉴别的类别有两个,即恐怖分子和非恐怖分子,其中一个类别代表了极大多数的数据,而另一个类别却很少。比如我们把恐怖分子定义为正例,非恐怖分子定义为负例,那么正例类别——恐怖分子,远远少于负例类别——非恐怖分子的数量。这种数据不均衡的问题是数据科学中比较常见的,在数据不均衡的情况下使用准确率并不是评估模型性能很好的衡量标准。当然,如果是在数据比较均衡的情况下,即我们还是可以使用准确率来作为分类模型的评估指标的。
所以,在数据不均衡的场景下,我们应该考虑的评估指标应该是精确率和召回率。我们先看一下图4.23。
图4.23 真实标注与模型预测对比
图4.23中的True Positive(TP)表示模型的预测结果是恐怖分子,数据的真实标注也是恐怖分子;False Positive(FP)表示模型的预测结果是恐怖分子,数据的真实标注是非恐怖分子;False Negative(FN)表示模型的预测结果是非恐怖分子,数据的真实标注是恐怖分子;True Negative(TN)表示模型的预测结果是非恐怖分子,数据的真实标注也是非恐怖分子。
这里的True/Fasle和Positive/Negative我们可以这么来理解,True或Fasle表示模型的预测结果是否正确。如果预测正确,就是True;如果预测错误,就是Fasle。所以,相当于TP和TN都表示模型的预测是正确的,FP和FN表示模型的预测是不正确的。Positive或Negative表示模型的预测结果。TP和FP模型的预测结果都是Positive,TN和FN模型的预测结果都是Negative。
2.召回率
看懂图4.23以后,我们来看一下召回率(Recall)的公式:
召回率描述的是模型对于正例——恐怖分子的召回能力,也就是找到恐怖分子的能力。比如一共有19名恐怖分子,模型可以正确识别出10名恐怖分子,有9名恐怖分子没有识别出来。那么TP=10,FN=9,Recall=10/(10+9)=52.63%。比如一共有19名恐怖分子,模型可以正确识别出18名恐怖分子,有1名恐怖分子没有识别出来,那么TP=18,FN=1,Recall=18/(18+1)=94.74%。召回率越高,说明模型找到恐怖分子的能力越强。
3.精确率
我们再来看一下精确率(Precision)的公式:
精确率描述的是模型对于正例——恐怖分子的判断能力。比如模型可以正确识别出10名恐怖分子,另外还有40人,模型判断其是恐怖分子,其实这40人是非恐怖分子。那么TP=10,FP=40,Precision=10/(10+40)=20%。比如模型可以正确识别9名恐怖分子,另外还有1人,模型判断其是恐怖分子,其实这1人是非恐怖分子。那么TP=9,FP=1,Precision=9/(9+1)=90%。精确率越高,说明模型对于恐怖分子的识别越精准。
准确率(Accuracy)的公式为
也就是所有识别正确的结果除以所有结果。
针对不同的问题,我们所关注的评估指标可能也会有所不同。比如2020年年初新型冠状病毒爆发时期,我们更关注召回率,因为我们要尽量找到所有带有新型冠状病毒的病人,然后把病人进行隔离观察治疗,宁可抓错100,也不能放过1个。
再举一个信息检索中比较极端的例子,假如一个搜索引擎有10000个网站,其中有100个深度学习相关的网站。当我们搜索“深度学习是什么?”的时候,如果搜索引擎想提高精确率,那么它可以只返回一个跟深度学习相关度最高的网站,如果这个结果是我们想要的,那么精确率就是100%,但这样做,召回率只有1%。如果搜索引擎想提高召回率,那么它可以返回10000个网站,这样做,召回率就可以有100%,但精确率只有1%。
所以,判断一个搜索引擎的好坏,主要看的是前面几十条结果的精确率,因为我们通常只会查看最前面的几十条结果,特别是最前面的几条结果。最前面的几条结果是我们想要的,我们就会认为这个搜索引擎很好。我们并不是很在意搜索引擎的召回率,如一共有10000条结果是符合我们想要的结果,搜索引擎给我们返回了1000条还是9000条,其实我们并不在意,因为我们只会看最前面的几十条结果。
在实际应用中,最理想的情况是精确率和召回率都比较高,但一般来说,很难得到精确率和召回率都很高的结果。很多时候是提高了精确率,召回率就会降低;提高了召回率,精确率就会降低。所以我们还需要一个综合评估指标,即F值,F值是精确率(P)和召回率(R)的加权调和平均,公式为
当参数α=1时,就是最常见的的F1值,即
F1值综合了P和R的结果,可用于综合评价分类结果的质量。
准确率、召回率、精确率和F1值都是在0~1之间,并且都是越大越好。
最后我再举一个例子,帮助大家理解这4个评估指标的计算。比如一个预测恐怖分子的模型结果如图4.24所示。
图4.24 模型结果
从图4.24中可以看出:
(1)有10个恐怖分子模型预测结果也是恐怖分子(TP);
(2)有10个非恐怖分子模型预测结果是恐怖分子(FP);
(3)有5个恐怖分子模型预测结果是非恐怖分子(FN);
(4)有75个非恐怖分子模型预测结果是非恐怖分子(TN)。
于是:
(1)准确率的计算:(TP+TN)/(TP+FN+FP+TN)=(10+75)/(10+5+10+75)=85%;
(2)召回率的计算:TP/(TP+FN)=10/(10+5)=66.67%;
(3)精确率的计算:TP/(TP+FP)=10/(10+10)=50%;
(4)F1值的计算:(2×50%×66.67%)/(50%+66.67%)=57.14%。
4.10.2 混淆矩阵(Confusion Matrix)
在机器学习领域,混淆矩阵又称为可能性表格或者错误矩阵,它是一种特定的矩阵,用来呈现算法的效果。我们还是通过例子来讲解,假设有一个人、狗、猫的分类系统,我们的测试样本一共有10个人、15只狗、5只猫,得到如图4.25所示的混淆矩阵。
图4.25 混淆矩阵
图4.25中表达的意思是,一共有5只猫,其中3只猫预测正确,有1只猫被预测成了狗,有1只猫被预测成了人;一共有15只狗,其中有3只狗被预测成了猫,有11只狗预测正确,有1只狗被预测成了人;一共有10个人,其中有1个人被预测成了猫,有两个人被预测成了狗,有7个人预测正确。