AUC与ROC

本文介绍了ROC曲线及其在分类器性能评估中的应用,并详细解释了AUC的几何与物理意义,提供了AUC的计算方法及其实现代码。

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

前半部分转载. http://meroa.com/auc-awk-src

ROC曲线

分类器的评价与分类器本身同样重要。把分类器的性能映射到ROC(Receiver Operating Characteristic)空间,是一种常用的评价分类器的方法。ROC曲线横轴是FPR(False Positive Rate 假阳性率,即判断为正例但实际为负例的比例),纵轴是TPR(True Positive Rate 真阳性率,即判断为正例且实际为正例的个数占全部正例的比例)。ROC曲线只对二分类问题有效。而尤其当正负样本不平衡时,这种评价比起准确率更有效(只要想想把垃圾邮件分类器如果把所有邮件都识别为不是垃圾邮件,也可以得到90%以上的准确率,但这没有任何意义)。

AUC的几何意义

AUC(Area Under Curves)指的是ROC曲线下的面积,该指标能较好的概括不平衡样本分类器的性能而成为很多数据挖掘竞赛的判定标准。由于仅有有限个样本,无论训练样本还是测试样本,因此无法获得最精确的ROC曲线,从而无法精确计算AUC。在实际计算中,使用类似微积分的方法,用矩形(梯形?)面积的和去近似。

AUC的物理意义

假设分类器的输出是样本属于正类的socre(置信度),则AUC的物理意义为,任取一对(正、负)样本,正样本的score大于负样本的score的概率。从而我们能够理解对于AUC而言,并不关心具体预测的结果是标签或者概率,也不需要卡什么阈值,只要在预测结果之间有排序即可。

如何计算AUC

给定测试数据test.dat

0.9 1
0.8 1
0.7 0
0.6 1
0.55 1
0.54 1
0.53 0
0.52 0
0.51 1
0.505 0

auc.awk 代码如下(矩形):

#!/usr/bin/awk -f
#./auc.awk <(sort -nk2 real_prob.csv )

BEGIN {
    FS = OFS = "\t";
    pos_label = 1;
    x0 = x = y0 = y = 0;
    auc = 0;
}
{
    label = $2;
    if(label == pos_label) 
        y++;
    else 
        x++;
    auc+=(x-x0)*(y);
    x0 = x;
    y0 = y;
}
END {
    auc/=x*y;
    print auc;
}

进一步, 我们讨论一下AUC计算时候的几个问题: 用nlogn的复杂度替代n^2复杂度的遍历; 处理score相等的数据; 处理label为浮点值的数据.
参考资料与代码:
http://www.cnblogs.com/guolei/archive/2013/05/23/3095747.html
https://github.com/dmlc/xgboost/blob/master/src/metric/rank_metric.cc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值