数据分析-评估指标(F1score和ROC曲线)

这里我介绍数据分析的两个评估指标,F1 scoreROC曲线,在介绍F1 score跟ROC曲线之前,我们要先了解以下概念:

  • 混淆矩阵
  • 准确率
  • 精准率
  • 召回率

混淆矩阵

什么是混淆矩阵,我们来看下图:


i混淆矩阵

注意,在上图中,蓝点是阳性,红点是阴性。
一般从医学角度说,阳性(positive),代表有病或者有病毒,阴性(negative),代表正常。

  • 真阳性(true positive)是指确定有病或者有病毒,
  • 真阴性(true negative)是指确定正常,
  • 假阳性(false positive)是指因为种种原因把不具备阳性症状的人检测出阳性的结果。其实就是将没病的检查成有病的,假阳性检测结果易造成误诊,
  • 假阴性(false negative)就是将有病的检查为没病,假阴性结果导致漏诊。

我们来上述模型有多少真阳性、真阴性、假阳性、假阴性?



上图,这就是混淆矩阵。

准确率

下面我们来学习衡量模型性能的一种方式,准确率。
准确率是什么?我们继续引用上面的图片


准确率就是在图表所有数据里,正确分类的点有多少,就是正确分类的点和总点数的比例;数学公式就是准确率=正确分类的点/总点数。
上图中,正确分类=真阳性(6)+ 真阴性(5)= 11;总点数为14

上图的准确率=11/14=0.7857

精准率

在了解精准率之前,我们来看看下面的医学预测图:


医学模型的混淆矩阵

精准率的定义就是在所有预测阳性的点里有多少是真阳性?换种说法就是在所有诊断为病人中,有多少是真正的病人?

在图中可以看出,精准率都在Diagnosed sick 这一列


这一列都是诊断为阳性的数据。真阳性的数量是1000,所有阳性的数量是1000+800=1800;

所以精准率(precision) = 1000/1800=55.6%

那下图的精准率呢?


精准率=6/8=75%

召回率

精准率是在所有预测所有诊断为病人中,有多少是真正的病人,召回率是在所有真正病人中,有多少是成功诊断为病人。召回率这里所有真正的病人是真阳性(true positive)跟 假阴性(false negative)的和,因为假阴性(false negative)是是将有病的检查为没病也是病人。

所以召回率是统计sick 这一行


这一列都是诊断为阳性的数据。真阳性的数量是1000,所有病人的数量是是真阳性(true positive)跟 假阴性(false negative)的和,1000+200=1200;

所以召回率(recall) = 1000/1200=83.3%

那下图的召回率呢?


召回率(recall) =6/7=85.7%

F1 score

在上面我们已经学习了精准率(precision) 跟召回率(recall) 了,从上面我们知道医疗模型的精准率(precision) 55.6%,召回率(recall) 是 83.3%,这是个高召回率模型(如果精准率(precision) 高,召回率(recall) 低那就是高精准率模型)。

现在问题是,这里有两个指标,我们每次判断模型是高精准率模型还是高召回率模型都要使用这个两个指标来判断么,这样很不方便,有没有一个指标就可以直接判断出来,这个指标就是F1 score。

问题是我们怎么把这个两个分数合并在一起呢?你能想出方法来么,有个简单的方式就是取精准率(precision) 跟召回率(recall) 这个两个数的平均值,我们可以得到平均值(55.6%+83.3%)/2=69.45%,这是一个可以接受的指标,但是取平均值没有给我们提供更多的信息,我们来在一个极端的例子来检验平均值;

比如以信用卡欺诈检测为例,图中我们有很多正常和欺诈的交易



从图中可以算出,欺诈交易比例=472/(472+284335)=0.16%。

  • 如果我们定义一个极端的模型,所有交易都是好的。



    我们使用混淆矩阵来分析它,上面《全部交易都是好的》极端模型有真阳性(0)、真阴性(284335)、假阳性(0)、假阴性(472)
    该模型的精准率(precision)是就是所有我们判断为欺诈行为里面有多少真正的欺诈交易,因为我们定义所有交易都是正常的,所以我们没有发现任何欺诈交易,
    所以精准率(precision)=0/0,因为0不能相除,我们可以认为精准率(precision)是100%,召回率(recall) 就是真正的欺诈交易里,有多少我们成功判断为欺诈行为,
    所以召回率(recall)=0/472=0%。
    如果是取平均值作为指标来判断的话,这里平均值就是50%;
    在这样极端模型里面使用50%来判断欺诈交易分数太高了,我们应该给一个更低的分数,甚至是零分,所以使用平均值作为指标不合理;

  • 我们来再定义一个相反的极端模型,所有交易都是欺诈交易


我们使用混淆矩阵来分析它,上面《全部交易都是欺诈交易》极端模型有真阳性(472)、真阴性(0)、假阳性(284335)、假阴性(0)
该模型的精准率(precision)是就是所有我们判断为欺诈行为里面有多少真正的欺诈交易,因为我们定义所有交易都是欺诈交易,所以精准率(precision)=472/(472+284335)=0.16%,召回率(recall) 就是真正的欺诈交易里,有多少我们成功判断为欺诈行为,所以召回率(recall)=472/472=100%。

如果是取平均值作为指标来判断的话,这里平均值就是50.08%;
在这个极端模型里面使用50.08%来判断欺诈交易分数还是太高了,我们应该给一个更低的分数,甚至是零分,所以取平均值作为指标不是最好的方法。

原则上如果精准率(precision)和召回率(recall)有一个值非常低,即使另一个指标非常高,我们也想给它一个低分,这里有一个解决方案,就是调和平均值
它的工作原理如下:
假设我们有两个值:x,y,x比y小,中间的值就是平均值,比平均值小的就是调和平均值,调和平均值总是小于平均值,如果两个x和y值相等,调和平均值就是平均值。调和平均值比较接近较小的数值,而不是较大的数值。所以调和平均值总是接近精准率(precision)和召回率(recall)之中的最小值。

F1 得分练习
接下来,请记住 F1 得分的公式为:


F1 score

​F-β score

注意,在 F-β 得分公式中,如果设β=0, 则



因此, β 的最低值为 0,这时候就得出高精准率。

注意,如果 N 非常大,则



随着 Nˉ2 变成无穷大,可以看出,1/1+Nˉ2 变成 0,并且Nˉ2/1+Nˉ2会变成 1,
因此,如果取极限值,则



这时候就得出高召回率。

因此,得出结论:β 的界限在 0 和 无穷大∞ 之间。

  • 如果 β=0, 则得出精度。
  • 如果 β=∞, 则得出召回率。
  • 对于 other values of β, 的其他值,如果接近 0,则得出接近精度的值,如果很大,则得出接近召回率的值,如果 β=1, 则得出精度和召回率的调和平均值(F1 score)

练习:
在下面的三个模型中,哪个的 F-β 得分应该是 2、1 和 0.5?每个模型的相应的得分应该是多少?

  • 检测宇宙飞船的故障零件
  • 向手机中发送关于用户可能喜欢的视频的通知
  • 向潜在客户寄送免费样品

答案是宇宙飞船的β 值是2,手机通知是1,免费样品是0.5

解答:对于宇宙飞船,我们不允许出现任何故障零件,可以检查本身能正常运转的零件。因此,这是一个高召回率模型,因此 β = 2。
对于通知模型,因为是免费发送给客户,如果向更多的用户发送邮件也无害。但是也不能太过了,因为可能会惹怒用户。我们还希望找到尽可能多感兴趣的用户。因此,这个模型应该具有合适的精度和合适的召回率。β = 1 应该可行。
对于免费样品模型,因为寄送样品需要成本,我们不希望向不感兴趣的用户寄送样品。因此是个高精度模型。β = 0.5 应该可行。

ROC曲线

在了解ROC曲线是怎么形成的,ROC将伪阳性率(FPR)定义为 X 轴,真阳性率(TPR)定义为 Y 轴,根据多种划分方式,得到一组(x,y)轴数据来组成的曲线, 我们来看下图,假设红蓝点都在一条线上,我们怎么划分它们呢,可以有很多中划分,比如图中红色划线的5种划分方式;


现在我们来说一下它们的伪阳性率(FPR)跟真阳性率(TPR)是多少?
首先我们来看最左边的划线,算一下(x,y)的值是多少
伪阳性率(flase positive rate)= false positives/ all negatives = 7/7=1;
真阳性率(true positive rate)= true positives/ all positives = 7/7=1;

然后我们来看最右边的划线,算一下(x,y)的值是多少
伪阳性率(flase positive rate)= false positives/ all negatives = 0/7=0;
真阳性率(true positive rate)= true positives/ all positives = 0/7=0;

从中可以看出,不管数据极端怎么变好,计算的坐标值都是在(0, 0) 到 (1,1) 的之间;

我们来看一下中间那条线的划分的(x,y)的值是多少
伪阳性率(flase positive rate)= false positives/ all negatives = 2/7=0。286;
真阳性率(true positive rate)= true positives/ all positives = 6/7=0.857;

你们可以移动该线条,计算不同的(x,y)的值,这里我就不一一计算了,计算出来的(x,y)数组,就可以画出ROC曲线。



从图中数据,我们可以计算ROC曲线的面积大概是area = 0.8;
不用的模型画出的ROC曲线不同,大概有下图的三种不同模型的ROC曲线;


不同模型的ROC曲线

第一种是随机划分的模型,第二种是比较好的划分模型,第三种是完美划分模型,随机划分的模型ROC曲线面积大概接近0.5,比较好的划分模型ROC曲线面积大概接近0.8,完美划分模型ROC曲线面积大概接近1,总的来说,ROC曲线面积越来越接近1,模型就越好。

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