P-R曲线

https://blog.youkuaiyun.com/u014203453/article/details/77598997

  • 信息检索中,我们经常会关系“检索出的信息有多少比例是用户感兴趣的”以及“用户感兴趣的信息中有多少被检索出来了”,用精度和错误率就描述出来了,这就需要引入准确率(precision,亦称查准率)和召回率(recall,亦称查全率)。
    在这里插入图片描述
准确率

预测结果中,究竟有多少是真的正?(找出来的对的比例)
P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP

召回率

所有正样本中,你究竟预测对了多少?(找回来了几个)
R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP

  • 一般来说,我们希望上述两个指标都是越高越好,然而没有这么好的事情,准确率和召回率是一对矛盾的度量,一个高时另一个就会偏低.
  • 当我们根据学习器的预测结果对样例进行排序(排在前面的是学习器认为“最可能”是正例的样本),然后按此顺序依次吧样本喂给学习器,我们把每次的准确率和召回率描出来就会得到一个P-R曲线(称为P-R图)
    在这里插入图片描述
  • 如果一个学习器的P-R被另一个学习器的该曲线包围,则可以断言后面的要好些。
  • 平衡点(Break-Even Point, BEP)
    就是找一个 准确率 = 召回率 的值,就像上面的图那样。
### P-R 曲线的概念 在机器学习领域,尤其是针对类别不平衡的数据集时,精确率(Precision)和召回率(Recall)是非常重要的评估指标。P-R 曲线是一种用于可视化不同决策阈值下模型性能的方法[^1]。 精确率定义为预测为正类的样本中实际为正类的比例,而召回率则表示实际为正类的样本中有多少被成功识别出来。通过调整分类器的决策阈值,可以改变模型的精确率和召回率之间的平衡[^2]。 --- ### 绘制 Precision-Recall 曲线的方法 以下是基于 Python 和 `scikit-learn` 库绘制 Precision-Recall 曲线的具体实现: #### 数据准备 假设已经训练了一个二分类模型并得到了测试数据的真实标签 `y_test` 和对应的决策函数分数 `decision_function` 或概率估计 `proba_scores`。 ```python from sklearn.metrics import precision_recall_curve import matplotlib.pyplot as plt # 假设 y_test 是真实标签,decision_function 是模型输出的决策分数 precision, recall, thresholds = precision_recall_curve(y_test, decision_function) # 可视化 PR 曲线 plt.figure(figsize=(8, 6)) plt.plot(thresholds, precision[:-1], 'r-', label='Precision') plt.plot(thresholds, recall[:-1], 'b--', label='Recall') plt.xlabel('Threshold') plt.ylabel('Score') plt.title('Precision-Recall Curve') plt.legend() plt.grid(True) plt.show() ``` 这段代码展示了如何利用 `sklearn.metrics.precision_recall_curve` 函数计算不同阈值下的精确率和召回率,并将其绘制成曲线图。注意,由于 `thresholds` 的长度比 `precision` 和 `recall` 少一个元素,因此需要去掉最后一个元素以便匹配维度[^1]。 --- ### 解读 P-R 曲线的意义 1. **高召回率 (High Recall)**:当降低决策阈值时,更多的正类会被检测到,从而提高召回率;然而这可能导致更多误报,进而降低精确率。 2. **高精确率 (High Precision)**:增加决策阈值会减少假阳性数量,提升精确率,但可能遗漏部分真正的正类实例,导致召回率下降。 3. **最佳权衡点**:通常寻找一条能够兼顾两者需求的最佳折衷方案,在某些应用场合更注重精确度而在另一些场景里优先考虑覆盖率[^2]。 --- ### 总结 通过对 Precision-Recall 曲线的研究可以帮助我们更好地理解模型行为以及其适用范围。特别是在处理严重偏斜分布的数据集中,PR 曲线往往能提供比 ROC 曲线更为直观的信息来指导算法优化过程[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值