来源 | 数据科学CLUB
封图 | CSDN 下载自视觉中国
混淆矩阵是一个表,经常用来描述分类模型(或“分类器”)在已知真实值的一组测试数据上的性能。混淆矩阵本身比较容易理解,但是相关术语可能会令人混淆。
让我们从一个二进制分类器的混淆矩阵示例开始(尽管它可以很容易地扩展到两个以上的类):
我们能从这个矩阵中了解到什么?
有两种可能的预测类:“yes”和“no”。例如,如果我们预测一种疾病的存在,“yes”意味着他们有这种疾病,“no”意味着他们没有这种疾病。
分类器总共做出165个预测(例如,165名患者正在接受该疾病存在的测试)。
在这165个病例中,分类器预测“yes”110次,“no”55次。
事实上,样本中有105名患者患有此病,60名患者没有患病。
现在让我们定义最基本的术语:
true positives (TP): 在这些情况下,我们预测“yes”(他们有这种病),并且他们确实有这种病。
true negatives (TN): 我们预测“no”,事实上他们确实没有患病。
false positives (FP): 我们预测“yes”,但是他们实际上并没有患病。(也称为“第一类错误”。)
false negatives (FN): 我们预测“no”,但他们确实有这种疾病。(也称为“第二类错误”。)
我已经将这些项添加到混淆矩阵中,并且添加了行和列总数:
这是一个比率的列表,通常是从一个混淆矩阵的二元分类器里得出:
准确率(Accuracy):总的来说,分类器的准确率是多少?
(TP+TN)/total = (100+50)/165 = 0.91
误分类率(Misclassification Rate):总的来说,错分类的频率是多少?
(FP+FN)/total = (10+5)/165 = 0.09
等于1减去准确率
也被称为“错误率(Error Rate)”
真阳性率(True Positive Rate):当它实际上是“yes”时,它预测为“yes”的频率是多少?
TP/actual yes = 100/105 = 0.95
也被称为"Sensitivity"或"Recall"
假阳性率(False Positive Rate):当它实际上是“no”的时候,它预测为“yes”的频率是多少?
FP/actual no = 10/60 = 0.17
真阴性率(True Negative Rate):当它实际上是“no”时,它预测“no”的频率是多少?
TN/actual no = 50/60 = 0.83
等于1减去假阳性率
也被称为"特异性(Specificity)"
精度(Precision):当它预测“yes”类时,正确预测的概率是多少?
TP/predicted yes = 100/110 = 0.91
Prevalence:在我们的样本中,“yes”条件实际发生的频率是多少?
actual yes/total = 105/165 = 0.64
还有几个术语也值得一提:
零错误率(Null Error Rate): 这是如果你总是预测大多数类,你就会错的频率。(在我们的例子中,零错误率将是60/165=0.36,因为如果你总是预测yes,那么您只会在60个“no”的情况下出错。)这可以作为比较分类器的基准度量。然而,对于一个特定的应用程序,最好的分类器有时会有比零错误率更高的错误率,正如 “Accuracy Paradox(精确度悖论)”所证明的那样。
Cohen's Kappa: 这本质上是对分类器的性能的一种度量,与它仅仅是偶然的性能进行比较。换句话说,如果模型的准确率和零错误率之间有很大的差异,那么模型的Kappa分数就会很高。
F Score:这是真实阳性率(召回率)和正确率的加权平均值。
ROC曲线:这是一个常用的图表,它总结了分类器在所有可能阈值上的性能。当你改变将观察值分配给给定类的阈值时,通过绘制真阳性率(y轴)与假阳性率(x轴)来生成它。
推荐阅读
如何成为一名黑客?
一篇与众不同的 String、StringBuilder 和 StringBuffer 详解
干货 | 大白话彻底搞懂 HBase RowKey 详细设计
发送0.55 ETH花费近260万美元!这笔神秘交易引发大猜想
Python 爬取周杰伦《Mojito》MV 弹幕,这个评论亮了!
谷歌 Chrome 将弃用“黑名单”,“Master/Slave”主从模式也要换名?
京东姚霆:推理能力,正是多模态技术未来亟需突破的瓶颈!
真香,朕在看了!