深入理解ROC曲线的定义以及绘制ROC曲线过程,其与模型性能的关系,以及AUC
很多学习器是为测试样本产生一个实值或者是概率预测,然后将这个预测值和一个分类阈值(threshold)进行比较。若大于阈值,则为正类;反之为负类。根据这个学习器计算出来得预测值,我们可以将测试样本进行排序,“最可能”是正例的放在最前面,“最不可能”是正例的排在最后面,这样分类过程就相当于在这个排序中的某个”截断点”(cut point)将样本呢分为两类,前一部分为正例,后一部分为反例。
前面有precision和recall,可以根据对precision和recall的重视程度来选择截断点(cut point);但是排序本身的好坏,体现了综合考虑学习器早不同任务下的“期望泛化性能”的好坏,或者说,一般情况下泛化性能的好坏。ROC曲线则是从这个角度出发研究学习器泛化性能的有力工具。
1.TPR(True Positive Rate)真正例率和FPR(False Positive rate)假正例率
T P R = T P T P + F N = T P P TPR = \frac{TP}{TP + FN} = \frac{TP}{P} TPR=TP+FNTP=PTP
F P R = F P T N + F P = F P N = 1 − T N N FPR = \frac{FP}{TN + FP} = \frac{FP}{N} = 1 - \frac{TN}{N} FPR=TN+FPFP=NFP=1−NTN
由上述公式可以看出TPR == R(recall),有关P,R,TPR,FPR的公式可以见下图:
- 理解TPR和FPR:
- TPR:TPR越大意味着TP越大,也就意味着对于测试样本中的所有正例来说,其中大部分都被学习器预测正确。
- FPR:FPR越小意味着FP越小、TN越大,也就意味着FPR越小,则对于测试样例中的所有反例来说,其中大部分被学习器预测正确。
- 由上面可以看出,一个好的模型是TPR大PFR偏小的。
2.ROC曲线
- ROC曲线: 与前面的P-R曲线相似,我们根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出TPR和FPR,分别以它们为横、纵坐标作图,就得到了 “ROC曲线”.与P - R曲线使用查准率、查全率为纵、横轴不同, R O C曲线的纵轴是“真正例率” (True Positive Rate,简称 TPR),横轴是“假正例率”一(False PositiveRate,简称FPR)
- 如何绘制ROC曲线:给定m+个正例和m-个反例,根据学习器的预测结果进行排序,然后把分类阈值设为最大,即把所有样例均预测为反例,此时TPR和FPR均为0,然后把阈值依次设为每个样例的预测值,即依次将每个样例划为正例。绘制过程大致可看下面的gif动图:
- 理解ROC曲线,不同的ROC曲线意味着什么
- 不同的模型与不同的ROC曲线:很显然不同的算法模型对应不同的ROC曲线,超参数不同的模型也对应不同的ROC曲线。
- 如上图所示,根据上面所说的一个结论,TPR越大,FPR越小则模型的性能就越好,图中的红色的虚线是盲猜时的POC曲线,也是一个基准,在红色上方的ROC曲线对应的模型时可取的,而红色下方的ROC曲线对应的模型时无效的。因为是盲猜,所以得到的模型的样本排序是随机的,也就意味着正反例的分布是按比例的随机分布的,所以在阈值改变的过程中,TPR和FPR是一直相等的。
- ROC曲线上的点是一个模型上取不同阈值产生的不同的结果。
- 理想的决策阈值: 理想的决策阈值是TPR越接近1,FPR越接近0。即越接近上图中蓝色的点。
3.AUC(Area Under ROC Curve)
- AUC: AUC即ROC曲线下方的面积。
- 与前面的P-R曲线一样,当两个P-R曲线相交时,我们需要选择一种方法来判断出两个曲线对应的模型性能孰优孰劣,AUC就是一个比较的指标。
- 注:
- AUC的值只是衡量各个模型的排名,其绝对值大小没有意义。
- AUC衡量的是在不管取什么阈值的情况下,模型的性能。
针对多分类的ROC和AUC,在多分类问题中,我们可以绘制N个ROC和AUC曲线图对应N个类别,基于One vs ALL的方法。例如,如果你有三个名为X, Y和Z的类,你将有一个ROC用于X,针对Y和Z进行分类,另一个ROC用于Y,针对X和Z进行分类,第三个ROC用于Z,针对Y和X进行分类。
- 以上文章的部分内容图片等内容参考与以下文章:
- Classification: ROC Curve and AUC
- https://vitalflux.com/roc-curve-auc-python-false-positive-true-positive-rate/
- Interpreting ROC Curves, Precision-Recall Curves, and AUCs
有关Precision、Recall、F1-score以及多分类的P-R曲线的绘制和micro和macor方法的博客链接:
https://blog.csdn.net/qq_46020653/article/details/119613577
西瓜书的第二章笔记的博客链接:
https://blog.csdn.net/qq_46020653/article/details/119493200
其他有关机器学习的博客文章:
- 机器学习中理解过拟合,训练集、验证集、测试集,模型评估、模型选择,Hold-out Method(留出法)K-fold Cross-Validation(k折交叉验证法)
- 深度理解hold-out Method(留出法)和K-fold Cross-Validation(k折交叉验证法)
- 深入理解Precision(查准率)、Recall(查全率/召回率)、F1-Score、P-R曲线和micro和macro方法,以及多分类问题P-R曲线
- 决策树、理解信息熵、信息增益(ID3)、增益率(C4.5)、基尼指数(CART)、预剪枝、后剪枝、多变量决策树
- 线性模型——最小二乘法,梯度下降,线性回归,logistic回归