AUC指標之ROC曲線只有乙個點的問題

2022-08-29 11:06:27 字數 2081 閱讀 2214

在一般認知中,用模型對測試集進行分類**,結果應該是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 縱軸...