ROC曲线(receiver operating characteristic curve)是一种评价分类模型的可视化工具
最早用于描述分类器命中率与误报率的权衡关系。
ROC曲线的横纵坐标均为0到1,其中,横坐标为假正率FPR,纵坐标为真正率TPR。
ROC曲线的凸起程度越高,模型性能越好。对角线表示随机猜测,没有任何预测的价值。
AUC表示ROC曲线下方的面积。
AUC = 1表示完美分类器,该模型至少存在一个阈值,可以将正负样本完美地分开。
0.5 < AUC < 1表示优于随机猜测,数值越大,分类器越好。
分类模型的输出结果中包含一个0到1的概率值,该概率代表着对应的样本被预测为某类别的可能性。
定义:
- FPR = 错误的预测为正的数量 / 原本为负的数量
- TPR = 正确的预测为正的数量 / 原本为正的数量
- FPR和TPR的分子分母都不相等,因此相加并不为1
ROC的曲线绘制步骤:
1 将全部样本按概率递减排序;
2 阈值从1至0变更,计算各阈值下对应的(FPR,TPR)数值对;
3 将数值对绘于直角坐标系中。
可以将横轴理解为代价,纵轴理解为收获
举例:
某个商家最近推出一款产品,希望能以电话推销的方式向其客户推荐该产品。考虑到客户的数量太多,希望我帮他找出哪些客户最有可能购买产品,以便有针对性地进行推销。
我们根据历史的数据训练出一个模型M,M对应的ROC曲线如图所示,ROC曲线中某一个阈值会对应着某一个坐标。
在该阈值下,模型的FRP(假正率)为0.2,TPR(真正率)为0.8,模型取到该阈值时,我们提供的名单,也就是我们对1000个人每个人都进行预测其正负,产生1000个预测结果。假设该商家的客户有1000人,其中有400人会购买,而600人不会购买,这个是真实的。
代入公式:
1000人 真实: 400人为正 600人为负
TPR = 正预测为正 / 实际为正
0.8 = 正预测为正 / 400
正预测为正 = 320
FPR = 负预测为正 / 实际为负
0.2 = 负预测为正 / 600
负预测为正 = 120
因此,我们的预测模型,在该特定阈值下,对所有的顾客进行预测。
预测结果为正的共有320 + 120 = 440人,其中有320人是实际为正的,120人是实际为负的,但是我们认为他也是正的
这个结果中包含2个部分,第一部分是全部会购买该产品的客户数量的80%,第二部分是全部不会购买该产品数量的20%。
在该模型的该阈值下,商家根据数据分析师提供的名单进行推销,提供的名单都是我们的模型认为是正的,能够推销成功的有400*TPR,也就是320人,也就是纵坐标对应的是收获。推销不成功的是600*FPR,为120,虽然被推销,但是也没有成功,这一部分是我们所要付出的代价。
所以横坐标对应的是付出的代价,纵坐标代表着收货,会带来收益。
再举一个例子:
考虑这2个模型
当代价相同(即横坐标轴的FPR相同)时,对比收获(即纵坐标的TPR)
当取得相同的收获时(即纵坐标的TPR),对比横坐标的代价(即横坐标轴的FPR)
来源:bilibili