https://www.plob.org/article/12476.html(原文連接)html
初識ROC曲線python
1. ROC的前世此生:ios
ROC的全稱是「受試者工做特徵」(Receiver Operating Characteristic)曲線,首先是由二戰中的電子工程師和雷達工程師發明的,用來偵測戰場上的敵軍載具(飛機、船艦),也就是信號檢測理論。以後很快就被引入了心理學來進行信號的知覺檢測。此後被引入機器學習領域,用來評判分類、檢測結果的好壞。所以,ROC曲線是很是重要和常見的統計分析方法。微信
2. 「ROC 曲線」思路:機器學習
根據學習器的預測結果對樣例進行排序,按此順序逐個把樣本做爲正例進行預測,每次計算出兩個重要量的值(TPR、FPR),分別以它們爲橫、縱座標做圖。ide
3. AUC (Area under Curve):學習
ROC曲線下的面積,介於0.1和1之間,做爲數值能夠直觀的評價分類器的好壞,值越大越好。測試
4. 「混淆矩陣」:spa
對於二分類問題,可將樣本根據其真實類別與學習器預測類別的組合劃分爲TP(true positive)、FP(false positive)、TN(true negative)、FN(false negative)四種狀況,TP+FP+TN+FN=樣本總數。視頻
http://zhwhong.ml/2017/04/14/ROC-AUC-Precision-Recall-analysis/
(1) 真陽性(True Positive,TP):檢測不健康,且實際不健康;正確確定的匹配數目;
(2) 假陽性(False Positive,FP):檢測不健康,但實際健康;誤報,給出的匹配是不正確的;
(3) 真陰性(True Negative,TN):檢測健康,且實際健康;正確拒絕的非匹配數目;
(4) 假陰性(False Negative,FN):檢測健康,但實際不健康;漏報,沒有正確找到的匹配的數目。
二 深刻了解ROC曲線
ROC曲線實際上是多個混淆矩陣的結果組合。
以疾病檢測爲例,這是一個有監督的二分類模型,模型對每一個樣本的預測結果爲一個機率值,咱們須要從中選取一個閾值來判斷健康與否。
定好一個閾值以後,超過此閾值定義爲不健康,低於此閾值定義爲健康,就能夠得出混淆矩陣。
而若是在上述模型中咱們沒有定好閾值,而是將模型預測結果從高到低排序,將每次機率值依次做爲閾值,那麼就能夠獲得多個混淆矩陣。對於每一個混淆矩陣,咱們計算兩個指標TPR和FPR,以FPR爲x軸,TPR爲y軸畫圖,就獲得了ROC曲線。
通常來講,若是ROC是光滑的,那麼基本能夠判斷沒有太大的overfitting,AUC面積越大通常認爲模型越好。
三 AUC值做爲評價標準
1. AUC (Area Under Curve)
被定義爲ROC曲線下的面積,取值範圍通常在0.5和1之間。使用AUC值做爲評價標準是由於不少時候ROC曲線並不能清晰的說明哪一個分類器的效果更好,而做爲一個數值,對應AUC更大的分類器效果更好。
2.AUC 的計算方法
非參數法:(兩種方法實際證實是一致的)
(1)梯形法則:早期因爲測試樣本有限,咱們獲得的AUC曲線呈階梯狀。曲線上的每一個點向X軸作垂線,獲得若干梯形,這些梯形面積之和也就是AUC 。
(2)Mann-Whitney統計量: 統計正負樣本對中,有多少個組中的正樣本的機率大於負樣本的機率。這種估計隨着樣本規模的擴大而逐漸逼近真實值。
參數法:
(3)主要適用於二項分佈的數據,即正反樣本分佈符合正態分佈,能夠經過均值和方差來計算。
3.從AUC判斷分類器(預測模型)優劣的標準
· AUC = 1,是完美分類器,採用這個預測模型時,存在至少一個閾值能得出完美預測。絕大多數預測的場合,不存在完美分類器。
· 0.5 < AUC < 1,優於隨機猜想。這個分類器(模型)妥善設定閾值的話,能有預測價值。
· AUC = 0.5,跟隨機猜想同樣(例:丟銅板),模型沒有預測價值。
· AUC < 0.5,比隨機猜想還差;但只要老是反預測而行,就優於隨機猜想。
總結:AUC值越大的分類器,正確率越高
4. 不一樣模型AUC的比較
總的來講,AUC值越大,模型的分類效果越好,疾病檢測越準確;不過兩個模型AUC值相等並不表明模型效果相同,例子以下:
下圖中有三條ROC曲線,A模型比B和C都要好
下面兩幅圖中兩條ROC曲線相交於一點,AUC值幾乎同樣:當須要高Sensitivity時,模型A比B好;當須要高Speciticity時,模型B比A好;
四 最優零界點咋麼找
說人話,就是保證TPR高的同時FPR要儘可能的小,創建max(TPR+(1-FPR))的模型。一樣有三種方法:找到離(0,1)最近的點、Youden index和最小損耗(cost criterion)。
1. 若是說Sn 和Sp 分別對應於sensitivity和specificity,全部ROC曲線上的點到ROC的距離能夠表示爲,讓d最小就好啦;
2. Youden index : 最大化ROC曲線上的點到x軸的垂直距離(最大化TPR(Sn)和FPR(1-Sp)的差別);
3. 考慮人力物力和財力(第三種方法不多用,由於很難評估)
五ROC的好基友——PR曲線
1.介紹
PR曲線和ROC曲線相似,ROC曲線是FPR和TPR的點連成的線,PR曲線是準確率和召回率的點連成的線,以下圖所示。
咱們又知道,Recall=TPR,所以PRC的橫座標爲ROC的縱座標。
2. ROC曲線與PR曲線的取捨
相對來說ROC曲線會穩定不少,在正負樣本量都足夠的狀況下,ROC曲線足夠反映模型的判斷能力。所以,對於同一模型,PRC和ROC曲線均可以說明必定的問題,並且兩者有必定的相關性,若是想評測模型效果,也能夠把兩條曲線都畫出來綜合評價。對於有監督的二分類問題,在正負樣本都足夠的狀況下,能夠直接用ROC曲線、AUC、KS評價模型效果。在肯定閾值過程當中,能夠根據Precision、Recall或者F1來評價模型的分類效果。對於多分類問題,能夠對每一類分別計算Precision、Recall和F1,綜合做爲模型評價指標。
在上圖中,(a)和(c)爲ROC曲線,(b)和(d)爲Precision-Recall曲線。(a)和(b)展現的是分類其在原始測試集(正負樣本分佈平衡)的結果,(c)和(d)是將測試集中負樣本的數量增長到原來的10倍後,分類器的結果。能夠明顯的看出,ROC曲線基本保持原貌,而Precision-Recall曲線則變化較大。
參考資料
https://en.wikipedia.org/wiki/Receiver_operating_characteristic
https://www.zhihu.com/question/30643044
http://www.it610.com/article/4964856.htm
http://zhwhong.ml/2017/04/14/ROC-AUC-Precision-Recall-analysis/
http://www.medicalbiostatistics.com/
微信掃二維碼,免費學習更多python資源