模型评估-2

1、分类算法的评估
一、二分类
ROC与AUC
1.1 roc曲线:接收者操做特征(receiveroperating characteristic)
roc曲线上每一个点反映着对同一信号刺激的感觉性。横轴:负正类率(false postive rate FPR)特异度,划分实例中全部负例占全部负例的比例;(1-Specificity);纵轴:真正类率(true postive rate TPR)灵敏度,Sensitivity(正类覆盖率)。算法

2针对一个二分类问题,将实例分红正类(postive)或者负类(negative)。可是实际中分类时,会出现四种状况.post

(1)若一个实例是正类而且被预测为正类,即为真正类(True Postive TP)测试

(2)若一个实例是正类,可是被预测成为负类,即为假负类(False Negative FN)code

(3)若一个实例是负类,可是被预测成为正类,即为假正类(False Postive FP)排序

(4)若一个实例是负类,可是被预测成为负类,即为真负类(True Negative TN)ci

TP:正确的确定数目it

FN:漏报,没有找到正确匹配的数目方法

FP:误报,没有的匹配不正确统计

TN:正确拒绝的非匹配数目vi

列联表以下,1表明正类,0表明负类:

由上表可得出横,纵轴的计算公式:

(1)真正类率(True Postive Rate)TPR: TP/(TP+FN),表明分类器预测的正类中实际正实例占全部正实例的比例。Sensitivity

(2)负正类率(False Postive Rate)FPR: FP/(FP+TN),表明分类器预测的正类中实际负实例占全部负实例的比例。1-Specificity

(3)真负类率(True Negative Rate)TNR: TN/(FP+TN),表明分类器预测的负类中实际负实例占全部负实例的比例,TNR=1-FPR。Specificity

假设采用逻辑回归分类器,其给出针对每一个实例为正类的几率,那么经过设定一个阈值如0.6,几率大于等于0.6的为正类,小于0.6的为负类。对应的就能够算出一组(FPR,TPR),在平面中获得对应坐标点。随着阈值的逐渐减少,愈来愈多的实例被划分为正类,可是这些正类中一样也掺杂着真正的负实例,即TPR和FPR会同时增大。阈值最大时,对应坐标点为(0,0),阈值最小时,对应坐标点(1,1)。

以下面这幅图,(a)图中实线为ROC曲线,线上每一个点对应一个阈值。

横轴FPR:1-TNR,1-Specificity,FPR越大,预测正类中实际负类越多。

纵轴TPR:Sensitivity(正类覆盖率),TPR越大,预测正类中实际正类越多。

理想目标:TPR=1,FPR=0,即图中(0,1)点,故ROC曲线越靠拢(0,1)点,越偏离45度对角线越好,Sensitivity、Specificity越大效果越好。

二 如何画roc曲线

假设已经得出一系列样本被划分为正类的几率,而后按照大小排序,下图是一个示例,图中共有20个测试样本,“Class”一栏表示每一个测试样本真正的标签(p表示正样本,n表示负样本),“Score”表示每一个测试样本属于正样本的几率。

接下来,咱们从高到低,依次将“Score”值做为阈值threshold,当测试样本属于正样本的几率大于或等于这个threshold时,咱们认为它为正样本,不然为负样本。举例来讲,对于图中的第4个样本,其“Score”值为0.6,那么样本1,2,3,4都被认为是正样本,由于它们的“Score”值都大于等于0.6,而其余样本则都认为是负样本。每次选取一个不一样的threshold,咱们就能够获得一组FPR和TPR,即ROC曲线上的一点。这样一来,咱们一共获得了20组FPR和TPR的值,将它们画在ROC曲线的结果以下图:

AUC(Area under Curve):Roc曲线下的面积,介于0.1和1之间。Auc做为数值能够直观的评价分类器的好坏,值越大越好。

首先AUC值是一个几率值,当你随机挑选一个正样本以及负样本,当前的分类算法根据计算获得的Score值将这个正样本排在负样本前面的几率就是AUC值,AUC值越大,当前分类算法越有可能将正样本排在负样本前面,从而可以更好地分类。
2、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。即
公式解释:

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

  二、根据上面的解释,不可贵出,rank的值表明的是可以产生score前大后小的这样的组合数,可是这里包含了(正,正)的状况,因此要减去这样的组(即排在它后面正例的个数),便可获得上面的公式

  另外,特别须要注意的是,再存在score相等的状况时,对相等score的样本,须要 赋予相同的rank(不管这个相等的score是出如今同类样本仍是不一样类的样本之间,都须要这样处理)。具体操做就是再把全部这些score相等的样本 的rank取平均。而后再使用上述公式。

二、多分类

相关文章
相关标签/搜索