在一般認知中,用模型對測試集進行分類**,結果應該是x或者x'(也可以說是或者否)。根據混淆矩陣算出tp、fp、tn、fn,進一步算出tpr、fpr。乙個測試集只會有一對tpr/fpr值,那麼roc曲線就只會有乙個點,何談曲線之說?難道是用多個測試集得到多對tpr/fpr值,來繪製roc曲線嗎?實則不然。
roc曲線,一般適用於分類器輸出乙個「概率值」,即這個樣本屬於某個類的概率是多少。在計算的時候會依次用所有樣本的概率值作為閾值, 用閥值和所有樣本的**值進行比較,大於這個閾值的樣本**為正類,小於這個閾值的樣本**為負類。從而,對於每個閾值都能得到對應的tpr/fpr, 也就是roc曲線上的乙個點。樣本數量n=>閥值數量n=>點數量n(不考慮去重),最終構成roc曲線。
計算示例
測試集7個樣本abcdefg的分類真實值:[0, 0, 0, 0, 1, 1, 1]
模型**為1的概率分別是:[0.3, 0.2, 0.7, 0.5, 0.4, 0.9, 0.6]
1.以0.3為閥值,**值[1, 0, 1, 1, 1, 1, 1]. tp、fp、tn、fn=3、3、1、0, tpr、fpr=3/3、3/4.
2.以0.2為閥值,**值[1, 1, 1, 1, 1, 1, 1]. tp、fp、tn、fn=3、4、0、0, tpr、fpr=3/3、4/4.
3.以0.7為閥值,**值[0, 0, 1, 0, 0, 1, 0]. tp、fp、tn、fn=1、1、3、2, tpr、fpr=1/3、1/4.
4.以0.5為閥值,**值[0, 0, 1, 1, 0, 1, 1]. tp、fp、tn、fn=2、2、2、1, tpr、fpr=2/3、2/4.
5.以0.4為閥值,**值[0, 0, 1, 1, 1, 1, 1]. tp、fp、tn、fn=3、2、2、0, tpr、fpr=3/3、2/4.
6.以0.9為閥值,**值[0, 0, 0, 0, 0, 1, 0]. tp、fp、tn、fn=1、0、4、2, tpr、fpr=1/3、0/4.
7.以0.6為閥值,**值[0, 0, 1, 0, 0, 1, 1]. tp、fp、tn、fn=2、1、3、1, tpr、fpr=2/3、1/4.
8.按照橫fpr縱tpr座標從小到大排序座標點:(0,0.33)(0.25,0.33)(0.25,0.67)(0.5,0.67)(0.5,1)(0.75,1)(1,1)
9.根據上述座標點繪製曲線,計算曲線包圍的面積,即auc的值
**示例
import numpy as np
from sklearn import metrics
import matplotlib.pyplot as plt
test_true = np.array([0, 0, 0, 0, 1, 1, 1])
test_pre = np.array([0.3, 0.2, 0.7, 0.5, 0.4, 0.9, 0.6])
fpr, tpr, thresholds = metrics.roc_curve(test_true, test_pre, pos_label=1)
print fpr
print tpr
print thresholds
plt.plot(fpr,tpr,marker = 'o')
plt.show()
auc = metrics.auc(fpr, tpr)
print auc
'''值得關注的函式,注意pos_label的設定
fpr, tpr, thresholds=sklearn.metrics.roc_curve(y_true,y_score,pos_label=none)
pos_label : int or str, default=none,label considered as positive and others are considered negative.
'''關於閥值
最後說明一點,用每個概率結果作為閥值是計算roc曲線的乙個度量元素。沒有業務語義。不用過多思考。
但在實際專案中,如何用概率結果判斷業務分類,就需要思考閥值的具體設定了。不能想當然的用0.5一刀切,可以參考:
ROC曲線和AUC指標
roc曲線的橫軸就是fprate,縱軸就是tprate,二者相等時表示的意義則是 對於不論真實類別是1還是0的樣本,分類器 為1的概率是相等的,此時auc為0.5 圖中藍色的線則是roc曲線,roc曲線和橫軸 縱軸圍成的面積就是auc指標。fpr fp fp tn from sklearn.metr...
ROC曲線及AUC評價指標
很多時候,我們希望對乙個二值分類器的效能進行評價,auc正是這樣一種用來度量分類模型好壞的乙個標準。現實中樣本在不同類別上的不均衡分布 class distribution imbalance problem 使得accuracy這樣的傳統的度量標準不能恰當的反應分類器的效能。舉個例子 測試樣本中有...
分類器效能指標之ROC曲線 AUC值
一 roc曲線 1 roc曲線 接收者操作特徵 receiveroperating characteristic roc曲線上每個點反映著對同一訊號刺激的感受性。橫軸 負正類率 false postive rate fpr 特異度,劃分例項中所有負例佔所有負例的比例 1 specificity 縱軸...