今天來聊聊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是一種十分直觀,用來比較不同檢測/模型的方法。