[机器学习笔记] 混淆矩阵(Confusion Matrix)

混淆矩阵(Confusion Matrix)
在机器学习领域,混淆矩阵(Confusion Matrix),又称为可能性矩阵或错误矩阵。混淆矩阵是可视化工具,特别用于监督学习,在无监督学习一般叫做匹配矩阵。在图像精度评价中,主要用于比较分类结果和实际测得值,可以把分类结果的精度显示在一个混淆矩阵里面。
混淆矩阵的结构一般如下图表示的方法。
混淆矩阵要表达的含义:

  • 混淆矩阵的每一列代表了预测类别,每一列的总数表示预测为该类别的数据的数目;
  • 每一行代表了数据的真实归属类别,每一行的数据总数表示该类别的数据实例的数目;每一列中的数值表示真实数据被预测为该类的数目。
[机器学习笔记] 混淆矩阵(Confusion Matrix)
文章图片

True Positive(TP):真正类。样本的真实类别是正类,并且模型识别的结果也是正类。
False Negative(FN):假负类。样本的真实类别是正类,但是模型将其识别为负类。
False Positive(FP):假正类。样本的真实类别是负类,但是模型将其识别为正类。
True Negative(TN):真负类。样本的真实类别是负类,并且模型将其识别为负类。
该矩阵可用于易于理解的二类分类问题,但通过向混淆矩阵添加更多行和列,可轻松应用于具有3个或更多类值的问题。
举例
如有150个样本数据,预测为类I,类II,类III 各为50个。分类结束后得到的混淆矩阵为:
[机器学习笔记] 混淆矩阵(Confusion Matrix)
文章图片

每一行之和表示该类别的真实样本数量,每一列之和表示被预测为该类别的样本数量。
第一行第一列中的43表示有43个实际归属第一类的实例被预测为第一类,同理,第一行第二列的2表示有2个实际归属为第一类的实例被错误预测为第二类。
混淆矩阵是对分类问题的预测结果的总结。使用计数值汇总正确和不正确预测的数量,并按每个类进行细分,这是混淆矩阵的关键所在。混淆矩阵显示了分类模型的在进行预测时会对哪一部分产生混淆。它不仅可以让您了解分类模型所犯的错误,更重要的是可以了解哪些错误类型正在发生。正是这种对结果的分解克服了仅使用分类准确率所带来的局限性。
从混淆矩阵得到分类指标
从混淆矩阵当中,可以得到更高级的分类指标:Accuracy(精确率),Precision(正确率或者准确率),Recall(召回率),Specificity(特异性),Sensitivity(灵敏度)。
计算方法
对于二分类问题,可以将样例根据其真实类别与机器学习器预测类别的组合划分为:
样例总数 = TP + FP + TN + FN。
则可以计算指标:[机器学习笔记] 混淆矩阵(Confusion Matrix)
文章图片

精确率(Accuracy):精确率是最常用的分类性能指标。可以用来表示模型的精度,即模型识别正确的个数/样本的总个数。一般情况下,模型的精度越高,说明模型的效果越好。
Accuracy = (TP+TN)/(TP+FN+FP+TN)

正确率或者准确率(Precision):又称为查准率,表示在模型识别为正类的样本中,真正为正类的样本所占的比例。一般情况下,查准率越高,说明模型的效果越好。
Precision = TP/(TP+FP)

召回率(Recall):又称为查全率,召回率表现出在实际正样本中,分类器能预测出多少。
Recall(召回率) = Sensitivity(敏感指标,True Positive Rate,TPR)= 查全率
表示的是,模型正确识别出为正类的样本的数量占总的正类样本数量的比值。一般情况下,Recall越高,说明有更多的正类样本被模型预测正确,模型的效果越好。
Recall = TP/(TP+FN)

查准率和查全率是一对矛盾的指标。一般来说,查准率高时,查全率旺旺偏低;二查全率高时,查准率往往偏低。
精确率(Accuracy)和正确率(Precision)的区别
Accuracy,不管是哪个类别,只要预测正确,其数量都放在分子上,而分母是全部数据量,说明这个精确率是对全部数据的判断。
而正确率在分类中对应的是某个类别,分子是预测该类别正确的数量,分母是预测为该类别的全部的数量。
或者说,Accuracy是对分类器整体上的精确率的评价,而Precision是分类器预测为某一个类别的精确的评价。
Specificity(特异性):特异性指标,表示的是模型识别为负类的样本的数量,占总的负类样本数量的比值。
负正类率(False Positive Rate, FPR),计算公式为:FPR=FP/(TN+FP),计算的是模型错识别为正类的负类样本占所有负类样本的比例,一般越低越好。
Specificity = 1 - FPR

Fβ_Score:Fβ的物理意义就是将正确率和召回率的一种加权平均,在合并的过程中,召回率的权重是正确率的β倍。
F1分数认为召回率和正确率同等重要,F2分数认为召回率的重要程度是正确率的2倍,而F0.5分数认为召回率的重要程度是正确率的一半。比较常用的是F1分数(F1 Score),是统计学中用来衡量二分类模型精确度的一种指标。
F1_Score:数学定义为 F1分数(F1-Score),又称为平衡 F分数(Balanced Score),它被定义为正确率和召回率的调和平均数。在 β=1 的情况,F1-Score的值是从0到1的,1是最好,0是最差。
因此我们知道,计算Precision,Recall,Specificity等只是计算某一分类的特性,而Accuracy和F1-Score是判断分类模型总体的标准。
关于AUC
http://fastml.com/what-you-wanted-to-know-about-auc/
【[机器学习笔记] 混淆矩阵(Confusion Matrix)】AUC, or Area Under Curve, is a metric for binary classification. It’s probably the second most popular one, after accuracy. Unfortunately, it’s nowhere near as intuitive. That is, until you have read this article.
Accuracy deals with ones and zeros, meaning you either got the class label right or you didn’t. But many classifiers are able to quantify their uncertainty about the answer by outputting a probability value. To compute accuracy from probabilities you need a threshold to decide when zero turns into one. The most natural threshold is of course 0.5.
Let’s suppose you have a quirky classifier. It is able to get all the answers right, but it outputs 0.7 for negative examples and 0.9 for positive examples. Clearly, a threshold of 0.5 won’t get you far here. But 0.8 would be just perfect.
That’s the whole point of using AUC - it considers all possible thresholds. Various thresholds result in different true positive/false positive rates. As you decrease the threshold, you get more true positives, but also more false positives. The relation between them can be plotted:
[机器学习笔记] 混淆矩阵(Confusion Matrix)
文章图片

Image credit: Wikipedia
From a random classifier you can expect as many true positives as false positives. That’s the dashed line on the plot. AUC score for the case is 0.5. A score for a perfect classifier would be 1. Most often you get something in between.
下面是网络上找到一些资料
ROC/AUC的概念
1. 灵敏度,特异度,真正率,假正率
在正式介绍ROC/AUC之前,我们还要再介绍两个指标,这两个指标的选择也正是ROC和AUC可以无视样本不平衡的原因。这两个指标分别是:灵敏度和(1-特异度),也叫做真正率(TPR)和假正率(FPR)。
灵敏度(Sensitivity) = TP/(TP+FN)
特异度(Specificity) = TN/(FP+TN)
  • 其实我们可以发现灵敏度和召回率是一模一样的,只是名字换了而已。
  • 由于我们比较关心正样本,所以需要查看有多少负样本被错误地预测为正样本,所以使用(1-特异度),而不是特异度。
真正率(TPR) = 灵敏度 = TP/(TP+FN)
假正率(FPR) = 1- 特异度 = FP/(FP+TN)
下面是真正率和假正率的示意,我们发现TPR和FPR分别是基于实际表现1和0出发的,也就是说它们分别在实际的正样本和负样本中来观察相关概率问题。正因为如此,所以无论样本是否平衡,都不会被影响。还是拿之前的例子,总样本中,90%是正样本,10%是负样本。我们知道用准确率是有水分的,但是用TPR和FPR不一样。这里,TPR只关注90%正样本中有多少是被真正覆盖的,而与那10%毫无关系,同理,FPR只关注10%负样本中有多少是被错误覆盖的,也与那90%毫无关系,所以可以看出:如果我们从实际表现的各个结果角度出发,就可以避免样本不平衡的问题了,这也是为什么选用TPR和FPR作为ROC/AUC的指标的原因。
学习中看到一篇文章中提出了一个问题,关于:特异性(Specificity)和灵敏度(Sensitivity)
记录下来,还没有理解。
考虑一个二分类的情况,类别为1和0,我们将1和0分别作为正类(positive)和负类(negative),则实际分类的结果有4种,表格如下:
[机器学习笔记] 混淆矩阵(Confusion Matrix)
文章图片

从这个表格中可以引出一些其它的评价指标:
  • ACC:classification accuracy,描述分类器的分类准确率
    计算公式为:ACC=(TP+TN)/(TP+FP+FN+TN)
  • BER:balanced error rate
    计算公式为:BER=1/2*(FPR+FN/(FN+TP))
  • TPR:true positive rate,描述识别出的所有正例占所有正例的比例
    计算公式为:TPR=TP/ (TP+ FN)
  • FPR:false positive rate,描述将负例识别为正例的情况占所有负例的比例
    计算公式为:FPR= FP / (FP + TN)
  • TNR:true negative rate,描述识别出的负例占所有负例的比例
    计算公式为:TNR= TN / (FP + TN)
  • PPV:Positive predictive value
    计算公式为:PPV=TP / (TP + FP)
  • NPV:Negative predictive value
    计算公式:NPV=TN / (FN + TN)
    其中TPR即为敏感度(sensitivity),TNR即为特异度(specificity)。
维基百科的附图:
[机器学习笔记] 混淆矩阵(Confusion Matrix)
文章图片


如下是截取的wiki上的一个截图(https://en.wikipedia.org/wiki/Confusion_matrix)
[机器学习笔记] 混淆矩阵(Confusion Matrix)
文章图片



    推荐阅读