ROC曲线

本文通过比喻的方式解释了ROC曲线的概念及如何绘制。ROC曲线用于展示分类器的真正率和假正率之间的关系,好的分类器ROC曲线应接近左上角。文章还介绍了真正类率、假正类率和真负类率等概念。

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

ROC的概念不太容易理解,尝试用更加通俗的方式来解读这个问题和中间涉及到指标.

混淆矩阵.

混淆矩阵

  • 若一个实例是正类并且被预测为正类,即为真正类(True Postive TP),比如诸葛亮, 人才,被识别重用.
  • 若一个实例是正类,但是被预测成为负类,即为假负类(False Negative FN), 漏报,比如韩非, 人才,没有被君主识别重用.
  • 若一个实例是负类,但是被预测成为正类,即为假正类(False Postive FP), 误报, 比如和绅, 奸臣,被当作忠臣重用.
  • 若一个实例是负类,但是被预测成为负类,即为真负类(True Negative TN), 强盗, 被正确识别,并被干掉

ROC曲线

ROC曲线(receiver operating characteristic curve,受试者工作特征曲线)是显示分类器真正率(TPR)和假正率(FPR)之间折中的一种图形化方法。
一个好的分类模型应该尽可能的靠近ROC曲线的左上角如果随机猜测的话,那么TPR和FPR会一直相等,最终曲线是主对角线。另外,我们也可以用曲线下的面积,来表示一个模型的平均表现。

那这时候如何衡量你这个君主的能力, 衡量分类器的好坏呢?

  • 真正类率(True Postive Rate)TPR: TP/(TP+FN),Sensitivity, 君主对人才的辨识度. 诸葛亮/诸葛亮+韩非.
  • 负正类率(False Postive Rate)FPR: FP/(FP+TN) = 和绅/和绅+强盗, 代表君主对滥用奸臣的能力. 1- Specificity, 滥用小人的昏君
  • 真负类率(True Negative Rate)TNR: TN/(FP+TN) = 强盗/和绅+强盗
    代表君主对识别奸臣的能力. Specificity, 特异性, 能识别奸臣的明君.

最理想的目标是:上帝,TPR是1,FPR是0,识别出所有贤臣,杀掉所有奸臣.

如何绘制ROC曲线

ROC曲线

阈值就是环境的严酷程度,可以理解宽松程度.
在实际环境中,没有明确的非黑即白, 识别器针对识别对象只能计算一个系数. 然后君主根据这个系数来判断.

控制阈值的变化,我们就可以得到ROC曲线 , 整体上代表识别器的识别能力(君主的明辨忠奸的能力).

上帝:不管环境如何变化, 如何宽松和严苛,都坚持原则;
明君:识别能力很强. 环境苛刻的时候,能识别大部分贤臣, 尽可能避免使用奸臣. 但是因为太严格,不能识别所有贤臣。同时因为识别能力, 也会有少量和绅之流被使用。在环境宽松,更多的和绅会被重用. 如上图的ROC曲线.
硬币君(完全随机): 对角线曲线.
昏君:识别能力很差,容易被迷惑. 环境苛刻的时候,始终重用和绅之流.如下图的曲线,环境宽松的时候, 忠臣的识别度才能提高.

昏君ROC曲线

### ROC 曲线概述 ROC 曲线(Receiver Operating Characteristic Curve),即接收者操作特征曲线,是一种广泛应用于机器学习领域中的工具,用于评估二分类模型的性能。该曲线通过绘制不同分类阈值下的假阳性率(False Positive Rate, FPR)和真阳性率(True Positive Rate, TPR)来展现模型的现[^1]。 #### 基本定义 - **FPR (False Positive Rate)**:示负样本被错误地预测为正类的比例。 \[ FPR = \frac{FP}{FP + TN} \] - **TPR (True Positive Rate)** 或称为敏感度(Sensitivity)、召回率(Recall):示实际为正类的样本中,被正确识别为正类的比例。 \[ TPR = \frac{TP}{TP + FN} \] 其中: - \( TP \) 示真正例数; - \( FP \) 示假正例数; - \( TN \) 示真反例数; - \( FN \) 示假反例数; 通过改变分类器的决策阈值,可以计算一系列的 \( FPR \) 和 \( TPR \),并将它们绘制成一条二维曲线,这就是 ROC 曲线[^1]。 --- ### AUC 的概念及其意义 AUC 是指 ROC 曲线下的面积(Area Under the Curve)。AUC 被用来量化模型的整体性能。通常情况下,AUC 的取值范围在 0 到 1 之间: - 当 AUC 接近于 1 时,明模型具有很强的区分能力; - 当 AUC 等于 0.5 时,意味着模型无法有效地区分正类和负类; - 如果 AUC 小于 0.5,则可能说明模型存在严重的偏差或者数据标签颠倒的情况[^1]。 --- ### ROC 曲线的实际应用 在 Python 中可以通过 `sklearn.metrics` 提供的功能轻松实现 ROC 曲线的绘制以及 AUC 的计算。以下是具体的操作流程与代码实例: ```python from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import roc_curve, auc import matplotlib.pyplot as plt # 创建模拟数据集 X, y = make_classification(n_samples=1000, n_features=20, n_classes=2, random_state=42) # 数据划分 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 构建逻辑回归模型并训练 model = LogisticRegression() model.fit(X_train, y_train) # 获取测试集中每个样本属于正类的概率分数 y_scores = model.predict_proba(X_test)[:, 1] # 计算 ROC 曲线的相关参数 fpr, tpr, thresholds = roc_curve(y_test, y_scores) roc_auc = auc(fpr, tpr) # 绘制 ROC 曲线图 plt.figure(figsize=(8, 6)) plt.plot(fpr, tpr, color='darkorange', lw=2, label=f'ROC curve (area = {roc_auc:.2f})') plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') # 随机猜测基线 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 Example') plt.legend(loc="lower right") plt.show() ``` 此段代码展示了如何利用逻辑回归构建一个简单的分类模型,并基于测试集上的概率得分生成 ROC 曲线及对应的 AUC 值[^2]。 --- ### 总结 综上所述,ROC 曲线不仅能够直观地反映分类模型在各种阈值条件下的现情况,而且还能借助 AUC 来提供一种统一的标准去评判多个模型间的优劣差异。因此,在许多场景下,尤其是涉及不平衡类别分布的任务里,ROC-AUC 成为了不可或缺的重要评价手段之一[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值