以下所有的讨论都是针对二分类任务。
ROC曲线介绍
ROC全称是Receive Operating Characteristic,中文称作受试者工作特征。
假设现在有m个测试集,其中正例数 m+ ,反例数为 m− 。对任意一个实例,分类器有两种可能的输出:一种是直接输出label,一种是预测为正例的概率或者得分。
对于输出label的分类器,可以得到m个测试集上的预测结果。根据预测结果以及真实标记可以得到一个混淆矩阵。
预测为P | 预测为N | |
---|---|---|
实际为P | TP | FN |
实际为N | FP | TN |
定义如下两个量:
称TPR为真正例率,表示实际为正例的样本中预测为正例的比例;称FPR为假正例率,表示实际为反例的样本中预测为正例的比例。ROC空间就是以FPR作为横轴,以TPR作为纵轴的二维空间。这样对于上面的混淆矩阵,我们计算出的(FPR,TPR)对应ROC空间上一个点,这个点表示的就是对应分类器的性能。
ROC空间中有四个特殊点:(0,0)表示实际为正例的样本全部预测错误,而实际为反例的样本全部预测正确;(0,1)表示所有样本全部预测错误;(1,0)表示所有样本全部预测正确;(1,1)表示实际为正例的样本全部预测正确,实际为反例的样本全部预测错误。在ROC空间中越靠近左上角的分类器,性能越好。
上面的介绍都是针对输出为label的分类器。而对于输出为正例概率或者得分的分类器,可以按照概率或者得分的大小对实例进行排序,这样排在前面的实例是正例的可能性大,排在后面的实例是正例的可能性小。然后按顺序,每次以当前实例的概率/得分做阈值。概率/得分超过或等于此阈值的实例预测为正例,否则预测为反例(其实就是把所有排在当前实例前面的实例以及当前实例预测为正例;其余预测为反例)。这样当前实例有m种,每一种都对应一次预测,而每一次预测都有对应的混淆矩阵。于是在ROC空间中我们可以得到m个点,这m个点的连线称为分类器的ROC曲线。m越大,曲线越光滑。
画ROC曲线
假设现在有四个样本 { (x1,0),(x2,0),(x3,1),