如何画ROC曲线

假设我们现在要画一个已经训练好的二分类模型A的ROC曲线。

如下是20个测试样本,第一列代表样本id,第二列代表他们的真实类别(p表示正样本,n表示负样本),最后一列代表训练好的模型A认为每个样本是正样本的概率。
在这里插入图片描述

下面就是此训练好的模型A的ROC曲线的画法:

第一步:按照属于‘正样本’的概率将所有样本排序(如上图所示)
第二步:把分类阈值设为最大,即把所有样例均预测为反例,所以此时得到P和R均为0,即(0,0)
第三步:让我们依次来看每个样本。
对于样本1,如果我们将他的score值做阈值,也就是说,只有score大于等于0.9时,我们才把样本归类到正样本,这么一来, 在ROC曲线图中,样本1对应的混淆矩阵(confusion matrix)为:

*预测结果*
真实情况正例反例
正例19
反例010

第一个样本score=0.9,所以预测为正样本,其本身也为正样本,其他样本score都<0.9,所以都预测为负样本,从混淆矩阵中,我们可以算出X轴坐标(false positive rate)= 0/(0+10)= 0 和Y轴坐标(true positive rate)= 1/(1+9)= 0.1,所以第一个点为(0,0.1)

对于样本2,如果我们将他的score值做阈值,也就是说,只有score大于等于0.8时,我们才把样本归类到正样本,这么一来, 在ROC曲线图中,样本2对应的混淆矩阵(confusion matrix)为:

*预测结果*
真实情况正例反例
正例28
反例010

第一个和第二个样本score>=0.8,所以预测为正样本,其本身也为正样本,其他样本score都<0.9,所以都预测为负样本,从混淆矩阵中,我们可以算出X轴坐标(false positive rate)= 0/(0+10)= 0 和Y轴坐标(true positive rate)= 2/(2+8)= 0.2,所以第二个点为(0,0.2)

对于样本3,如果我们将他的score值做阈值,也就是说,只有score大于等于0.7时,我们才把样本归类到正样本,这么一来, 在ROC曲线图中,样本3对应的混淆矩阵(confusion matrix)为:

*预测结果*
真实情况正例反例
正例28
反例19

第一、二、三个样本score>=0.7,所以预测为正样本,第一、二个样本其本身也为正样本,第三个样本其本身为负样本,其他样本score都<0.7,所以都预测为负样本,从混淆矩阵中,我们可以算出X轴坐标(false positive rate)= 1/(1+9)= 0.1 和Y轴坐标(true positive rate)= 2/(2+8)= 0.2,所以第二个点为(0.1,0.2)

后面都类似,依次将分类阈值设为每个样例的预测值,即依次将每个样例划分为正确。一共可以得到20个点,所画的ROC曲线如下图所示:
在这里插入图片描述
样本数量越多,ROC曲线就越平滑。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值