机器学习基础---评价指标---混淆矩阵及相关的二级指标、三级指标

混淆矩阵的定义

混淆矩阵(Confusion Matrix),它的本质远没有它的名字听上去那么拉风。矩阵,可以理解为就是一张表格,混淆矩阵其实就是一张表格而已。

二分类的混淆矩阵

以分类模型中最简单的二分类为例,对于这种问题,我们的模型最终需要判断样本的结果是0还是1,或者说是positive还是negative。

我们通过样本的采集,能够直接知道真实情况下,哪些数据结果是positive,哪些结果是negative。同时,我们通过用样本数据跑出分类型模型的结果,也可以知道模型认为这些数据哪些是positive,哪些是negative。

因此,我们就能得到这样四个基础指标,我称他们是一级指标(最底层的):

真实值是positive,模型认为是positive的数量(True Positive=TP)
真实值是positive,模型认为是negative的数量(False Negative=FN):这就是统计学上的第一类错误(Type I Error)
真实值是negative,模型认为是positive的数量(False Positive=FP):这就是统计学上的第二类错误(Type II Error)
真实值是negative,模型认为是negative的数量(True Negative=TN)

将这四个指标一起呈现在表格中,就能得到如下这样一个矩阵,我们称它为混淆矩阵(Confusion Matrix):
在这里插入图片描述

多分类的混淆矩阵

当分类的结果多于两种的时候,混淆矩阵同时适用。

一下面的混淆矩阵为例,我们的模型目的是为了预测样本是什么动物,这是我们的结果:
在这里插入图片描述

基于混淆矩阵的指标

预测性分类模型,肯定是希望越准越好。那么,对应到混淆矩阵中,那肯定是希望TP与TN的数量大,而FP与FN的数量小。所以当我们得到了模型的混淆矩阵后,就需要去看有多少观测值在第二、四象限对应的位置,这里的数值越多越好;反之,在第一、三四象限对应位置出现的观测值肯定是越少越好。

二级指标

但是,混淆矩阵里面统计的是个数,有时候面对大量的数据,光凭算个数,很难衡量模型的优劣。因此混淆矩阵在基本的统计结果上又延伸了如下5个指标,我称他们是二级指标(通过最底层指标加减乘除得到的):

公式 意义
准确率 accuracy =(TP+TN)/(TP+TN+FP+FN) 分类模型所有判断正确的结果占总观测值的比重
精确率 、查准率、命中率 precision = TP/(TP+FP) 在模型观测是positive的所有结果中,模型预测对的比重
TPR、灵敏度、召回率 、查全率、覆盖率 sensitivity=recall = TP/(TP+FN) 在真实值是positive的所有结果中,模型预测对的比重
特异度 specificity = TN/(TN+FP) 在真实值是negative的所有结果中,模型预测对的比重
FPR、取伪率、负样本召回率 FPR = FP/(TN+FP) 在真实值是negative的所有结果中,模型预测错(模型预测为positive)的比重

通过上面的四个二级指标,可以将混淆矩阵中数量的结果转化为0-1之间的比率。便于进行标准化的衡量。

在这四个指标的基础上在进行拓展,会产令另外一个三级指标

三级指标

这个指标叫做F1 Score。他的计算公式是:

在这里插入图片描述
其中,P代表Precision,R代表Recall。
F1-Score指标综合了Precision与Recall的产出的结果。F1-Score的取值范围从0到1的,1代表模型的输出最好,0代表模型的输出结果最差。

多分类混淆矩阵二级指标、三级指标的计算方法

在这里插入图片描述
核心思想:将多分类混淆矩阵二分化

以猫为例,我们可以将上面的图合并为二分问题:
在这里插入图片描述

通过混淆矩阵,我们可以得到如下结论:

Accuracy
在总共66个动物中,我们一共预测对了10 + 15 + 20=45个样本,所以准确率(Accuracy)=45/66 = 68.2%。

Precision
所以,以猫为例,模型的结果告诉我们,66只动物里有13只是猫,但是其实这13只猫只有10只预测对了。模型认为是猫的13只动物里,有1条狗,两只猪。所以,Precision(猫)= 10/13 = 76.9%

Recall
以猫为例,在总共18只真猫中,我们的模型认为里面只有10只是猫,剩下的3只是狗,5只都是猪。这5只八成是橘猫,能理解。所以,Recall(猫)= 10/18 = 55.6%

Specificity
以猫为例,在总共48只不是猫的动物中,模型认为有45只不是猫。所以,Specificity(猫)= 45/48 = 93.8%。
虽然在45只动物里,模型依然认为错判了6只狗与4只猫,但是从猫的角度而言,模型的判断是没有错的。

F1-Score
通过公式,可以计算出,对猫而言,F1-Score=(2 * 0.769 * 0.556)/( 0.769 + 0.556) = 64.54%

多分类混淆矩阵的程序处理

多分类任务的混淆矩阵处理(matlab)
https://blog.csdn.net/justkian/article/details/82859032

实习点滴(11)–TensorFlow快速计算“多分类问题”的混淆矩阵以及精确率、召回率、F1值、准确率(tensorflow)
https://blog.csdn.net/sihailongwang/article/details/77527970?utm_source=blogxgwz5

基于混淆矩阵计算多分类的准确率和召回率
https://blog.csdn.net/wen_fei/article/details/83346750

猜你喜欢

转载自blog.csdn.net/xys430381_1/article/details/88198167