混淆矩阵

2020-06-17 11:46:53 浏览数 (1)

混淆矩阵是一个表,经常用来描述分类模型(或“分类器”)在已知真实值的一组测试数据上的性能。混淆矩阵本身比较容易理解,但是相关术语可能会令人混淆。

让我们从一个二进制分类器的混淆矩阵示例开始(尽管它可以很容易地扩展到两个以上的类):

我们能从这个矩阵中了解到什么?

  • 有两种可能的预测类:“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轴)来生成它。

0 人点赞