莫丽

2021-01-17   阅读量: 1425

Python Scikit-learn ROC曲线

ROC曲线:比较两个分类模型好坏的可视化工具

扫码加入数据分析学习群

ROC曲线的作用:

1.较容易地查出任意界限值时的对类别的识别能力

2.选择最佳的诊断界限值。ROC曲线越靠近左上角,试验的准确性就越高。最靠近左上角的ROC曲线的点是错误最少的最好阈值,其假阳性和假阴性的总数最少。

3.两种或两种以上不同诊断试验对算法性能的比较。在对同一种算法的两种或两种以上诊断方法进行比较时,可将各试验的ROC曲线绘制到同一坐标中,以直观地鉴别优劣,靠近左上角的ROC曲线所代表的受试者工作最准确。亦可通过分别计算各个试验的ROC曲线下的面积(AUC)进行比较,哪一种试验的AUC最大,则哪一种试验的诊断价值最佳。

ROC曲线到底是什么?

ROC曲线是根据一系列不同的二分类方式(分界值或决定阈),以真阳性率TPR(灵敏度)为纵坐标,假阳性率FPR(1-特异度)为横坐标绘制的曲线。

那么TPR和FPR都是什么意思?先看下混淆矩阵这样可以一目了然的看出正确分类和错误分类的样本数量,

准确率precision=(TP+TN)/(P+N)

但是在实际应用中,我们感兴趣的类往往只占少数,所以在test集存在类不平衡的情况下,准确率对于我们的模型意义很小,eg:test中续费90,流失10,即使你把所有的样本预测为续费,准确率依然为90%,但对于我们感兴趣的流失用户而言,这个模型没有什么意义

现实中我们更在乎的其实是召回率,即灵敏度,当然我们一般关注较高的是我们感兴趣类的召回率

recall =TP/(TP+FN)=TP/P

F度量则对准确率和召回率做一个权衡

F=(1+a2)*precision*recall/(a*precision+recall)

a2是a的平方,一般默认a= 1

定义

TPR = TP/P 即召回率公式

FPR = FP/N 即1-specificity

ROC曲线是以FPR为横坐标,以TPR为纵坐标,以概率为阈值来度量模型正确识别正实例的比例与模型错误的把负实例识别成正实例的比例之间的权衡,TPR的增加必定以FPR的增加为代价,ROC曲线下方的面积是模型准确率的度量

所以根据ROC曲线定义可知,绘制ROC要求模型必须能返回监测元组的类预测概率,根据概率对元组排序和定秩,并使正概率较大的在顶部,负概率较大的在底部进行画图

ROC曲线

随机猜测的曲线是默认正负都按照0.5概率平均分类时的ROC曲线,那么离随机猜测曲线较远的点就是最好的概率选择阈值,该图中的凸包旁边点对应的概率就是我们所要选择的概率,即根据ROC凸点选择概率阈值和根据凸点判断两个模型好坏的由来。

在分类模型中,ROC曲线和AUC值经常作为衡量一个模型拟合程度的指标


添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
297.6625 2 1 关注作者 收藏

评论(1)

Pedro198946
2021-01-17

很棒的总结,感谢分享!

0.0000 0 0 回复

推荐课程

推荐帖子