ROC AUC的介紹 ROC和AUC介紹以及如何計(jì)算AUC
簡(jiǎn)單總結(jié)一下:
通常二分類(lèi)輸出概率的情況下會(huì)使用ROC AUC評(píng)估分類(lèi)起的好壞。
ROC是真陽(yáng)性率(TPR)和假陽(yáng)性率(FPR)組成的曲線,AUC是ROC曲線下的面積。
那什么是真陽(yáng)性率和假陽(yáng)性率?
混淆矩陣:

TPR = TP/(TP+FN)
FPR = FP/(FP+TN)
那么混淆矩陣是怎么得到的?
首先,要有一個(gè)閾值,根據(jù)預(yù)測(cè)概率將預(yù)測(cè)結(jié)果分為positive,negative,然后對(duì)比標(biāo)簽即可得到TP,F(xiàn)N,F(xiàn)P,TN四個(gè)值。
一個(gè)閾值得到一個(gè)混淆矩陣,一個(gè)混淆矩陣只有一對(duì)TPR,F(xiàn)PR,要畫(huà)出曲線需要多個(gè)閾值。
那么這些閾值是怎么得到的?
對(duì)預(yù)測(cè)得到的概率進(jìn)行從大到小排序,然后從前到后,使用預(yù)測(cè)分?jǐn)?shù)作為閾值,在這個(gè)預(yù)測(cè)結(jié)果前面的(包括這個(gè))為positive,在這個(gè)結(jié)果后面的為negative,配合標(biāo)簽計(jì)算TPR,F(xiàn)PR。這樣會(huì)得到和預(yù)測(cè)數(shù)據(jù)同樣多的TPR,F(xiàn)PR對(duì)。
那么,AUC這個(gè)面積該怎么理解?
從圖形上來(lái)看,AUC就是TPR>FPR的概率+0.5,即auc=p(TPR>FPR)+0.5
知乎上有人是這么理解的

他的描述即auc=p(TPR>FPR),我認(rèn)為他少了個(gè)0.5
為什么要對(duì)概率進(jìn)行排序呢?
為了處理概率值相等的情況。排序后不論是否相等,只按前后順序計(jì)算。
參考ROC曲線和AUC值的計(jì)算
不僅限于概率
ROC AUC不僅僅適用于預(yù)測(cè)值為概率,只要是分?jǐn)?shù)都可以
不僅限于二分類(lèi)
對(duì)于多分類(lèi)問(wèn)題,可以變成多個(gè)二分類(lèi),兩兩繪制ROC 計(jì)算AUC。代碼參考Plot ROC curves for the multiclass problem
二分類(lèi)的代碼可以這樣寫(xiě),順便繪出ROC曲線
from sklearn.metrics import roc_curve, auc
fpr, tpr, thresholds = roc_curve(np.array(train['TARGET']), train_preds[:,1])
roc_auc = auc(fpr, tpr)
print('ROC curve(area = %0.3f)'% roc_auc)
plt.figure()
lw=2
plt.plot(fpr, tpr, color='darkorange',lw=lw, label='ROC curve(area = %0.3f)'% roc_auc)
plt.plot([0,1], [0,1], color='navy', lw=lw, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.show()
相關(guān)鏈接:機(jī)器學(xué)習(xí)和統(tǒng)計(jì)里面的auc怎么理解?
ROC,AUC,Precision,Recall,F(xiàn)1的介紹與計(jì)算