混淆矩阵、ROC曲线以及AUC计算原理

    本篇讨论内容均建立在二分类问题上,暂不涉及多分类问题评估

1.混淆矩阵

       在二分类问题上,样本类别被分为正类和负类。将样本的真实类别与预测类别结合,便得到4种结果,以表格形式表示得到混淆矩阵。

        结合结果有4种,分别为TP(真正例),FN(假负例),FP(假正例),TN( 真负例)。对应混淆矩阵写法,很容易理解各自意思。比如FN假负例,真实类别为正类却被错误分成负例,因此称为假负例,其余几个可以类推。 通过这4个值,我们可以得到另外两个评价指标:精确率(Precision)和召回率(Recall)(有些人会将精确率和准确率混淆,这里按照单词翻译严格区分)。三者的计算公式分别为:

        准确率即所有预测结果正确的样本(TP+TN)占所有测试样本(TP+TN+FP+FN)的比例;精确率是针对模型预测结果,在模型预测为正类的样本(TP+FP)中,有多少是真正的正类样本(TP);召回率则是针对样本集,在给定样本集的正类样本(TP+FN)中,有多少正类样本被正确预测出来(TP)(对照公式,比较容易理解且记忆)。

       在实际运用中,我们依照不同场景选用不同的评价指标。比如在肿瘤预测上,我们一定是更希望不漏过任何一个可能是患病的检查者,哪怕他表现出一点点患病的症状,我们都宁愿将其认定为患病,让他去做相关检测或治疗,如果没有患病就是最好,防止他确实是患病但却被误判为健康,导致病情恶化。此时我们应该选择召回率高的分类模型(可以见下面具体的案例分析)。既然每个指标各有各的适应场景,有没有一个综合性的指标呢?这里引入F1值。F1值被定义为精确率和召回率的调和平均数,由此得到F1的计算公式为(可自行推导得到):

       在不确定是选用精准率或召回率的情况下,选择F1值较大的模型会是更加折衷的选择。

2.ROC曲线及AUC

       在给定预测样本后,分类模型会给出每个样本的预测概率,这里的概率是模型认为该样本属于正类样本的概率。将其与阈值比较,大于阈值即被认为是正类,小于阈值即被认为是负类。当阈值发生改变,样本的预测类别也会随之改变。比如某个样本的预测概率为0.65,如果阈值为0.5,那该样本会被预测为正类;如果阈值选择为0.7,那该样本会被预测为负类。对于某一个确定的阈值,根据模型得到的概率结果对样本进行分类,将得到的预测结果与样本真实类别结合得到一个混淆矩阵。此时我们再引入两个指标TPR(True Positive Rate)真正例率和FPR(False Positive Rate)假正例率。计算公式为:

       根据混淆矩阵可以计算出该阈值下的TPR和FPR,此时定义点P,其中P(FPR,TPR)。当我们的阈值选的足够多,可以得到相应无数个混淆矩阵,再通过计算可以得到无数个点P,标点连线,得到的曲线即为ROC曲线,这个曲线下围成的图形面积即为AUC值(Area Under the Crave)。

       通过上述描述,可以发现ROC曲线反映的是某个分类模型在所有阈值选择下呈现的效果图,反映的是该分类模型整体的分类性能(因为曲线已经包含了所有的阈值选择)。在同一个坐标系下,绘制出不同分类模型的ROC曲线,如果某条曲线包含了另一条曲线,那么我们可以认为该曲线对应分类模型的分类性能要优于被包含的那条。如果不同的ROC曲线发生交叉,较难判断哪个分类模型到底谁更好,此时利用AUC值求解,AUC值较大的曲线对应的分类模型分类性能更好。(此处为周志华教授西瓜书中文字总结)

3.具体案例解释及个人总结

  1.召回率的模型选择

   以一个案例来说明上文所提到的根据不同业务场景来选择不同的评价指标。

       现在假设有100个体检者,其中10人确认患病,剩余90人确认不患病。我们将患病人员看作正类样本(+),不患病人员看作负类样本(-)。当前有三个分类器给出了各自的预测结果,分类器1预测20人患病,80人不患病,这20人中4人确认患病;分类器2预测30人患病,70人不患病,这30人中5人确认患病;分类器3预测100人全部患病。以此得到各个分类器的混淆矩阵为:

       三个分类器各自的召回率为0.4、0.5、1,准确率分别为0.78、0.7、0.1。单从准确率来看,分类器1的分类性能要优于分类器2,但在这个医疗场景下,我们更倾向于选择分类器2。因为相较于分类器1,分类器2误判的样本数比分类器1少。分类器1中有6个病患被误诊为健康(FN),分类器2有5个病患被误诊为健康(FN)。假设甲乙丙丁4个人都是被分类器1和2正确预测为病患,分类器2预测戊为病患而分类器1预测它为健康,选择分类器1的预测结果就可能导致戊没有被及时确诊患病耽误治疗而出现健康问题。对于分类器3来说,它的召回率最高,按上述解释它应该是最佳选择,因为它将所有的病患全部都准确预测出来了,但是它的分类准确率却是三者中最低的,且F1值也是最低的。如果所有实际上健康但被错误预测为患病的体检者(FP)再去做一次复测,分类器3误判了90人,这90人会再去做复测,相较于分类器1或2,这样消耗了更多的医疗资源,显然也不是我们想看到的。综上,分类器2是在该场景下最佳的选择。

2.AUC的计算

       通过上面介绍的ROC曲线画法,我们可以得到某分类器的ROC曲线,围成的面积即为AUC值。如果按照数学上求解积分的方式来求面积,ROC曲线方程未知,很难求解。关于AUC的求法,这里我是看的该链接,在此就不重复举例,大家自行查看(链接:AUC的计算方法_auc计算_kingsam_的博客-CSDN博客)。我只在此说一下我的个人理解,根据ROC曲线画法及AUC定义发散思维想的,是否准确无法考证,仅当我对AUC值求法的思考,欢迎各位大佬有感悟的教教我。

        AUC衡量的是在不管取什么阈值的情况下,分类模型的性能。在训练得到一个分类模型后,它的分类性能就已经确定了。对预测样本给出预测概率,根据概率计算出该模型的AUC值,这个AUC值是否就可以看成只是对该分类器分类性能的一个定量的直观的描述?我们选择足够阈值,画出ROC曲线,如上述计算过程一样,是在不断逼近AUC值(可能是我一厢情愿的求解)。至于通过AUC值衡量不同分类模型的性能的说法,我们训练得到另一个模型分类器2,对于同样的预测样本,分类器2给出了不同的预测概率(比如对上述例子,分类器2对于样本2和3能够准确判断),通过计算得到的AUC值大于分类器1,即认为分类器2性能更优。(以上均为本人看法,欢迎各位大佬随时指正,respect!

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值