PR曲线(准确率-召回率曲线)
首先祭出这个表~
真实的 正 | 真实的 反 | |
---|---|---|
预测的 正 | TP | FP |
预测的 反 | FN | TN |
准确率 precision=TP/(TP+FP)
召回率 recall=TP/(TP+FN)
ROC曲线
全名是“受试者工作特征曲线”,(纵轴:真正例率,横轴:假正例率)
真正例率(True Postive Rate):(Sensitivity(灵敏度))
TPR = TP/(TP+FN), 代表真实的正类中,有多少预测对了(预测的也是正类)
假正例率(False Postive Rate): (1-Specificity)
FPR = FP/(FP+TN),代表 真正的负类中,有多少被预测成了正类
如何绘制ROC曲线
两种方法:(这里参考《百面机器学习》)
- 设置不同的阈值,对每个阈值分别求TPR和FPR,就可以得到该阈值对应的ROC曲线上的一点,然后绘成一条线,即可得到ROC曲线。
- 首先统计正负样本的数量,假设分别为P和N;接下来把横轴的时间刻度间隔设置为1/N,纵轴设为1/P,在根据模型的输出预测概率对样本进行降序;依次遍历样本,同时从零点开始绘制,每遇到一个正样本就沿纵轴绘制一个刻度间隔的曲线,遇到负样本就沿横轴绘制一个刻度,直到遍历完所有样本,最终曲线停在(1,1)点,ROC曲线绘制完成。
PR曲线和ROC曲线的对比
AUC
AUC是ROC曲线下面积的大小,计算AUC值只需要沿着ROC横轴做积分即可,由于ROC一般处于y=x曲线上方(如果不是的话,只要把模型的预测概率反转成1-p就可以得到一个更好的分类器),所以AUC的取值一般在0.5~1之间。AUC越大,说明分类器越可能把真正的正样本排在前面,分类性能越好。
AUC更透彻的理解
面试的时候,一句话说明AUC的本质和计算规则:
AUC:一个正例,一个负例,预测为正的概率值比预测为负的概率值还要大的可能性。
所以根据定义:我们最直观的有两种计算AUC的方法
1:绘制ROC曲线,ROC曲线下面的面积就是AUC的值
2:假设总共有(m+n)个样本,其中正样本m个,负样本n个,总共有m×n个样本对,计数,正样本预测为正样本的概率值大于负样本预测为正样本的概率值记为1,累加计数,然后除以(m*n)就是AUC的值
PS:百度百科,随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值。这里的score值就是预测为正的概率的值,排在前面表示的是正样本的预测为正的概率值大于负样本的预测为正的概率值
AUC和PR的区别
ROC相比于PR,最大的特点就是,当正负样本的分布发生变化时,ROC的曲线比较稳定,但是PR变化剧烈。因此,ROC能够尽量降低不同测试集带来的干扰,更加客观的衡量模型本身的性能。 因此,ROC应用更广泛。