前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >模型评价之混淆矩阵、ROC曲线与AUC

模型评价之混淆矩阵、ROC曲线与AUC

作者头像
用户7569543
发布2020-07-17 14:15:01
1.5K0
发布2020-07-17 14:15:01
举报

前面我们已经介绍了逻辑回归、决策树、随机森林这几种常用的分类模型,不知道大家有没有留意到,我们在前面做模型评价的时候都会用到一个指标--AUC,通过AUC值的大小来评判模型好坏。前面我们有简单提过AUC值越大表示模型效果越好,这到底是为什么呢?本节课就给大家详细讲解分类模型中常用的模型评价方法--混淆矩阵、ROC曲线与AUC。

                      混淆矩阵

我们以常见的二分类问题为例,假设模型预测为正例记为1(positive),反例记为0(negative),那么我们可以根据实际情况与模型预测情况得到以下一张表格,它就是我们常说的混!淆!矩!阵!

其中TP表示预测值为正(positive),实际值也为正(positive);

FP表示预测值为正(positive),实际值为反(negative);

FN表示预测值为反(negative),实际值为正(positive);

TN表示预测值为反(negative),实际值也为反(negative)。

对于预测性分类模型,我们肯定是希望预测结果越准越好。那么,对应到混淆矩阵中,就是希望TP与TN对应位置的数值越大越好,而FP与FN对应位置的数值越小越好。但在模型结果预测中,单看这些对应位置的数值大小往往不够直观,所以我们通常会通过以下几个指标来判定模型结果的好坏。

1.准确率(Accuracy) = (TP + TN) / (TP + FP + FN + TN)

(在整个观察结果中,预测正确的占比)

2.精确率(Precision) =  TP / (TP + FP)(在所有预测为正例的结果中,预测正确的占比)

3.召回率(Recall) = TP / (TP + FN)

(在所有实际值为正例的结果中,预测正确的占比)

4.F1_score = 2*P*R/(P + R)

(P代表精确率,R代表召回率)

注:1、以上几个指标范围在0-1之间,数值越大表示相应结果越好;

2、精确率是针对预测结果而言的,召回率是针对实际结果而言的;

3、混淆矩阵也可以用作多分类问题。

                      ROC曲线

ROC的全称是Receiver Operating Characteristic Curve,中文名字叫“受试者工作特征曲线”,它是代表模型在不同的阈值条件下灵敏性与精确性的变化趋势。

横坐标为假正例率(FPR),纵坐标表示真正例率(TPR),也就是召回率。其中,

FPR = FP / (FP + TN)

TPR = TP / (TP + FN)

(哈哈,到这里大家是不是有点蒙了?)

下面给大家讲解ROC曲线的绘制原理,理解起来就会比较简单了。

如果大家对二分类模型预测结果还有印象的话,一般模型的输出结果都是预测样本为正例(positive)的概率。而事实上,ROC曲线正是通过不断移动分类器(模型)的“阈值”来生成曲线上的一组关键点的。可能这样讲有点抽象,还是举个栗子。比如现在有10个人,每个人都从同一个模型得到预测结果,第一个人认为结果大于0.92就是正例,第二个人则认为结果大于0.87就是正例,第三个人认为结果大于0.76就是正例,依次类推。每个人心中都有自己的一个判断标准(也就是对应模型的不同“阈值”),这样针对每一个人,都能计算出一个ROC曲线上的关键点(一组FPR,TPR值)然后把这10个点连接起来,就得到了一个简单的ROC曲线。

为方便大家进一步理解,下图是一个二分模型真实的输出结果,一共有20个样本,输出的概率Score就是模型判定样本为正例的概率,第二列Class是样本的真实标签(p表示正例,n表示反例)。

现在我们指定一个阈值为0.8,那么只有最前面的2个样本(0.8)会被归类为正例,而其他的所有样本都会被归为反例。因此,对于0.8这个阈值,我们可以计算出FPR为0(别问我为什么,套用前面的公式去计算),TPR为0.2(因为总共10个正样本,预测正确的个数为2),那么我们就知道曲线上必有一个点为(0, 0.2),根据图中依次选择不同的阈值,画出全部的点以后,再连接这些点即可最终得到ROC曲线如下图所示。

                      AUC

还是?图所示,AUC是ROC曲线下面的面积,范围在0-1之间,AUC数值越大表示模型效果越好。若曲线上下两部分面积相等,则它就是y=x直线,此时AUC等于0.5,表示模型的结果相当于随机猜测,没什么效果~

ok,到这里混淆矩阵、ROC曲线与AUC你都懂了吗?不懂就慢慢消化吧。下节课给大家带来更刺激的SVM,敬请期待~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 多赞云数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档