標籤:

也說說AUC和ROC

也說說AUC和ROC

來自專欄 機器學習與數據挖掘

讓我們從頭說起,首先AUC是一種用來度量分類模型好壞的一個標準。這樣的標準其實有很多,例如:大約10年前在machine learning文獻中一統天下的標準:分類精度;在信息檢索(IR)領域中常用的recall和precision,等等。其實,度量反應了人們對」 好」的分類結果的追求,同一時期的不同的度量反映了人們對什麼是」好」這個最根本問題的不同認識,而不同時期流行的度量則反映了人們認識事物的深度的變 化。近年來,隨著machine learning的相關技術從實驗室走向實際應用,一些實際的問題對度量標準提出了新的需求。特別的,現實中樣本在不同類別上的不均衡分布(class distribution imbalance problem)。使得accuracy這樣的傳統的度量標準不能恰當的反應分類器的performance。舉個例子:測試樣本中有A類樣本90個,B 類樣本10個。分類器C1把所有的測試樣本都分成了A類,分類器C2把A類的90個樣本分對了70個,B類的10個樣本分對了5個。則C1的分類精度為 90%,C2的分類精度為75%。但是,顯然C2更有用些。另外,在一些分類問題中犯不同的錯誤代價是不同的(cost sensitive learning)。這樣,默認0.5為分類閾值的傳統做法也顯得不恰當了。

為了解決上述問題,人們從醫療分析領域引入了一種新的分類模型performance評判方法——ROC分析。ROC分析本身就是一個很豐富的內容,有興趣的讀者可以自行Google。由於我自己對ROC分析的內容了解還不深刻,所以這裡只做些簡單的概念性的介紹。

ROC的全名叫做Receiver Operating Characteristic,其主要分析工具是一個畫在二維平面上的曲線——ROC curve。平面的橫坐標是false positive rate(FPR),縱坐標是true positive rate(TPR)。對某個分類器而言,我們可以根據其在測試樣本上的表現得到一個TPR和FPR點對。這樣,此分類器就可以映射成ROC平面上的一個點。調整這個分類器分類時候使用的閾值,我們就可以得到一個經過(0, 0),(1, 1)的曲線,這就是此分類器的ROC曲線。一般情況下,這個曲線都應該處於(0, 0)和(1, 1)連線的上方。因為(0, 0)和(1, 1)連線形成的ROC曲線實際上代表的是一個隨機分類器。如果很不幸,你得到一個位於此直線下方的分類器的話,一個直觀的補救辦法就是把所有的預測結果反向,即:分類器輸出結果為正類,則最終分類的結果為負類,反之,則為正類。雖然,用ROC curve來表示分類器的performance很直觀好用。可是,人們總是希望能有一個數值來標誌分類器的好壞。於是Area Under roc Curve(AUC)就出現了。顧名思義,AUC的值就是處於ROC curve下方的那部分面積的大小。通常,AUC的值介於0.5到1.0之間,較大的AUC代表了較好的performance。那麼可能會有想說,那如何計算AUC,用高數中的積分,不知道這個曲線的數學表達式。欲知詳情,請看下回叭叭。


推薦閱讀:

推薦相關梳理
用戶畫像—打用戶行為標籤
「Python」用Cosine Similarity實現相關文章推薦
推薦系統中的矩陣分解技術
交叉驗證

TAG:數據挖掘 |