混淆矩阵是一个表,经常用来描述分类模型(或“分类器”)在已知真实值的一组测试数据上的性能。混淆矩阵本身比较容易理解,但是相关术语可能会令人混淆。
让我们从一个二进制分类器的混淆矩阵示例开始(尽管它可以很容易地扩展到两个以上的类):
我们能从这个矩阵中了解到什么?
- 有两种可能的预测类:“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轴)来生成它。