混淆矩阵的相关概念和计算公式,以及深度学习中的模型的评估指标。
概念
混淆矩阵(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{正确分类样本数}{所有样本数} $ = $ \frac{TP+TN}{TP+TN+FP+FN} $ 准确率,模型正确分类样本数占总样本数的比例(所有类别)
- Precision = $\frac{正确分类为正例}{预测为正例的样本数}$ = $\frac{TP}{TP+FP}$ 查准率(精确率),预测为正例的数据中有多少是真的正例
- Recall = $\frac{正确分类为正例}{真实为正例样本数}$=$\frac{TP}{TP+FN}$ 召回率,查全率,敏感性(Sensitivity),,真实为正例的数据中多少被预测出来了
- F1score = $\frac{2}{\frac{1}{Precision}+\frac{1}{Recall}}$ = $\frac{2 \times Precision\times Recall}{Precision+Recall}$ F~1~ score是Precision和Recall的调和平均数,综合反映分类器的Precision和Recall
- Specificity = $\frac{TN}{真实为健康的样本数}$ = $\frac{TN}{FP+TN}$ 特异性
ROC曲线,受试者工作特性曲线。横坐标为FPR,纵坐标为TPR。
- FPR=$\frac{FP}{N}$=$\frac{FP}{FP+TN}$ 负正类率 = 1-特异性
- TPR=$\frac{TP}{P}$=$\frac{TP}{TP+FN}$ 真正类率 = 召回率
注:其中准确率是针对所有类别;精确率,召回率,特异度是针对每个类别进行统计。
计算例题
n=100 | 预测为患病 | 预测为健康 |
---|---|---|
患病 | 45 | 5 |
健康 | 15 | 35 |
TP = 45,FN=5,FP=15,TN=35
- Precision = $\frac{45}{45+15}$ = 0.75 查准率
- Recall = $\frac{45}{45+5}$ = 0.9 查全率,敏感性,召回率
- F1-score = $\frac{2\times0.75\times0.9}{0.75+0.9}$ = 0.82 调和平均数
- Accuracy = $\frac{45+35}{100}$ x 100%= 80% 准确率
- Specificity = $\frac{35}{15+35}$ = 0.7 特异性
对于现在正在做的医疗领域相关的项目,我们更希望真实为患病预测为健康的这个值小。
多分类混淆矩阵(Multiclass Classifiers Confusion Matrix)
基本结构与二分类相似。与二分类不同的是,每一类都可以计算查准率和召回率。
例:
预测为猫 | 预测为狗 | 预测为猪 | |
---|---|---|---|
真实为猫 | 15 | 2 | 3 |
真实为狗 | 6 | 12 | 0 |
真实为猪 | 0 | 4 | 22 |
- Accuracy = $\frac{15+12+22}{15+2+3+6+12+4+22}$ = 76.56%
- 猫:Precision = $\frac{15}{15+6}$ = 0.71
Recall = $\frac{15}{15+2+3}$ = 0.75
- 狗: Precision = $\frac{12}{2+12+4}$ =0.66
Recall = $\frac{12}{6+12}$ = 0.66
- 猪:Precision = $\frac{22}{3+22}$ =0.88
Recall = $\frac{22}{22+4}$ = 0.85
- 平均Precision = $\frac{0.71+0.66+0.88}{3}$ = 0.75
平均Recall = $\frac{0.75+0.66+0.85}{3}$ = 0.75
- $F_1score$= $\frac{2}{\frac{1}{平均Precision}+\frac{1}{平均Recall}}$ = $\frac{2\times平均Precision\times平均Recall}{平均Precision+平均Recall}$ = 0.75
多分类的F1score是每一类F1score的平均值