ROC和AUC定义和理解

image

ROC和AUC定义:ROC全称是“受试者工作特征”(Receiver Operating Characteristic)。ROC曲线的面积就是AUC(Area Under the Curve)。

关键概念:首先要解释几个二分类问题中常用的概念:截断点,True Positive,False Positive...

假设有一批test样本,这些样本只有两种类别:正例P和反例N。利用机器学习算法预测类别如下图:

image

TP(True Postive):预测类别是P(正例),真实类别也是P

FP(False Postive):预测类别是P,真实类别是N(反例)

TN(True Negative):预测类别是N,真实类别也是N

FN(False Negative):预测类别是N,真实类别是P

样本中的真实正例类别总数即TP+FN,样本中的真实反例类别总数为FP+TN。

(1)TPR(True Positive Rate)即真阳性率,TPR =TP/(TP+FN)。代表分类器预测的正类中实际正实例占所有正实例的比例。——Sensitivity

(2)FPR(False Positive Rate)即假阳性率,FPR=FP/(TN+FP)。代表分类器预测的正类中实际负实例占所有负实例的比例。——1-Specificity

(3)TNR(True Negative Rate)即真阴性率,TNR=TN/(FP+TN)。代表分类器预测的负类中实际负实例占所有负实例的比例。——Specificity

(4)

image

比方说在一个10000个人的数据集中,实际有100个人得了某种病症,你的任务是来预测哪些人得了这种病症。你预测出了200人得了癌症,其中: * TP,True Positive:得了癌症而且你也预测出来的病人有60人; * FP,False Positive:没有的癌症但是你预测得了癌症的有140人。 * TN,True Negative:没有得癌症并且你也预测对没有得癌症的有9760人;* FN,False Negative:得了癌症但是你没有预测出来的病人有40人;

那么:

True Positive Rate(TPR): 60/(60+40)=0.6

False Positive Rate(FPR): 140/(9760+140)=0.0141

accuracy: (9760+60)/10000=0.982

precision: 60/(60+140)=0.3

recall: 60/100=0.6

简单的说,在上述癌症检测中(正反例极度不平衡的情况下),accuracy意义不大,从结果中可看出,因为正例比较少,所以检测再不怎么准确,其accuracy值都很高。recall则是相对于真实情况而言的,你正确检测了60例癌症病人,总癌症病人有100例,那么recall则为60%。precision则是相对于模型预测情况而言的,你预测了200例癌症病人,其中预测准确的有60例,那么precision则为30%;所以我们是希望能看到模型的recall和precision都很高,但是一般两者难以同时达到最优值,需要做一个权衡。——AUC和ROC可用来评判二分类的权衡,即评估算法模型的泛化能力。

补充一个概念,截断点:机器学习算法对test样本进行预测后,算法模型对各个test样本属于某一分类的概率进行输出(或叫打分score)。若设定一个阈值(即截断点)为0.5,则认为打分大于或等于0.5的样本,它的预测类别都属于正例P,小于0.5就属于反例N。

再计算该截断点下,预测与真实分类的TPR与FPR。——截断点取不同的值,TPR和FPR的计算结果也不同,就可以得到一系列坐标点。将截断点不同取值下对应(FPR,TPR)结果画于二维坐标系中得到的曲线,就是ROC曲线。横轴用FPR表示,纵轴为TPR。

image

随着阈值的逐渐减小,越来越多的实例被划分为正类,但是这些正类中同样也掺杂着真正的负实例,即TPR和FPR会同时增大。阈值最大时,对应坐标点为(0,0),阈值最小时,对应坐标点(1,1)。

横坐标FPR(1-Specificity)越大,预测正类中实际负类越多。纵坐标TPR(Sensitivity 正类覆盖率)越大,预测正类中实际正类越多

理想目标:就是对样本分类完全正确,即FP=0,FN=0。则FPR=0,TPR=1 即图中(0,1)点,故ROC曲线越靠拢(0,1)点,越偏离45度对角线越好,Sensitivity、Specificity越大效果越好。

AUC值就相当于ROC曲线的所覆盖的面积,可以从ROC曲线看出AUC值越大,其分类效果越好。

以一个简单的模拟数据来计算下ROC曲线每个点的值——

先有一组真实分类,比如0,1,0,1(0表示N,1表示P);然后模型对4个样本进行预测打分(score),比如:0.2,0.3,0.5,0.8

score即各个样本属于P正例的概率。将上述打分排序,然后依次取为截断点,计算每个样本输出概率下的FPR和TPR:

(1)首先截断点为0.2

说明score>=0.2时,则样本的预测类别就为正例,因为4个样本的score都>=0.2,所以均为正例,这时的TPR=1,FPR=1

image

(2)截断点为0.3,因此当概率大于等于0.3时预测为P正例,因此样本1score小于0.3,预测为反例;样本2-4都为正例,这时的TPR=1,FPR=0.5

[图片上传中...(image-e83359-1663291219423-3)]

(3)截断点0.5时,因为4个样本的score有2个大于等于0.5。所以,所有样本的预测类有2个为P(1个预测正确,1一个预测错误);2个样本被预测为N(1个预测正确,1一个预测错误)。TPR=0.5,FPR=0.5

[图片上传中...(image-831553-1663291219423-2)]

(4)当为0.8时,说明只要score>=0.8,它的预测类别就是P。所以,所有样本的预测类有1个为P(1个预测正确);3个样本被预测为N(2个预测正确,1一个预测错误)。TPR=0.5,FPR=0

[图片上传中...(image-6c1095-1663291219423-1)]

将结果中的FPR与TPR画到二维坐标中,得到的ROC曲线如下(蓝色线条表示),ROC曲线的面积用AUC表示(淡黄色阴影部分)。

[图片上传中...(image-1b7781-1663291219423-0)]


上述计算方法可看出,ROC一般是只用于二分类器的预测评价;我们也可以用工具来检验下上述的计算结果,Python可以用sklearn,R可以用ROCR包或者pROC包,这里以ROCR包来检验下上述计算结果:


library(ROCR)

y <- c(0,1,0,1)

p <- c(0.2,0.3,0.5,0.8)

pred <- prediction(p, y)

perf <- performance(pred, "tpr", "fpr")

perf

> perf

An object of class "performance"

Slot "x.name":

[1] "False positive rate"

Slot "y.name":

[1] "True positive rate"

Slot "alpha.name":

[1] "Cutoff"

Slot "x.values":

[[1]]

[1] 0.0 0.0 0.5 0.5 1.0

Slot "y.values":

[[1]]

[1] 0.0 0.5 0.5 1.0 1.0

Slot "alpha.values":

[[1]]

[1] Inf 0.8 0.5 0.3 0.2

https://www.plob.org/article/22895.html

https://www.plob.org/article/22905.html

https://www.plob.org/article/22899.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,001评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,210评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,874评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,001评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,022评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,005评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,929评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,742评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,193评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,427评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,583评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,305评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,911评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,564评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,731评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,581评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,478评论 2 352

推荐阅读更多精彩内容