[机器学习笔记]混淆矩阵(ConfusionMatrix)
混淆矩阵(Confusion Matrix)
在机器学习领域,混淆矩阵(Confusion Matrix),⼜称为可能性矩阵或错误矩阵。混淆矩阵是可视化⼯具,特别⽤于监督学习,在⽆监督学习⼀般叫做匹配矩阵。在图像精度评价中,主要⽤于⽐较分类结果和实际测得值,可以把分类结果的精度显⽰在⼀个混淆矩阵⾥⾯。
混淆矩阵的结构⼀般如下图表⽰的⽅法。
混淆矩阵要表达的含义:
混淆矩阵的每⼀列代表了预测类别,每⼀列的总数表⽰预测为该类别的数据的数⽬;
每⼀⾏代表了数据的真实归属类别,每⼀⾏的数据总数表⽰该类别的数据实例的数⽬;每⼀列中的数值表⽰真实数据被预测为该类的数⽬。
纵观
True Positive(TP):真正类。样本的真实类别是正类,并且模型识别的结果也是正类。
Fal Negative(FN):假负类。样本的真实类别是正类,但是模型将其识别为负类。
Fal Positive(FP):假正类。样本的真实类别是负类,但是模型将其识别为正类。
True Negative(TN):真负类。样本的真实类别是负类,并且模型将其识别为负类。
该矩阵可⽤于易于理解的⼆类分类问题,但通过向混淆矩阵添加更多⾏和列,可轻松应⽤于具有3个或更多类值的问题。
举例
如有150个样本数据,预测为类I,类II,类III 各为50个。分类结束后得到的混淆矩阵为:
每⼀⾏之和表⽰该类别的真实样本数量,每⼀列之和表⽰被预测为该类别的样本数量。
第⼀⾏第⼀列中的43表⽰有43个实际归属第⼀类的实例被预测为第⼀类,同理,第⼀⾏第⼆列的2表⽰有2个实际归属为第⼀类的实例被错误预测为第⼆类。
混淆矩阵是对分类问题的预测结果的总结。使⽤计数值汇总正确和不正确预测的数量,并按每个类进⾏细分,这是混淆矩阵的关键所在。混淆矩阵显⽰了分类模型的在进⾏预测时会对哪⼀部分产⽣混淆。它不仅可以让您了解分类模型所犯的错误,更重要的是可以了解哪些错误类型正在发⽣。正是这种对结果的分解克服了仅使⽤分类准确率所带来的局限性。
从混淆矩阵得到分类指标
从混淆矩阵当中,可以得到更⾼级的分类指标:Accuracy(精确率),Precision(正确率或者准确率),Recall(召回
率),Specificity(特异性),Sensitivity(灵敏度)。
计算⽅法
对于⼆分类问题,可以将样例根据其真实类别与机器学习器预测类别的组合划分为:
样例总数 = TP + FP + TN + FN。
则可以计算指标:
精确率(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(特异性):特异性指标,表⽰的是模型识别为负类的样本的数量,占总的负类样本数量的⽐值。
负正类率(Fal 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
AUC, or Area Under Curve, is a metric for binary classification. It’s probably the cond 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 cour 0.5.
Let’s suppo 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/fal positive rates. As you decrea the threshold, you get more true positives, but also more fal positives. The relation between them can be plotted:
Image credit: Wikipedia
From a random classifier you can expect as many true positives as fal positives. That’s the dashed line on the plot. AUC score for the ca 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种,表格如下:
从这个表格中可以引出⼀些其它的评价指标:
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:fal positive rate,描述将负例识别为正例的情况占所有负例的⽐例
现在进行时英语
计算公式为:FPR= FP / (FP + TN)
TNR:true negative rate,描述识别出的负例占所有负例的⽐例
计算公式为:TNR= TN / (FP + TN)
PPV:
风山渐
计算公式为:PPV=TP / (TP + FP)
NPV:
计算公式:NPV=TN / (FN + TN)
其中TPR即为敏感度(nsitivity),TNR即为特异度(specificity)。维基百科的附图: