python金融風控評分卡模型和數據分析微專業課(博主親自錄制視頻):http://dwz.date/b9vv
初識ROC曲線
1. ROC的前世今生:
ROC的全稱是“受試者工作特征”(Receiver Operating Characteristic)曲線,首先是由二戰中的電子工程師和雷達工程師發明的,用來偵測戰場上的敵軍載具(飛機、船艦),也就是信號檢測理論。之后很快就被引入了心理學來進行信號的知覺檢測。此后被引入機器學習領域,用來評判分類、檢測結果的好壞。因此,ROC曲線是非常重要和常見的統計分析方法。
2. “ROC 曲線”思路:
根據學習器的預測結果對樣例進行排序,按此順序逐個把樣本作為正例進行預測,每次計算出兩個重要量的值(TPR、FPR),分別以它們為橫、縱坐標作圖。
3. AUC (Area under Curve):
ROC曲線下的面積,介於0.1和1之間,作為數值可以直觀的評價分類器的好壞,值越大越好。
4. “混淆矩陣”:
對於二分類問題,可將樣本根據其真實類別與學習器預測類別的組合划分為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/
https://www.plob.org/article/12476.html(原文鏈接)
python機器學習生物信息學系列課(博主錄制):http://dwz.date/b9vw
微信掃二維碼,免費學習更多python資源