概念

混淆矩阵(Confusion Matrix)又称为可能性表格或是错误矩阵。它是一种特定的矩阵用来呈现算法性能的可视化效果,通常是监督学习(非监督学习,通常用匹配矩阵:matching matrix)。其每一列代表预测值,每一行代表的是实际的类别。这个名字来源于它可以非常容易的表明多个类别是否有混淆(也就是一个class被预测成另一个class)。

基本格式

二分类混淆矩阵:

预测为正 预测为反
真实为正 √(True Positive) ❌(False Negative)
真实为反 ❌(False Positive) √(True Negative)

√:表示正确分类

❌:表示错误分类

  • TP :True Positive,真正,即被模型预测为正的正样本
  • FN :False Negative,假负,即被预测为负的正样本
  • FP :False Positive,假正,即被预测为正的负样本
  • TN :True Negative,真负,即被预测为负的负样本

我们希望的是TP和TN越大越好,FN和FP越小越好

评估指标及公式

TP+FN为真实为正例的样本;FP+TN为真实为反例的样本;

TP+TN为预测正确的样本

  • Accuracy = 正确分类样本数所有样本数\frac{正确分类样本数}{所有样本数} = TP+TNTP+TN+FP+FN\frac{TP+TN}{TP+TN+FP+FN}  准确率,模型正确分类样本数占总样本数的比例(所有类别)
  • Precision = 正确分类为正例预测为正例的样本数\frac{正确分类为正例}{预测为正例的样本数} = TPTP+FP\frac{TP}{TP+FP} 查准率(精确率),预测为正例的数据中有多少是真的正例
  • Recall = 正确分类为正例真实为正例样本数\frac{正确分类为正例}{真实为正例样本数}=TPTP+FN\frac{TP}{TP+FN} 召回率,查全率,敏感性(Sensitivity),,真实为正例的数据中多少被预测出来了
  • F1score = 21Precision+1Recall\frac{2}{\frac{1}{Precision}+\frac{1}{Recall}} = 2×Precision×RecallPrecision+Recall\frac{2 \times Precision\times Recall}{Precision+Recall}  F~1~ score是Precision和Recall的调和平均数,综合反映分类器的Precision和Recall
  • Specificity = TN真实为健康的样本数\frac{TN}{真实为健康的样本数} = TNFP+TN\frac{TN}{FP+TN}  特异性
  • ROC曲线,受试者工作特性曲线。横坐标为FPR,纵坐标为TPR。
    • FPR=FPN\frac{FP}{N}=FPFP+TN\frac{FP}{FP+TN} 负正类率 = 1-特异性
    • TPR=TPP\frac{TP}{P}=TPTP+FN\frac{TP}{TP+FN} 真正类率 = 召回率

注:其中准确率是针对所有类别;精确率,召回率,特异度是针对每个类别进行统计。

计算例题

n=100 预测为患病 预测为健康
患病 45 5
健康 15 35

TP = 45,FN=5,FP=15,TN=35

  • Precision = 4545+15\frac{45}{45+15} = 0.75  查准率
  • Recall = 4545+5\frac{45}{45+5} = 0.9    查全率,敏感性,召回率
  • F1-score = 2×0.75×0.90.75+0.9\frac{2\times0.75\times0.9}{0.75+0.9} = 0.82 调和平均数
  • Accuracy = 45+35100\frac{45+35}{100} x 100%= 80% 准确率
  • Specificity = 3515+35\frac{35}{15+35} = 0.7   特异性

对于现在正在做的医疗领域相关的项目,我们更希望真实为患病预测为健康的这个值小。

多分类混淆矩阵(Multiclass Classifiers Confusion Matrix)

基本结构与二分类相似。与二分类不同的是,每一类都可以计算查准率和召回率。

例:

预测为猫 预测为狗 预测为猪
真实为猫 15 2 3
真实为狗 6 12 0
真实为猪 0 4 22
  • Accuracy = 15+12+2215+2+3+6+12+4+22\frac{15+12+22}{15+2+3+6+12+4+22} = 76.56%
  • 猫:Precision = 1515+6\frac{15}{15+6} = 0.71

Recall = 1515+2+3\frac{15}{15+2+3} = 0.75

  • 狗: Precision = 122+12+4\frac{12}{2+12+4} =0.66

Recall = 126+12\frac{12}{6+12} = 0.66

  • 猪:Precision = 223+22\frac{22}{3+22} =0.88

Recall = 2222+4\frac{22}{22+4} = 0.85

  • 平均Precision = 0.71+0.66+0.883\frac{0.71+0.66+0.88}{3} = 0.75

平均Recall = 0.75+0.66+0.853\frac{0.75+0.66+0.85}{3} = 0.75

  • F1scoreF_1score= 21平均Precision+1平均Recall\frac{2}{\frac{1}{平均Precision}+\frac{1}{平均Recall}} = 2×平均Precision×平均Recall平均Precision+平均Recall\frac{2\times平均Precision\times平均Recall}{平均Precision+平均Recall} = 0.75

多分类的F1score是每一类F1score的平均值