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

2020-07-17 14:15:01 浏览数 (3)

前面我们已经介绍了逻辑回归、决策树、随机森林这几种常用的分类模型,不知道大家有没有留意到,我们在前面做模型评价的时候都会用到一个指标--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,敬请期待~

0 人点赞