auc计算公式python,python计算auc值
AUC(曲线周围面积)是机器学习中常用的二类评价方法,直接表示ROC曲线下的面积。本文将使用Python语言计算AUC,有兴趣的可以学习一下。
00-1010为什么这样的指标可以衡量分类效果auc了解AUC计算方法一法二实现与验证AUC(曲线下面积)是机器学习常用的二类评价方法,其直接含义是ROC曲线下面积,如下图所示:
要理解这幅图的含义,你必须先理解下表:
表中的列代表预测分类,行代表实际分类:
1、预测1:真类(tp)实际1、预测0:假阴性类(fn)实际0、预测1:假阳性类(fp)实际0、预测0:真阴性类(tn)真阴性样本总数=n=fp tn真阳性样本总数=p=tp fn在第一张图中,
真横坐标阳性率代表假阳性率,由fp/n计算,
是指预测的正样本在实际的负样本中出现的概率。
纵坐标真正率代表真类率,由tp/p计算,
是指预测正样本在实际正样本中出现的概率。
目录
先来看看如何得到这条曲线:
1.每个样本的预测概率由分类器得出,由高到低排序。
2.从高到低,将每个预测概率作为阈值,如果大于阈值,则视为1,如果小于0,则计算fp率和tp率。
对于一个有分类效果(效果比随机好)的分类器,一开始以高概率作为阈值时,阈值以上的真样本占所有正样本的比例(tp率)和阈值以上的假正样本占所有负样本的比例(fp率)。
为什么这样一个指标可以衡量分类效果
Auc是:随机选取一对样本(一个正样本和一个负样本),然后用训练好的分类器对这两个样本进行预测,预测的正样本的概率大于负样本的概率。
auc理解
AUC计算
在具有m个正样本和n个负样本的数据集中。有M*N对样本(一对样本,即一个正样本和一个负样本)。统计M*N对样本的个数,其中正样本的预测概率大于负样本的预测概率。
例如:
假设有四个样本。2个正样本和2个负样本,则M*N=4。
即总共有4个样本对。它们是:
(D,B),(D,A),(C,B),(C,A).
在(D,B)样本对中,正样本D的预测概率大于负样本B的预测概率(即D的得分高于B的得分),标记为1。
同理,对于(C,B)。正样本C预测的概率小于负样本C预测的概率,记为0。
那么auc如下:
如果分数一致:
还有四个样本对,样本对(C,B)的I值为0.5。
方法一
利润公式:
从高到低排列预测概率。
为每个概率值设置一个等级值(最高概率等级为N,第二高为n-1)
rank实际上代表得分超过的样本数。
为了发现组合中正样本的得分值大于负样本的得分值,如果所有正样本都大于负样本的得分值,那么与任何一个的第一个组合的得分值都会更大,我们取其秩值为N,但n-1中的M-1是正样本和正样本的组合,不在统计范围内(为了计算方便,我们取N组,对应的不合格品有M个),所以要减去,那么
依次类推,故得到后面的公式M*(M+1)/2,我们可以验证在正样本score都大于负样本的假设下,AUC的值为1
● 除以M*N
举例说明:
排序。按概率排序后得到:
按照上面的公式,只把正样本的序号加起来也就是只把样本C,D的rank值加起来后减去一个常数项:
得到:
如果出现得分一样的情况:
假如有4个取值概率为0.5,而且既有正样本也有负样本的情况。计算的时候,其实原则就是相等得分的rank取平均值。具体来说如下:
先排序:
这里需要注意的是:相等概率得分的样本,无论正负,谁在前,谁在后无所谓。
由于只考虑正样本的rank值:
对于正样本A,其rank值为7
对于正样本B,其rank值为6
对于正样本E,其rank值为(5+4+3+2)/4
对于正样本F,其rank值为(5+4+3+2)/4
实现及验证
采用sklearn中的库函数验证:
import numpy as np
AUC的优点:
它不受类别不平衡问题的影响,不同的样本比例不会影响AUC的评测结果。在训练时,可以直接使用AUC作为损失函数。
到此这篇关于Python实现计算AUC的示例代码的文章就介绍到这了,更多相关Python计算AUC内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。