机器学习实战---详解模型评价指标

作者:王千发

编辑:王抒伟

全篇概述:

对于分类算法,我们熟知的评价指标是准确率(accuracy),但是在实际问题中,我们想要得到一个优秀的模型,仅仅使用准确率是不够的。

比如在,乳腺癌数据集中:

其中201名没有复发(标记为0),85名复发(标记为1)。

显然这是一个不平衡数据集,假如我们的分类模型将所有的患者都预测为未复发,那么这个模型的准确率是(201/286)*100%也就是70.28%,这是一个比较高的准确率了。

但是这样的模型实际上是很差的,将所有的复发的人都预测为不会复发,那么患者得到这个信息之后如果不去检查和治疗,会导致疾病恶化甚至是出现生命危险。

因此,对于这类不平衡数据集,我们需要引入其他评价指标,分类模型的评价指标主要有准确率(accuracy),召回率(recall),精确率(precision),F1-Measure,ROC曲线和AUC等

说明一:

分析:

我们只讨论二值分类器。对于上面乳腺癌数据集来说,假如分类器的预测结 果是将201个未复发患者中190个预测为未复发,21个预测为复发;85个复发患 者中,80个预测为复发,5个预测为未复发,可以得到如下一张表

这就是所谓的混淆矩阵(Confusion Matrix),通过混淆矩阵,我们很容易能够得到这几个值,TP=80,FN=5,FP=21,TN=190。

那么准确率的公式就是A=(TP+TN)/(TP+FN+FP+TN)*100%,召回率的公式是R=TP/(TP+FN)*100%,精确率的公式为P=TP/(TP+FP)*100%。

其中,准确率描述的是所有被预测的结果中预测正确的比例,召回率描述的是所有实际为正类的被预测为正类的比例(有一部分会被预测为负类),而精确率描述的是在预测为正类的结果中(有一部分实际上为负类)。

实际上是确实是正类的比例。而F1值是召回率和精确率的调和均值,也就是F=2*P*R/(P+R),是综合了二者之后的评价模型的指标。

说明二:ROC曲线和AUC值

接下来介绍ROC曲线和AUC值,下面是ROC曲线的示例:

正如我们从示例图中看到的,ROC

曲线的横坐标为false positive rate(FPR),纵坐标为true positive rate(TPR)。其中,FPR=FP/(FP+TN)负样本的判错率,TPR=TP/(TP+FN)正样本的判对率,接下来我们考虑ROC曲线图中的四个点和一条线。

第一个点,(0,1),即FPR=0, TPR=1,这意味着FN(false negative)=0,并且FP(false positive)=0。Wow,这是一个完美的分类器,它将所有的样本都正确分类。

第二个点,(1,0),即FPR=1,TPR=0,类似地分析可以发现这是一个最糟糕的分类器,因为它成功避开了所有的正确答案。第三个点,(0,0),即FPR=TPR=0,即FP(false positive)=TP(truepositive)=0,可以发现该分类器预测所有的样本都为负样本(negative)。

类似的,第四个点(1,1),分类器实际上预测所有的样本都为正样本。经过以上的分析,我们可以断言,ROC曲线越接近左上角,该分类器的性能越好,也就是说,ROC曲线所包围的面积越大,分类器的性能越好。

说明三:如何画ROC曲线

对于分类器而言,都有概率输出的功能,拿逻辑回归来举例,我们得到的是该样本属于正样本的概率和属于负样本的概率,属于正样本的概率大,那么就判为正类,否则判为负类,那么实质上这里的阈值是0.5。

假如我们有20个样本,“Class”一栏表示每个测试样本真正的标签(p表示正样本,n表示负样本),“Score”表示每个测试样本属于正样本的概率

分析:

第一行就是说样本1,实际是正样本,分类器认为它属于正样本的概率为0.9。接下来将score按照从大到小排列,依次作为阈值,那么我们能够得到20组(FPR,TPR)的坐标,绘制出来的图像就是ROC曲线。

比如,首先是将1作为阈值,属于正类的概率大于1才会被判为正类,那么FPR=TPR=0,以此类推。

AUC(AreaUnder Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。

使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。以上这些指标和ROC曲线绘制,通过sklearn包中metrics模块都可以比较容易实现。

说明四:总结

回到乳腺癌复发预测问题中,我们知道了仅仅使用准确率来评价模型是不够的,我们要计算出模型的召回率和精确率,在这个问题中,我们可以容忍FP,也就是将不会复发预测为会复发,大不了进行医学检查后发现不会复发。

但是不能容忍FN,也就是将会复发的患者预测为不会复发,这会带来很严重的后果。

也就是说我们希望召回率越大越好,尽量所有的正类都被预测为正类,精确率要求不那么高,即使负类被预测为正类也是可以的,那么我们就可以牺牲精确率来提升召回率。

首先可以画出分类器的ROC曲线来判断分类器本身的性能,ROC曲线越靠左上角,AUC值越接近1,分类器效果越好。

改变分类器的阈值,来提升模型的召回率,一般来说会牺牲精确率,不过是可以接受的,这样就可以将一个比较差的模型改造为一个可以使用的模型。

但是在实际中需要根据实际情况分析,比如我们要做的是垃圾邮件判断,那么此时召回率就不如精确率重要了,万一把重要邮件判断为垃圾邮件,还是比较棘手的。

说明五:参考资料

  1. https://machinelearningmastery.com/classification-accuracy-is-not-enough-more-performance-measures-you-can-use/
  2. http://alexkong.net/2013/06/introduction-to-auc-and-roc/
  3. https://blog.argcv.com/articles/1036.c

本文函数都是深度学习常用的激活函数当然还有其它的,大家可以维基百科!

原文发布于微信公众号 - 机器学习算法全栈工程师(Jeemy110)

原文发表时间:2017-10-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT派

一份数学小白也能读懂的「马尔可夫链蒙特卡洛方法」入门指南

IT派 - {技术青年圈} 持续关注互联网、大数据、人工智能领域 大多数时候,贝叶斯统计在结果在最好的情况下是魔法,在最糟糕时是一种完全主观的废话。在用到贝...

3675
来自专栏机器学习算法全栈工程师

机器学习各种熵:从入门到全面掌握

作者: 黄海安 编辑: 陈人和 概述 信息熵是信息论和机器学习中非常重要的概念,应用及其广泛,各种熵之间都存在某些直接或...

55811
来自专栏AI研习社

开发者自述:我是怎样理解支持向量机(SVM)与神经网络的

SVM与神经网络 支持向量机并不是神经网络,这两个完全是两条不一样的路吧。不过详细来说,线性SVM的计算部分就像一个单层的神经网络一样,而非线性SVM就完全...

3456
来自专栏数据科学与人工智能

【陆勤践行】机器学习分类器选择

你知道如何为你的分类问题选择合适的机器学习算法吗?当然,如果你真正关心准确率,那么最佳方法是测试各种不同的算法(同时还要确保对每个算法测试不同参数),然后通过交...

19410
来自专栏人工智能LeadAI

如何理解SVM | 支持向量机之我见

囫囵吞枣看完SVM,个人感觉如果不好好理解一些概念,或说如果知其然而不知其所以然的话,不如不看。因此我想随便写一写,把整个思路简单地整理一遍。:) SVM与神经...

36315
来自专栏人工智能LeadAI

机器学习实践中应避免的七种常见错误

摘要:在机器学习领域,每个给定的建模问题都存在几十种解法,本文作者认为,模型算法的假设并不一定适用于手头的数据;在追求模型最佳性能时,重要的是选择适合数据集(尤...

2795
来自专栏算法channel

BAT面试题1:请简要介绍下SVM

接下来,每天推送1道BAT的面试题,一般问到的这些知识点都是很重要的,所以知道的呢就再复习一下,不知道的赶紧弥补。日积月累,你会在不知不觉中就已入机器学习的大门...

652
来自专栏WOLFRAM

Mathematica 11在概率和统计方面的新功能

1633
来自专栏PPV课数据科学社区

传说中的贝叶斯统计到底有什么来头?

贝叶斯统计在机器学习中占有一个什么样的地位,它的原理以及实现过程又是如何的?本文对相关概念以及原理进行了介绍。 引言:在很多分析学者看来,贝叶斯统计仍然是难以理...

2856
来自专栏懒人开发

(3.6)James Stewart Calculus 5th Edition:Implicit Differentiation

例如: x^2 + y^2 = 25 这个时候,我们知道 如果是函数, 用竖线检测, 需要把图像拆分

804

扫码关注云+社区