今天看了 一会评价指标的问题,终于把昨天那个AUC曲线为什么不会随正负样本比例变化而变化。
首先我们明确一个概念,不管是ROC曲线还是P-R曲线,都是建立在我们的混淆矩阵的基础上,根据不同的阈值来计算每个点的值,然后画出图像。那在这里,混淆矩阵又是什么呢?就是下面这个表。
属性 | 预测为正样例(P') | 预测为负样例(N') |
---|---|---|
实际为正样例 | TP | FN |
实际为负样例 | FP | TN |
这样一个表格呢,表示的就是混淆矩阵,矩阵的四个值分别是,TP、FN、FP、TN,从表中很容易看出来,TP就是实际为正样例,预测也是正样例,其他以此类推。
那我们平时所说的准确率和召回率是什么呢?
我们通常所说的准确率也叫查准率,理解一下就是分对的除以分为这一类的总数,对于正样例,计算公式是
召回率呢,解释一下就是这一类预测对的除以这一类应有的总数,对于正样例,计算公式为
通常我们用准确率和召回率来衡量分类模型的效果的好坏,准确率越高,就说明你预测为这一类的正确的越多,召回率越高,就说明这一类你都能找到的越多。但是准确率和召回率都是要建立在阈值的基础上的。怎么理解呢,比如对于一个二分类问题,有A和B两类,有三个预测值,0.7,0.8,0.9,那这三个值怎么知道是哪一类呢?我们给一个规则,假设A是正样例,且阈值为0.9,也就是预测值大于等于0.9的时候我们认为是A类。那现在题目的三个值分别对应的就是B,B,A。如果阈值改为0.6呢,那三个都是A类。那么我们就会发现,同样的一批预测值,它的准确率和召回率是随着阈值变化的。
这时候就引出了P-R曲线。
什么是P-R曲线?
P-R曲线的横坐标是召回率,纵坐标是精确率。对于一个排序模型来说,其P-R曲线上的一个点代表着,在某一阈值下,模型将大于该阈值的结果判定为正样本。整条P-R曲线是通过将阈值从高到低移动而生成的。所以我们就可以整体地比较,在不同阈值下模型预测的水平。
但是有一个问题是,离线评测数据集的数据分布往往跟线上环境的数据集分布不同,比如你的离线数据集正负样本比例1:1,线上样本比例1:100,那这时候你的P-R曲线就不适用了。因为新的结果肯定是偏向于负样本的结果。那这时候就需要ROC曲线出场了。
什么是ROC曲线?
ROC曲线的横坐标为假阳性率(FPR),也就是,纵坐标为真阳性率(TPR),公式为。由这两个公式不难看出,FPR就是负样本的召回率,TPR是正样本的召回率。ROC曲线的绘制方法和P-R曲线是类似的,也是根据不同的阈值来描点。但是ROC有一个很好的性质,就是不受样本比例的干扰,因为它的横纵坐标都是单类的召回率,不管样本量怎么变化,单类内部的召回率是不会变的。因此我们可以用ROC曲线下的面积,也就是AUC来直接进行对比模型的效果。
总结:
- P-R曲线适合对比特定数据集下的模型预测效果好坏。
- ROC曲线适合对比数据集分布变动大时,对模型结果的对比。
网友评论