分类器性能指标:混淆矩阵、ROC曲线和AUC

分类任务最常用的性能评估指标:混淆矩阵、准确率、召回率、精确率、F1以及AUC、ROC。

混淆矩阵

在实际问题中,我们往往更关注模型对某一特定类别的预测能力,这时,准确性指标就变得笼统了。比如在诊断肿瘤问题上,医生更关心多少恶性肿瘤被正确检出【召回率Recall】,而求诊人也害怕被错误检出,遭受精神折磨【精确率Precision】;在信用卡欺诈检测上,银行更关注多少欺诈用户被正确检出【覆盖率Recall】。在二分类任务下,预测结果和正确结果之间存在4种不同组合,构成混淆矩阵。恶性肿瘤为阳性(Positive),良性肿瘤为阴性(Negative),那么预测正确的恶性肿瘤为真阳性(TP),预测正确的良性肿瘤为真阴性(TN),原本是良性误判为恶性的是假阳性(FP),原本是恶性但误判为良性的是假阴性(FN)。最不愿意看到的就是假阴性,因为这会耽误治疗,会给银行造成坏账损失。

评价指标
准确率 A c c u r a c y = # T P + # T N # T P + # T N + # F P + # F N Accuracy=\frac{\#TP+\#TN}{\#TP+\#TN+\#FP+\#FN} Accuracy=#TP+#TN+#FP+#FN#TP+#TN

召回率 R e c a l l = # T P # T P + # F N Recall = \frac{\#TP}{\#TP+\#FN} Recall=#TP+#FN#TP

精确率 P r e c i s i o n = T P T P + F P Precision=\frac{TP}{TP+FP} Precision=TP+FPTP

尽管有精确率和召回率指标,但它们并不能同时达到最优,需要妥协【trade-off】,达成最佳。
妥协方式是根据应用场景而有所侧重,通过改变分类器的Threshold来实现最优。在需要高精确率场景【比如侧重于患者不恐慌】,提高Threshold来提高准确率,但此时可能错过有问题的患者,召回率降低;在需要高召回率场景【宁可错不可放过】,减少Threshold来避免放过,但此时可能误诊,精确率低。
为了综合考量召回率与精确率,F1指标:
F 1 = 2 1 P r e c i s i o n + 1 R e c a l l F1 = \frac{2}{\frac{1}{Precision}+\frac{1}{Recall}} F1=Precision1+Recall12

ROC和AUC

ROC曲线绘制不同Threshold下的真正例率和假正例率。曲线越接近左上方分类器性能越好。AUC【Area Under Curve】是以数值形式来描述模型的性能,便于比较多个分类器。AUC越大越好。
在这里插入图片描述
真正例率(覆盖率) T P R = # T P # T P + # F N TPR=\frac{\#TP}{\#TP+\#FN} TPR=#TP+#FN#TP
假正例率【阴性被误诊为阳性】 F P R = # F P # T N + # F P FPR=\frac{\#FP}{\#TN+\#FP} FPR=#TN+#FP#FP

根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出FPR和TPR,分别作为横纵坐标,得到ROC曲线。利用ROC曲线,我们考量不同分类阈值下分类器的泛化性能。

一个可视化的基于ROC选取模型的网页→ROC可视化
由图可知:

  1. 降低Threshold,会有更多的正例结果出现,TP与FP都会增加,TN和FN降低,此时假正例率升高,真正例率升高。
  2. 负例与正例的距离越远,分类器的效果越好,ROC曲线越接近左上角,AUC越接近1.

参考

《Python机器学习及实践从零开始通往Kaggle竞赛之路》
《机器学习_ 学习笔记 (all in one)_V0.96》

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值