今天来聊聊ROC(Receiver Operator Characteristic)曲线。
在上一篇中我们介绍了灵敏度与特异度。在事实和检测都只有两种可能(疾病/非疾病,阴性/阳性)的情况下,这两项指标都不难理解。但是如果检测结果不只有阴性和阳性,还有其他的可能的话,就比较难办了。
假设某种血液检测,数值指标有1,2,3,4,5,五种可能。我们并不确定用大于等于哪个值来作为诊断癌症的指标。
如果我们说检测指标大于等于1就是患有癌症,那么这项测试的灵敏度为100%,因为所有人都会被诊断为癌症,我们不会错过任何一个得癌症的病人。但是这项测试的特异度为0,因为任何健康的人也会被诊断为癌症。
对于用其他数值作为判断癌症的指标,假设该血液检测的数值如下:
举例来说,如果我们说检测指标大于等于2是患有癌症,假设这项测试的灵敏度为96%,而特异度为39%。意思就是96%的癌症患者会被检测出来。在非癌症患者中,有39%的人能被正确诊断出他们并不患有癌症。
现在有另一个血液检测,数值指标同样有1,2,3,4,5,五种可能,特异度和灵敏度表格如下:
请问,哪一种血液指标对于癌症的判断更好呢?
从表格中看,我们可以发现血液检测1的特异度和灵敏度都比较高,说明血液检测1比血液检测2的检测效果要好。但是如果数据很多,比较起来就很麻烦。有一种十分简便方法,就是ROC曲线。
ROC曲线的横轴为1减去特异度,而竖轴为灵敏度。ROC曲线直观地表现了某种检测,使用不同的数值来判断疾病时,特异度和灵敏度之间的关系。将上述两个表格的数据画为ROC曲线,就会得到下面的这张图:
我们发现,血液检测1的ROC曲线(红线)在血液检测2之上,那么就说明血液检测1比较好。在看ROC曲线的时候,曲线越靠近左上角,也就是说灵敏度越高时特异值越低的检测效果比较好。
如果有以下两种检测,他们的ROC曲线互相交叉的话,如何比较呢?
这个时候可以利用AUC(Area Under Curve),即曲线下面积来比较两种曲线的优劣。曲线下面积说的是,曲线和横轴之间的面积。在上图中,红线的AUC为0.8,绿线的AUC为0.78。虽然两种曲线有所交叉, 也就是说在某些情况下,绿线会比红线好。但是总体来说,因为红线的AUC比较高,所以检测3会比检测4更好。
ROC和AUC不仅仅在统计中被广泛应用,在现在火热的机器学习中也有着非常多的用途,但是其原理是一致的。简单来说,ROC和AUC是一种十分直观,用来比较不同检测/模型的方法。