auc

[list]
[*]1.最直观的,根据AUC这个名称,我们知道,计算出ROC曲线下面的面积,就是AUC的值。事实上,这也是在早期Machine Learning文献中常见的AUC计算方法。由于我们的测试样本是有限的。我们得到的AUC曲线必然是一个阶梯状的。因此,计算的AUC也就是这些阶梯 下面的面积之和。这样,我们先把score排序(假设score越大,此样本属于正类的概率越大),然后一边扫描就可以得到我们想要的AUC。但是,这么 做有个缺点,就是当多个测试样本的score相等的时候,我们调整一下阈值,得到的不是曲线一个阶梯往上或者往右的延展,而是斜着向上形成一个梯形。此 时,我们就需要计算这个梯形的面积。由此,我们可以看到,用这种方法计算AUC实际上是比较麻烦的。
[*]2.一个关于AUC的很有趣的性质是,它和Wilcoxon-Mann-Witney Test [url]http://en.wikipedia.org/wiki/Wilcoxon_signed-rank_test[/url]是等价的。这个等价关系的证明留在下篇帖子中给出。而Wilcoxon-Mann-Witney Test就是测试任意给一个正类样本和一个负类样本,正类样本的score有多大的概率大于负类样本的score。有了这个定义,我们就得到了另外一中计 算AUC的办法:得到这个概率。我们知道,在有限样本中我们常用的得到概率的办法就是通过频率来估计之。这种估计随着样本规模的扩大而逐渐逼近真实值。这 和上面的方法中,样本数越多,计算的AUC越准确类似,也和计算积分的时候,小区间划分的越细,计算的越准确是同样的道理。具体来说就是统计一下所有的 M×N(M为正类样本的数目,N为负类样本的数目)个正负样本对中,有多少个组中的正样本的score大于负样本的score。当二元组中正负样本的 score相等的时候,按照0.5计算。然后除以MN。实现这个方法的复杂度为O(n^2)。n为样本数(即n=M+N)
[*]3.第三种方法实际上和上述第二种方法是一样的,但是复杂度减小了。它也是首先对score从大到小排序,然后令最大score对应的sample 的rank为n,第二大score对应sample的rank为n-1,以此类推。然后把所有的正类样本的rank相加,再减去正类样本的score为最 小的那M个值的情况。得到的就是所有的样本中有多少对正类样本的score大于负类样本的score。然后再除以M×N。即
[img]http://dl.iteye.com/upload/attachment/572329/8c19904f-6d7b-3205-a090-badf5f32e4b6.jpg[/img]

[/list]

备注:
1.自己实现过1的面积计算方法,当样本比较大的时候(百万+),得到的值基本和2是一样的。
2.mahout里面的org.apache.mahout.classifier.evaluation用的就是3的计算方法。不知道原理的话,看起来还真是头大。原理很重要啊。。。。。。
3.关于那个为什么和Wilcoxon-Mann-Witney Test近似的理解:
ROC上的点的坐标为(FPR,TPR)
sensitivity or true positive rate (TPR)
eqv. with hit rate, recall
TPR = TP / P = TP / (TP + FN)
false positive rate (FPR)
eqv. with fall-out
FPR = FP / N = FP / (FP + TN)
感性的认识,这里TPR其实是=1的概率,FPR其实是=0的概率。ROC上的点实际上描述了=1,=0的概率大小。
一个随机的模型,随意抽一个样本,认为=1,=0的概率相等,都是0.5,这样就有了y=x的那条对角线,也就是baseline。整个事件的概率就是下面的面积=0.5
一个较好的模型,对=1的识别率比较好,=1的判断概率比=0的大,所以在y=x上方。也就是整个预测=1正确的概率>0.5
如果有时候得到了<0.5模型,不要泄气,反过来用就行了。
从概率的角度来理解AUC,也很容易看出,AUC的值和预测数据中的样本正负比例基本无关了,这也是为什么AUC比MAP,RMSE,precision,recall,F1等这些数值要客观一些的原因。

ref:
[url]http://en.wikipedia.org/wiki/Receiver_operating_characteristic[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值