r 语言roc_「R」ROC三剑客(一)使用R语言手撕ROC曲线

本文介绍了ROC曲线的基本原理和应用场景,强调其不仅用于机器学习评估,还适用于任何二分类结果的阈值评估。文章通过R语言详细解释了如何手动计算假阳性率和真阳性率,并提供了自定义函数`calcROC`来绘制ROC曲线。函数`calcROC`接受数据框、预测变量、目标变量和分组参数,返回包含所需统计数据的数据框,可用于进一步的图形绘制。
摘要由CSDN通过智能技术生成

之前因工作需要绘制ROC曲线,所以对该曲线的计算细节进行了一番摸索。刚开始我搜索ROC曲线一般跟机器学习相关联,导致我对它的概念有了曲解,理所当然地以为它只是一个用于机器学习的分类器评估标准,所以在绘制曲线前应当使用逻辑回归等模型对数据建模分析。实则不然,ROC曲线适用于任何判断0-1类型(真假、成功失败等二分类)响应结果阈值分割效果的评估。这个道理我在2018年前后是不懂的,当时一想到画ROC、计算AUC就懵逼。

下面一段引用非常清楚地描述了ROC原理和应用。

对于0,1两类分类问题,一些分类器得到的结果往往不是0,1这样的标签,如神经网络得到诸如0.5,0.8这样的分类结果。这时,我们人为取一个阈值,比如0.4,那么小于0.4的归为0类,大于等于0.4的归为1类,可以得到一个分类结果。同样,这个阈值我们可以取0.1或0.2等等。取不同的阈值,最后得到的分类情况也就不同。如下面这幅图:

蓝色表示原始为负类分类得到的统计图,红色表示原始为正类得到的统计图。那么我们取一条直线,直线左边分为负类,直线右边分为正类,这条直线也就是我们所取的阈值。阈值不同,可以得到不同的结果,但是由分类器决定的统计图始终是不变的。这时候就需要一个独立于阈值,只与分类器有关的评价指标,来衡量特定分类器的好坏。还有在类不平衡的情况下,如正样本有90个,负样本有10个,直接把所有样本分类为正样本,得到识别率为90%,但这显然是没有意义的。如上就是ROC曲线的动机。

在R里面,有ROCR与专门的机器学习包mlr(现在是mlr3了)可以进行建模和绘制ROC曲线,以及相关参量的计算。实际上&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值