最全ROC/AUC解释

模型评估方法汇总

$$$$


混淆矩阵、模型度量指标:准确率、精确率、召回率、F1 值

混淆矩阵

*True Positive(TP):将正类预测为正类的数量.

  • True Negative(TN):将负类预测为负类的数量.
  • False Positive(FP):将负类预测为正类数 → 误报 (Type I error).
  • False Negative(FN):将正类预测为负类数 → 漏报 (Type II error).
    82b2f456ece73e6b1fec0ec1f20fe052.png

准确率(accuracy)
A C C = T P + T N T P + T N + F P + F N A C C=\frac{T P+T N}{T P+T N+F P+F N} ACC=TP+TN+FP+FNTP+TN

精确率(precision)
P = T P T P + F P P=\frac{T P}{T P+F P} P=TP+FPTP

  • 准确率与精确率的区别:在正负样本不平衡的情况下,准确率这个评价指标有很大的缺陷。比如在互联网广告里面,点击的数量是很少的,一般只有千分之几,如果用acc,即使全部预测成负类(不点击)acc 也有 99% 以上,没有意义。

召回率(recall, sensitivity, true positive rate)
R = T P T P + F N R=\frac{T P}{T P+F N} R=TP+FNTP

F1值——精确率和召回率的调和均值
2 F 1 = 1 P + 1 R F 1 = 2 T P 2 T P + F P + F N \begin{aligned} \frac{2}{F_{1}} &=\frac{1}{P}+\frac{1}{R} \\ F_{1} &=\frac{2 T P}{2 T P+F P+F N} \end{aligned} F12F1=P1+R1=2TP+FP+FN2TP

只有当精确率和召回率都很高时,F1值才会高


ROC && AUC

ROC受试者工作特征曲线(Receiver Operating Characteristic):
反映敏感性和特异性连续变量的综合指标,

概念:

纵轴:
真正类率(True Postive Rate)TPR: TP/(TP+FN),代表分类器预测的正类中实际正实例占所有正实例的比例。Sensitivity
横轴:
负正类率(False Postive Rate)FPR: FP/(FP+TN),代表分类器预测的正类中实际负实例占所有负实例的比例。1-Specificity
ROC曲线越靠近(0, 1)点,越偏离45度对角线越好

画Roc曲线
  • 先根据学习器预测结果对样例进行排序
  • 然后把分类器的阈值设置最大(即把所有样例均预测为反例)真正例率和假正例率均为,坐标(0,0)标记一个点
  • 然后将分类阈值依次将每个样例划分为正例,几下每个(x,y)
  • 最后用线段连接相邻的点即可
    AUC(Area under curve)
解释:随机抽取一个正例和一个反例,当前分类算法计算得到的score值为正例值大于负例的概率
评价:ROC曲线下的面积,介于0-1之间。AUC作为数值可以直观的评价分类器的好坏,AUC值越大越好
AUC计算:
  1. 最直观的,根据AUC这个名称,我们知道,计算出ROC曲线下面的面积,就是AUC的值。事实上,这也是在早期 Machine Learning文献中常见的AUC计算方法。由于我们的测试样本是有限的。我们得到的AUC曲线必然是一个阶梯状的。因此,计算的AUC也就是这些阶梯 下面的面积之和。这样,我们先把score排序(假设score越大,此样本属于正类的概率越大),然后一边扫描就可以得到我们想要的AUC。但是,这么 做有个缺点,就是当多个测试样本的score相等的时候,我们调整一下阈值,得到的不是曲线一个阶梯往上或者往右的延展,而是斜着向上形成一个梯形。此 时,我们就需要计算这个梯形的面积。由此,我们可以看到,用这种方法计算AUC实际上是比较麻烦的。

  2. 一个关于AUC的很有趣的性质是,它和Wilcoxon-Mann-Witney Test是等价的。这个等价关系的证明留在下篇帖子中给出。而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相加,再减去M-1种两个正样本组合的情况。得到的就是所有的样本中有多少对正类样本的score大于负类样本的score。然后再除以M×N。即

在这里插入图片描述

  公式解释:

1、为了求的组合中正样本的score值大于负样本,如果所有的正样本score值都是大于负样本的,那么第一位与任意的进行组合score值都要大,我们取它的rank值为n,但是n-1中有M-1是正样例和正样例的组合这种是不在统计范围内的(为计算方便我们取n组,相应的不符合的有M个),所以要减掉,那么同理排在第二位的n-1,会有M-1个是不满足的,依次类推,故得到后面的公式M*(M+1)/2,我们可以验证在正样本score都大于负样本的假设下,AUC的值为1

2、根据上面的解释,不难得出,rank的值代表的是能够产生score前大后小的这样的组合数,但是这里包含了(正,正)的情况,所以要减去这样的组(即排在它后面正例的个数),即可得到上面的公式

另外,特别需要注意的是,再存在score相等的情况时,对相等score的样本,需要 赋予相同的rank(无论这个相等的score是出现在同类样本还是不同类的样本之间,都需要这样处理)。具体操作就是再把所有这些score相等的样本 的rank取平均。然后再使用上述公式。

参考:

http://blog.csdn.net/abcjennifer/article/details/7359370
周志华.机器学习

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值