什么是ROC曲线
ROC曲线是Receiver Operation Characteristic Curve的简称,中文名为“受试者工作特征曲线”。ROC曲线的横坐标的假阳性率(False Positive Rate,FPR);纵坐标为真阳性率(True Positive Rate,TPR)。FPR和TPR的计算方法分别为
上式中,P是真实的正样本的数量,N是真实的负样本的数量,TP是P个正样本中被分类器预测为正样本的个数,FP是N个负样本中被分类器预测为正样本的个数。
如何绘制ROC曲线
在二值分类问题中,模型的输出一般都是预测样本为正例的概率。假设测试集中有20个样本,样本按照预测概率从高到低排序。在输出最终的正例、负例之前,我们需要指定一个阈值,预测概率大于该阈值的样本会被判为正例,小于该阈值的样本则会被判为负例。
| 样本序号 | 真实标签 | 模型输出概率 |
|---|---|---|
| 1 | p | 0.9 |
| 2 | p | 0.8 |
| 3 | n | 0.7 |
| 4 | p | 0.6 |
| 5 | p | 0.55 |
| 6 | p | 0.54 |
| 7 | n | 0.53 |
| 8 | n | 0.52 |
| 9 | p | 0.51 |
| 10 | n | 0.505 |
| 11 | p | 0.4 |
| 12 | n | 0.39 |
| 13 | p | 0.38 |
| 14 | n | 0.37 |
| 15 | n | 0.36 |
| 16 | n | 0.35 |
| 17 | p | 0.34 |
| 18 | n | 0.33 |
| 19 | p | 0.30 |
| 20 | n | 0.1 |
如何计算AUC
AUC指的是ROC曲线下的面积大小,该值能够量化地反映基于ROC曲线衡量出的模型性能。计算AUC值只需要沿着ROC横轴做积分就可以了。由于ROC曲线一般都处于y=x这条直线的上方(如果不是的话,只要把模型预测的概率反转成1−p就可以得到一个更好的分类器),所以AUC的取值一般在0.5~1之间。AUC越大,说明分类器越可能把真正的正样本排在前面,分类性能越好。
import numpy as npfrom sklearn.metrics import roc_auc_scorey_true = np.array([0, 0, 1, 1])y_scores = np.array([0.1, 0.4, 0.35, 0.8])roc_auc_score(y_true, y_scores)
ROC曲线相比P-R曲线有什么特点
相比P-R曲线,ROC曲线有一个特点,当正负样本的分布发生变化时,ROC曲线的形状能够基本保持不变,而P-R曲线的形状一般会发生较剧烈的变化。
