受试者工作特性曲线ROC和曲线下面积AUC

受试者工作特性曲线 ROC

一个 ROC 曲线(receiver operating curve 受试者工作特性曲线)是一张图,展示了一个分类模型在所有分类阈值下的表现。这张图描绘了两个参数:
  • 真阳率 true positive rate
  • 假阳率 false positive rate

真阳率(TPR)是召回率的同义词,因此定义为
TPR=TP/(TP+FN)

假阳率(FPR)定义为
FPR=FP/(FP+TN)

一条受试者工作特性曲线描绘了真阳率和假阳率在不同分类阈值下的表现。降低分类阈值会把更多的样本标注为阳性,因此真阳率和假阳率同时增加。下图展示了一条典型的 ROC 曲线。
为了计算 ROC 曲线中的点,我们需要在不同的分类阈值下计算逻辑回归模型,但是这效率低。幸运的是,有一个基于排序的高效的算法提供我们这些信息,它叫做AUC。

AUC:Area under the ROC Curve,ROC曲线下面积

AUC是Area under the ROC Curve 的缩写。这意味着AUC测量整个ROC曲线下从(0,0)到(1,1)二维区域的面积
线下面积曲线对所有可能的阈值下的表现进行了集中测量。一种AUC的解释是模型把随机阳性样本排在随机阴性样本前面的概率。例如,给定下面的样本,从左往右逻辑回归模型预测值依次递增。

AUC代表随机一个正(绿)样本排在随机一个负(红)样本右边的可能性。

AUC的值介于0到1之间。一个模型预测全错时,它的AUC等于0;一个模型预测全对时,它的AUC等于1.0。
ROC曲线下面积因如下两点原因而受欢迎:

  • AUC具有规模不变性。它衡量样本被排序的好坏,而不是它们的绝对值。
  • AUC具有分类阈值不变性。它衡量模型预测的质量,跟分类阈值的取值无关。

可是,这些原因带有相应的注意事项。AUC的可用性在某些特定条件下可能会有限制。
  • 规模不变性可能不是我们想要的。例如,有时候我们真地需要数值可能性的输出,而AUC不能提供这一点。

  • 分类阈值不变性可能不是我们想要的。在假阴性代价和假阳性代价相差悬殊的情况下,减小某种分类错误就变得很重要。例如,在做垃圾邮件的检测时,你倾向于优先减少假阳性(把正常邮件分类为垃圾邮件)数量(即使这会导致假阴性(把垃圾邮件分类为正常邮件)数量显著提高)。AUC不是一个适合这类优化的衡量标准。

这篇文章遵从  Creative Commons Attribution 3.0 License。它由博主自 谷歌机器学习速成课程一节翻译而来。


  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在MATLAB中,可以使用以下代码来绘制受试者工作特征曲线ROC曲线): 假设我们有一组真实标签(ground truth)和一组预测概率(predicted scores): ```matlab % 真实标签 true_labels = [0 1 1 0 1 1 0 0 1]; % 预测概率 predicted_scores = [0.2 0.6 0.8 0.3 0.9 0.7 0.4 0.1 0.5]; ``` 首先,需要根据预测概率和真实标签计算不同阈值下的真阳性率(True Positive Rate,TPR)和假阳性率(False Positive Rate,FPR): ```matlab % 根据阈值计算TPR和FPR thresholds = unique(predicted_scores); n_thresholds = length(thresholds); TPR = zeros(n_thresholds, 1); FPR = zeros(n_thresholds, 1); for i = 1:n_thresholds threshold = thresholds(i); TP = sum(predicted_scores >= threshold & true_labels == 1); FN = sum(predicted_scores < threshold & true_labels == 1); FP = sum(predicted_scores >= threshold & true_labels == 0); TN = sum(predicted_scores < threshold & true_labels == 0); TPR(i) = TP / (TP + FN); FPR(i) = FP / (FP + TN); end ``` 然后,可以使用`plot`函数将TPR和FPR绘制成ROC曲线: ```matlab % 绘制ROC曲线 plot(FPR, TPR, 'b-', 'LineWidth', 2); grid on; xlabel('False Positive Rate'); ylabel('True Positive Rate'); title('Receiver Operating Characteristic (ROC) Curve'); axis square; ``` 最后,可以使用`axis([0 1 0 1])`函数设置坐标轴范围为[0,1],以确保ROC曲线在图像中正确显示: ```matlab % 设置坐标轴范围 axis([0 1 0 1]); ``` 这样就可以得到一个用于评估分类器性能的ROC曲线
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值