混淆矩阵-ROC曲线、召回率、精确率、准确率

1 混淆矩阵

混淆矩阵是一种用于评估分类模型性能的重要工具。它通过矩阵形式清晰地展示了模型对样本进行分类的结果,帮助我们理解模型在不同类别上的表现。

————预测为正类预测为负类
实际为正类True Positive (TP)False Negative (FN)
实际为负类False Positive (FP)True Negative (TN)
  • True Positive (TP): 模型将实际为正类别的样本正确预测为正类别。
  • False Negative (FN): 模型将实际为正类别的样本错误预测为负类别。
  • False Positive (FP): 模型将实际为负类别的样本错误预测为正类别。
  • True Negative (TN): 模型将实际为负类别的样本正确预测为负类别。

通过上述指标,可以计算出一系列性能指标,例如准确率、精确率、召回率和F1分数。这些指标帮助我们量化模型的分类准确性、可靠性和全面性。

  • 注意:混淆矩阵的目的是帮助理解分类模型在不同类别上的表现,即只要是分类模型,可以考虑利用混淆矩阵,例如医学领域中,判断病人是否有某种疾病

2 混淆矩阵指标

2.1 准确率

准确率表示模型正确分类的样本占总样本数的比例,计算方式为:
准确率( A c c u r a c y ) = T P + T N T P + T N + F P + F N 准确率(Accuracy)=\frac{TP+TN}{TP+TN+FP+FN} 准确率(Accuracy=TP+TN+FP+FNTP+TN
如下图所示:
准确率
准确率可以判断总的正确率,但有如下缺点:

  • 在样本不平衡的情况下,并不能作为很好的指标来衡量结果。例如在一个样本中,正样本占99%,负样本占1%,样本是严重不平衡的,无论什么算法,只需要将全部样本预测为正样本即可有99%的准确率,这体现不出算法的性能

2.2 精确率

精确率又叫查准率。精确率表示所有被预测为正的样本中实际为正的样本的概率,它是针对预测结果而言的,计算方式为:
精确率( P r e c i s i o n ) = T P T P + F P 精确率(Precision)=\frac{TP}{TP+FP} 精确率(Precision=TP+FPTP
如下图所示:
精确率
准确率和精确率的区别如下:

  • 精准率代表对预测的正样本结果中的预测准确程度
  • 准确率则代表整体的预测准确程度

2.3 召回率

召回率,也称为 True Positive Rate (TPR) 或灵敏度或查全率,它表示在实际为正的样本中被正确预测为正样本的概率,它是针对原样本而言的,计算公式如下:
召回率( T P R ) = T P T P + F N 召回率(TPR)=\frac{TP}{TP+FN} 召回率(TPR=TP+FNTP
如下图所示:
召回率
召回率的应用场景:例如银行贷款等,将无信用的用户设定为正样本,这就需要保证召回率要足够高。如果召回率过低,就会把无信用用户预测为有信用用户,这样会造成严重损失。

2.4 特异度

特异度,也称为 True Negative Rate (TNR),它表示在实际为负的样本中被正确预测为负样本的概率,它是针对原样本而言的,计算公式如下:
特异度( T N R ) = T N T N + F P 特异度(TNR)=\frac{TN}{TN+FP} 特异度(TNR=TN+FPTN
如下图所示:
特异度
特异度的应用场景:例如银行贷款等,将无信用的用户设定为负样本,这就需要保证召回率要足够高。如果召回率过低,就会把无信用用户预测为有信用用户,这样会造成严重损失。

2.4 假正率

假正率,也称为False Positive Rate (FPR) ,它表示在实际为负的样本中被错误预测为正样本的概率,它是针对原样本而言的,计算公式如下:
假正率( F P R ) = F P F P + T N 假正率(FPR)=\frac{FP}{FP+TN} 假正率(FPR=FP+TNFP
如下图所示:
假正率

2.5 假负率

假负率,也称为False Negative Rate (FNR) ,它表示在实际为正的样本中被错误预测为负样本的概率,它是针对原样本而言的,计算公式如下:
假负率( F N R ) = F N T P + F N 假负率(FNR)=\frac{FN}{TP+FN} 假负率(FNR=TP+FNFN
如下图所示:
假负率

2.6 F1 分数

F1 分数是精确率和召回率的调和平均数,它综合了两者的性能,计算方式为:
F 1 = 2 × 精确率 × 召回率 精确率 + 召回率 F1=\frac{2×精确率×召回率}{精确率+召回率} F1=精确率+召回率2×精确率×召回率
F1的特点如下:

  • F1 分数的取值范围是 [0, 1],越接近 1 表示模型的性能越好,同时考虑到了模型在精确率和召回率之间的平衡。
  • F1 分数非常适合二分类问题
  • F1 分数越高则越意味着模型在查准率和查全率之间取得了良好的平衡

2.7 ROC曲线

2.7.1 roc曲线基本概念

ROC(Receiver Operating Characteristic)曲线,又称接受者操作特征曲线。人们将其用于评价模型的预测能力,ROC曲线是基于混淆矩阵得出的。

  • ROC曲线横坐标是假正率(False Positive Rate),纵坐标是真正率(即召回率,True Positive Rate)

ROC的特点的特点如下:
1.一个阈值水平对应ROC曲线的一个点(非常重要,与如何画ROC曲线有关)
2. ROC曲线不光滑
3. 当分类预测模型的输出概率p∈(0,1)时,ROC曲线过点(0,0)和(1,1)
4. ROC曲线单调不减

2.7.2 roc曲线绘制过程

1 详细过程

基于一个阈值水平对应ROC曲线的一个点,先给出绘制过程
假设有如下的样本,记录了其实际类别以及分类器预测为正的概率:

样本01234
实际类别
预测概率0.90.50.80.60.4

根据上述信息,对概率进行去重和排序,可得列表:
[ 0.9 , 0.8 , 0.6 , 0.5 , 0.4 ] [0.9,0.8,0.6,0.5,0.4] [0.9,0.8,0.6,0.5,0.4]
在上述的列表首位和末位分别加1和0,可得阈值顺序:
[ 1 , 0.9 , 0.8 , 0.6 , 0.5 , 0.4 , 0 ] [1,0.9,0.8,0.6,0.5,0.4,0] [1,0.9,0.8,0.6,0.5,0.4,0]

  • 该阈值的含义为:当低于该阈值时,一致认为为负类

当阈值为1时的情况
其样本预测为:

样本01234
实际类别
预测概率0.90.50.80.60.4
预测

此时混淆矩阵为:

————预测为正类预测为负类
实际为正类03
实际为负类02

横坐标假正率为:
假正率( F P R ) = F P F P + T N = 0 0 + 2 = 0 假正率(FPR)=\frac{FP}{FP+TN}=\frac{0}{0+2}=0 假正率(FPR=FP+TNFP=0+20=0
纵坐标真正率为:
真正率( T P R ) = T P T P + F N = 0 0 + 3 = 0 真正率(TPR)=\frac{TP}{TP+FN}=\frac{0}{0+3}=0 真正率(TPR=TP+FNTP=0+30=0
重新上述过程,直到分析完列表中所有的阈值,最终可得:

阈值假正率(FPR)真正率(TPR)
100
0.90 1 3 \frac{1}{3} 31
0.80 2 3 \frac{2}{3} 32
0.601
0.50.51
0.411
011

最终可以画出ROC曲线图,如下:
ROC曲线图)
代码实现如下:

import numpy as np
import matplotlib.pyplot as plt
from sklearn import metrics

# 样本数据
y_true = np.array([1, 0, 1, 1, 0])  # 实际类别
y_score = np.array([0.9, 0.5, 0.8, 0.6, 0.4])  # 预测概率

# 计算假正率(FPR)和真正率(TPR)
fpr, tpr, thresholds = metrics.roc_curve(y_true, y_score, pos_label=1)

# 计算AUC
roc_auc = metrics.auc(fpr, tpr)

# 画ROC曲线
plt.figure()
lw = 2
plt.plot(fpr, tpr, color='darkorange', lw=lw, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--', label=f'Chance (area = 0.50)', alpha=0.5)  # 添加标签和alpha参数
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic (ROC) Curve')
plt.legend(loc="lower right")
plt.show()

2 为什么ROC曲线单调不减

先看混淆矩阵

————预测为正类预测为负类
实际为正类True Positive (TP)False Negative (FN)
实际为负类False Positive (FP)True Negative (TN)

根据假正率和真正率的公式:
假正率( F P R ) = F P F P + T N ,真正率( T P R ) = T P T P + F N 假正率(FPR)=\frac{FP}{FP+TN},真正率(TPR)=\frac{TP}{TP+FN} 假正率(FPR=FP+TNFP,真正率(TPR=TP+FNTP
判断分母
由混淆矩阵可知:FP+TN和TP+FN是不变的
判断分子
根据上述例子所得到的数据,如下:

阈值假正率(FPR)真正率(TPR)
100
0.90 1 3 \frac{1}{3} 31
0.80 2 3 \frac{2}{3} 32
0.601
0.50.51
0.411
011

当阈值不断下降时,预测为正的样本数必然不断上升(结合上述数据理解),即TP+FP递增,因此可推断出
T P 递增或者 F P 递增,即 T P i + 1 ≥ T P i , F P i + 1 ≥ F P i TP递增或者FP递增,即TP_{i+1}≥TP_{i},FP_{i+1}≥FP_{i} TP递增或者FP递增,即TPi+1TPiFPi+1FPi

  • 注意:TP和FP是不可能减少的,当阈值减少时,之前预测为正类的样品,仍然将被预测为正类

根据分子分母结论分析
综上所述,可得:
F P R i = F P i F P i + T N i ≥ F P R i + 1 = F P i + 1 F P i + 1 + T N i + 1 FPR_{i}=\frac{FP_{i}}{FP_{i}+TN_{i}}≥FPR_{i+1}=\frac{FP_{i+1}}{FP_{i+1}+TN_{i+1}} FPRi=FPi+TNiFPiFPRi+1=FPi+1+TNi+1FPi+1
T P R i = T P i T P i + F N i ≥ T P R i + 1 = T P i + 1 T P i + 1 + F N i + 1 TPR_{i}=\frac{TP_{i}}{TP_{i}+FN_{i}}≥TPR_{i+1}=\frac{TP_{i+1}}{TP_{i+1}+FN_{i+1}} TPRi=TPi+FNiTPiTPRi+1=TPi+1+FNi+1TPi+1

2.7.3 AUC的意义

(1)统计意义
其统计意义为:从样本中任取一个(正,负)样本对,分类器对前者的输出概率大于后者的可能性
考虑有如下样本

样本01234
实际类别
预测概率0.90.50.80.50.4

正样本有3个,负样本有2个,所以可能的正负样本对总共有3×2六种可能情况
使用下述计数规则:
I ( p 正样本 , p 负样本 ) = { 1 p 正样本 > p 负样本 0.5 p 正样本 = p 负样本 0 p 正样本 < p 负样本 I(p_{正样本},p_{负样本})=\left\{\begin{matrix} 1 & p_{正样本}>p_{负样本}\\ 0.5& p_{正样本}=p_{负样本} \\ 0& p_{正样本}<p_{负样本} \end{matrix}\right. I(p正样本p负样本)= 10.50p正样本p负样本p正样本=p负样本p正样本p负样本
则对六种情况进行计数,可得:

正样本负样本计数
011
211
310.5
041
241
341

所以有 A U C = 1 + 1 + 0.5 + 1 + 1 + 1 6 = 0.917 AUC=\frac{1+1+0.5+1+1+1}{6}=0.917 AUC=61+1+0.5+1+1+1=0.917
(2)几何意义
几何意义:ROC曲线下的面积(以后再补充证明)
刚刚代码实现的图,如下图所示,ROC橙色曲线下的面积就是正方形,面积为1,所以AUC=1
ROC曲线图
(3)AUC评判标准
其对分类器优劣的标准如下:

  • AUC = 1,是完美分类器。
  • AUC = [0.85, 0.95], 效果很好
  • AUC = [0.7, 0.85], 效果一般
  • AUC = [0.5, 0.7],效果较低,但用于预测股票已经很不错了
  • AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
  • AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。

例子1:AUC=1
根据AUC定义,当AUC=1,对于任意一个正负样本对,分类器倾向于将正样本分类为正样本,即完全分对
例子2:AUC<0.5
根据AUC定义,当AUC<0.5,对于任意一个正负样本对,分类器倾向于将正样本分类为负样本(例如预测概率p正=0.3,p负=0.9),即反预测

3 总结

混淆矩阵的主要性能指标,作如下总结:

  • 准确率:模型正确分类的样本占总样本数的比例,准确率衡量了模型在所有样本上的整体表现
  • 精确率:模型预测为正类别的样本中实际是正类别的概率,精确率衡量了模型在预测为正类别的样本上的准确性
  • 召回率:实际为正类别的样本中,正确预测为正样本的概率,召回度衡量了在实际为正样本中正确预测为正样本的预测概率
  • F1分数:精确率和召回率的调和平均数,F1分数衡量了精确率和召回率之间的平衡

混淆矩阵和上述性能指标共同提供了对分类模型性能全面的理解,并帮助评估模型的优缺点,进而进一步优化模型




参考如下:

  1. 机器学习,周志华
  2. 混淆矩阵(Confusion Matrix)
  3. 机器学习中的召回率、精确率、准确率
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值