P-R曲线和ROC曲线

本文深入解析了机器学习中常用的评估指标,包括混淆矩阵、召回率、精度、准确率、P-R曲线、AP、ROC曲线、AUC、F1分数等,帮助读者全面理解模型性能的量化标准。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 基本概念

1.1 混淆矩阵

混淆矩阵又称错误矩阵,指每个类别下,模型预测结果的类别和数量在一个矩阵中展示出来。

1.2 二元混淆矩阵

  • TP : True Positive 真阳
  • FN : False Negative 假阴
  • FP : False Positive 假阳
  • TN : True Negative 真阴
真实标签预测为正预测为负
真实为正TPFN
真实为负FPTN

1.2.1 召回 Recall

又称为 TPR (True Positive Rate)
或者 敏感度Sensitivity

通俗理解:真实为正的样本中识别为正的占比。

T P R = T P T P + F N TPR = \frac {TP} {TP+FN} TPR=TP+FNTP

1.2.2 精度Precision

又称为PPV (Positive Predictive Value)

通俗理解:识别为正的样本中真实为正的占比。

P P V = T P T P + F P PPV=\frac{TP}{TP+FP} PPV=TP+FPTP

1.2.3 准确率 Accuracy

通俗理解:所有样本中识别正确的比例。

a c c u r a c y = T P + T N T P + F N + F P + T N accuracy = \frac {TP+TN} {TP + FN + FP + TN} accuracy=TP+FN+FP+TNTP+TN

1.3 P-R曲线 (精度-召回曲线) (Precision-Recall curve)

直观理解:阈值降低,召回率升高时,精度下降情况。

  • 横坐标:召回 Recall
  • 纵坐标:精度 Precision

1.4 AP 平均精度 (Average-Precision)

P-R曲线围起来的面积

mAP

把每个类别的AP都单独拎出来,然后计算所有类别AP的平均值 。

1.5 受试者工作特征曲线 (Receiver Operating Curve)

直观理解:阈值降低,假阳升高时,真阳升高情况。

  • 横轴:假阳率 FPR F P R = F P F P + T N FPR = \frac{FP} {FP + TN} FPR=FP+TNFP
  • 纵轴:真阳率 TPR T P R = T P T P + F N TPR = \frac{TP} {TP + FN} TPR=TP+FNTP

P 为真实的正样本的数量;
N 为真实的负样本的数量。

1.6 AUC (Area Under Curve)

ROC曲线围住的面积。
AUC就是从所有正样本中随机选取一个,所有负样本中随机选取一个,然后用分类器预测,概率分别为p1、p0,p1>p0的概率就等于AUC。所以AUC反应的是分类器对样本的排序能力。根据这个解释,如果我们完全随机的对样本分类,那么 AUC应该接近0.5。另外,AUC对样本是否均衡并不敏感,这也是不均衡样本通常用AUC评价分类器性能的一个原因。

1.7 F1 score

F 1 = 2 ∗ P r e c i s i o n ∗ R e c a l l P r e c i s i o n + R e c a l l F1 = \frac{2*Precision*Recall} {Precision + Recall} F1=Precision+Recall2PrecisionRecall

参考资料

### 计算Precision-Recall曲线下方的平均精度(AP) 平均精度(Average Precision, AP)是衡量Precision-Recall曲线的一个重要指标,通常用来评估分类器在处理不平衡数据集时的表现。它表示的是Precision-Recall曲线下的面积大小。 #### 平均精度(AP)的定义 平均精度可以通过积分法或离散近似法来计算。具体来说: 1. **积分形式** 如果可以连续地获取PrecisionRecall的变化,则可以直接通过积分的方式求解PR曲线下的面积: \[ AP = \int_{0}^{1} P(r) dr \] 这里 \(P(r)\) 表示给定召回率 \(r\) 下对应的精确率 \(P\) 值[^2]。 2. **离散近似形式** 实际应用中,通常是基于有限数量的数据点来估计AP。假设我们有多个不同的决策阈值,对应着一系列的\( (R_i, P_i) \),其中 \( R_i \) 是召回率,\( P_i \) 是精确率。那么可以用梯形法则或其他数值积分方法估算该区域的面积。一种常见的做法如下所示: 对于每一个新的回忆值增加的情况,取当前以及之前最大的精准度作为高度进行加权平均: \[ AP = \sum_n (R_n - R_{n-1}) P_n \] 以下是实现上述公式的Python代码示例: ```python import numpy as np def compute_ap(recalls, precisions): """ Compute the average precision using the piecewise linear approximation method. Parameters: recalls (list or array): List of recall values sorted ascendingly. precisions (list or array): Corresponding list of precision values. Returns: float: Average Precision score. """ # Ensure that recalls and precisions are NumPy arrays recalls = np.array(recalls) precisions = np.array(precisions) # Sort by increasing order of recall indices = np.argsort(recalls) recalls_sorted = np.concatenate([[0], recalls[indices]]) precisions_sorted = np.maximum.accumulate(np.concatenate([[0], precisions[indices]])[::-1])[::-1][:-1] # Calculate differences between consecutive recall points delta_recalls = np.diff(recalls_sorted) # Multiply each difference with corresponding max precision value to get area contribution ap_score = np.sum(delta_recalls * precisions_sorted[:-1]) return ap_score ``` 此函数接受两个列表参数——`precisions` `recalls`,分别代表不同阈值下得到的一系列精确率与召回率,并返回最终的AP分数。 #### 示例说明 假设有以下一组PrecisionRecall值: | Recall | Precision | |--------|-----------| | 0 | 1 | | 0.3 | 0.8 | | 0.7 | 0.6 | 调用上面的方法即可获得相应的AP得分。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张欣-男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值