­

白話詳解ROC&AUC | 小白深度學習入門

  • 2019 年 10 月 11 日
  • 筆記
搞機器學習的人一定頻繁的聽到ROC,AUC或者AUC-ROC,但這個概念又不向準確率召回率那麼直觀容易理解,給我帶來了小小的困擾,這裡就系統的學習下這兩個概念。

ROC

ROC即Receiver Operating Characteristics, 中文一般翻譯成「受試者工作特性曲線」。

這是一種度量二分類性能的指標。直觀來講,ROC曲線表示的是模型在準確識別正例不把負例錯誤的識別成正例這兩種能力之間相互制約的關係(當我們需要「寧可錯殺一千,也不放過一個」的時候,ROC能告訴你到底要錯殺多少才能一個壞人都不放過)。

在詳細解釋ROC之前需要先解釋兩個前置概念,即TPR(True Positive Rate)和FPR(False Positive Rate)。

TPR 真正率(召回率):找出的正例占所有的正例的比率。比如有10人換糖尿病,通過模型確診了其中的8個,則 TPR=0.8

FPR 假正率: 即所有的負例中分類錯誤的比例。比如有十個人沒有患糖尿病(這裡把患病作為正例),但是模型錯誤的將其中一個人誤診為患病,則FPR=0.1

ROC即為以FPR為橫軸,以TPR為縱軸的一條曲線(如下圖),有了這條曲線你就能清楚的回答下面這些問題

  1. 知道在可以放過1%壞人的情況下要錯殺多少好人?
  2. 在最多能錯殺1%好人的情況下會放掉多少壞人?
  3. 當糖尿病的誤診率不能高於5%時,會有多少有病的患者被錯誤判斷成無病?

ROC曲線很直觀,也方便使用。但他有個致命的弱點,就是無法對比多個模型的性能。AUC就是為了解決這個問題而出現的。

AUC

AUC,即 Area Under Curve(曲線下面積)。嚴格上講,「AUC」並沒有意義,因為它可以是你隨手繪製的一條曲線的曲線下面積,不過在機器學習領域一般默認AUC就是指AUC-ROC(AUROC也是同樣的意思)。

AUC-ROC代表一個模型對正負例的區分能力(既不放過一個,也不錯殺一個),他的值在0和1之間,越大代表模型性能越好。

從上圖中很容易直觀的感受到什麼是AUC-ROC(途中筆誤寫成了AOC)。知道了AUC-ROC,還需要知道幾個典型值:

  • 當AUC-ROC的值接近1的時候,代表模型效果很好;
  • 當值為0的時候代表模型總是顛倒黑白,把好的說成壞的,壞的說成好的;
  • 當值為0.5時可以認為模型知識隨機做出判斷,不具備區分能力。