加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

机器学习算法评价指标(1)

(2017-03-08 06:28:15)
分类: 学术探讨
一、真阳率、假阳率、真正类率与负正类率
其概念机器学习中借助了医学诊断的一些术语。这些指标用于评价机器学习算法的好坏。首先看看其原本的含义:当我们去医院做化验,就会看到化验单或报告单中会出现(+)跟(-),其分别表型阳性和阴性。阳性(+)代表某种病理指标超常有可能患了某种疾病,反之如果是阴性(-)就说明指标正常,可能没有得病。 
然而,检测结果是有误差的,其中的影响因素很多,那么到底这种检测方法的可靠性有多高呢?就引出了真阳率与假阳率的概念。所谓真阳率就是,病患确实得了某种病后该方法能检查出来的概率。反之,假阳率就是此方法误诊为阳性的概率。在机器学习中对于二值分类器问题可将实例分成正类(positive)或负类(negative)。对应的会出现四种情况即,1)一个实例是正类并且被分类器预测为正类,这样的集合被称为真正类(True positive),记为TP-正确肯定的数目;2)如果实例是负类被预测成正类,称之为假正类(False positive),记为FP-误报,给出的匹配是不正确的;3)如果实例是负类被预测成负类,称之为真负类(True negative),记为TN-正确拒绝的非匹配对数;4)如果正类被预测成负类则为假负类(false negative),记为FN-漏报或没有正确找到的匹配的数目。
如表-1所示,1代表正类,0代表负类。  
  预测  
  1                                                         0                                  合计
实际 1 True Positive(TP)          False Negative(FN)            Actual Positive(TP+FN)
  0 False Positive(FP)                  True Negative(TN)                    Actual Negative(FP+TN)
合计 Predicted Positive(TP+FP) Predicted Negative(FN+TN)    TP+FP+FN+TN
由表-1所知:1)真正类率(true positive rate ,TPR), 为TPR=TP/ (TP+ FN),刻画的是分类器所识别出的 正实例占所有正实例的比例;2)负正类率(false positive rate, FPR),为FPR= FP / (FP + TN),计算的是分类器错认为正类的负实例占所有负实例的比例;3)真负类率(True Negative Rate,TNR,也称为specificity),为TNR=TN/ (FP+ TN) = 1-FPR。
二、ROC曲线
在一个二分类模型中,对于所得到的连续结果,假设已确定一个阀值,比如说 0.6,大于这个值的实例划归为正类,小于这个值则划到负类中。如果减小阀值,减到0.5,固然能识别出更多的正类,也就是提高了识别出的正例占所有正例的比类,即TPR,但同时也将更多的负实例当作了正实例,即提高了FPR。为了形象化这一变化,在此引入ROC,ROC曲线可以用于评价一个分类器。ROC曲线(receiver operating characteristic curve),又称为感受性曲线(sensitivity curve)。得此名的原因在于曲线上各点反映着相同的感受性,它们都是对同一信号刺激的反应,只不过是在几种不同的判定标准下所得的结果而已。就是把FPR当x轴,TPR当y轴画一个二维平面直角坐标系。然后不断调整检测方法(或机器学习中的分类器)的阈值,即最终得分高于某个值就是阳性,反之就是阴性,得到不同的真阳率和假阳率数值,然后描点。就可以得到一条ROC曲线。如图-1所示:
                              图-1 (a)ROC曲线 ,(b)随着阈值theta变化的TP和FP
对于一个特定的分类器和测试数据集,显然只能得到一个分类结果,即一组FPR和TPR结果,而要得到一个曲线,我们实际上需要一系列FPR和TPR的值,分类器的一个重要功能“概率输出”,即表示分类器认为某个样本具有多大的概率属于正样本(或负样本)。通过更深入地了解各个分类器的内部机理,我们总能想办法得到一种概率输出。通常来说,是将一个实数范围通过某个变换映射到(0,1)区间。假如我们已经得到了所有样本的概率输出(属于正样本的概率),现在根据每个测试样本属于正样本的概率值从大到小排序。图-2是一个示例,图-2中共有20个测试样本,“Class”一栏表示每个测试样本真正的标签(p表示正样本,n表示负样),“Score”表示每个测试样本属于正样本的概率。
                                                                                     图-2 示例
接下来,我们从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。举例来说,对于图中的第4个样本,其“Score”值为0.6,那么样本1,2,3,4都被认为是正样本,因为它们的“Score”值都大于等于0.6,而其他样本则都认为是负样本。每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点。这样一来,我们一共得到了20组FPR和TPR的值,将它们画在ROC曲线的结果图-3所示。
                                                         图-3 描点
一个好的分类模型应该尽可能靠近图形的左上角,而一个随机猜测模型应位于连接点(TPR=0,FPR=0)和(TPR=1,FPR=1)的主对角线上。
三、AUC指标
ROC曲线下方的面积(Area Under the ROC Curve, AUC)提供了评价模型平均性能的另一种方法。如果模型是完美的,那么它的AUC = 1,如果模型是个简单的随机猜测模型,那么它的AUC = 0.5,如果一个模型好于另一个,则它的曲线下方面积相对较大。

方案一: 
我们可以对于总样本中的M个正样本和N个负样本,组成M×N个pair,如果某个pair正样本score大于负样本,则记1分,反之记0分,相等记0.5分。然后总分除以M×N就是AUC的值了。复杂度O(M×N)

方案二: 
基本思想一样,不过复杂度可以缩减到O((M+N)log(M+N))。 
首先,我们将所有样本得分从大到小排序,则排名最高的样本rank为M+N,第二的为M+N-1,以此类推。然后我们将所有正样本的rank加和,其思想为:排名k的正样本至多比k-1个负样本的score要大。当我们将正样本的rank加和后,再减去(1+M)M/2,即正样本的个数,就是正样本score比负样本score大的pair个数。再除以O(M×N)就是AUC的值了,公式如下: 

AUC=ipositiveranki(1+M)M2M×N

注意:对score相等的样本,需要赋予相同的rank(无论这个相等的score是出现在同类样本还是不同类的样本之间,都需要这样处理)。具体操作就是把所有这些score相等的样本的rank取平均。然后再使用上述公式。比如score为0.8的有两个样本,rank为7和8,则其最终代入公式的rank为7.5。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有