ROC与AUC
很多学习器是为测试样本产生一个实值或概率预测,然后将这个预测值与一个分类阈值(threshold)进行比较,若大于阈值则分为正类,否则为反类.例如,神经网络在一般情形下是对每个测试样本预测出一个[0.0,1.0]之间的实值,然后将这个值与 0.5 进行比较,大于 0.5 则判为正例,否则为反例. 这个实值或概率预测结果的好坏, 直接决定了学习器的泛化能力。实际上,根据这个实值或概率预测结果,我们可将测试样本进行序,“最可能” 是正例的排在最前而,“最不可能” 是正例的排在最后面.这样,分类过程就相当于在这个排序中以某个 “截断点” 将样本分为两部分,前一部分判作正例,后一部分则判作反例.
不同的应用任务中,我们可根据任务需求采用不同的截断点,例如若我们更重视“查准率”,则可选择排序中靠前的位置进行截断;若更重视“查全率”,则可选择靠后的位置进行截断.因此,排序本身的质量好坏,体现了综合考虑学习器在不同任务下的“期望泛化性能”的好坏,或者说,“一般情况下” 泛化性能的好坏.ROC曲线则是从这个角度出发研究学习器泛化性能的有力工具。
ROC全称是“受试者工作特征”曲线,它源于“二战”中用于敌机检测的雷达信号分析技术,二十世纪六七十年代开始被用于一些心理学、医学检应用中,此后被引入机器学习领域。与P-R曲线相似,我们根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,分别以它们为横、纵坐标作图,就得到了"ROC曲线”。与P-R曲线使用查准率、查全率为纵、横轴不同,ROC曲线的纵轴是“真正例率”(True Positive Rate,简称TPR),横轴是“假正例率” (False Positive Rate,简称FPR).
显示ROC曲线的图称为“ROC图”。下图给出了一个示意图,显然,对角线对应于“随机猜测”模型,而点(0,1)则对应于将所有正例排在所有反例之前的“理想模型”。
现实任务中通常是利用有限个试样例来绘制ROC图,此时仅能获得有限个(真正例率,假正例率)坐标对,无法产生光滑ROC曲线,只能绘制出如上图(b)所示的近似ROC曲线.
绘图过程很简单:给定 \(m^+\) 个正例和 \(m^-\) 个反例,根拥学习器预测结果对样例进行排序,然后把分类阈值设为最大,即把所有样例均预测为反例,此时真正例率和假正例率均为 \(0\),在坐标 \((0,0)\) 处标记一个点。然后,将分类阈值依次设为每个样例的预测值,即依次将每个样例划分为正例。设前一个标记点坐标为 \((x,y)\),当前若为真正例,则对应标记点的坐标为\((x,y+\frac{1}{m^+})\);当前若为假正例,则对应标记点的坐标为\((x+\frac{1}{m^-},y)\),然后用线段连接相邻点即得。
进行学习器的比较时,与P-R图相似,若一个学习器的ROC曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者;若两个学习器的ROC线发生交又,则难以一般性地断言两者孰优孰劣,此时如果一定要进行比较,则较为合理的判据是比较ROC曲线下的面积,即AUC(Area Under ROC Curve)。
从定义可知,AUC可通过对ROC曲线下各部分的面积求和而得.假定ROC曲线是由坐标为 \(\{(x_1,y_1),(x_2,y_2),\dots,(x_m,y_m)\}\) 的点按序连接而形成 \(\left( x_1=0,x_m=1 \right)\),则AUC可估算为
形式化地看,AUC考虑的是样本预测的排序质量,因此它与排序误差有紧密联系。给定 \(m^+\) 个正例 \(m^-\) 个反例,令 \(D^+\) 和 \(D^-\) 分别表示正、反例集合,则排序 “损失” (loss)定义为
即考虑每一对正、反例,若正例的预值小于反例,则记一个“罚分”;若相等,则记0.5个“罚分”。容易看出,\(\ell_{rank}\) 对应的是ROC曲线之上的面积:若一个正例在ROC线上对应标记点的坐标为 \((x,y)\), 则 \(x\) 恰是排序在其之前的反例所占的比例,即假正例率。达此有