如何理解機器學習和統計中的AUC?

時間 2021-05-10 18:15:23

1樓:

scikit-learning裡面有介紹:

1、sklearn.metrics.auc - scikit-learn 0.24.1 documentation

2、sklearn.metrics.roc_auc_score - scikit-learn 0.24.1 documentation

2樓:Hasin Chan

To calculate the AUC of a model (on a dataset), we must first draw anROC curve.

This curve is produced by thresholding the model's predicted probabilities at various places between zero and one, and taking the points scored above the threshold as predicted members of the positive class, and those below the threshold as predicted negative classes.

The proportion of positive classes correctly predicted is called thetrue positive rateof a thresholding, and the proportion of negative classes incorrectly predicted is called thefalse positive rate.

The Probabilistic Interpretation of AUC

3樓:黑貓白貓

這裡總結的非常到位,

我再補充一點,由於AUC具有很強的排序特性,所以在搜尋和推薦中會經常用到AUC,但是在一些需要絕對準確率的場景下,則不適合用AUC作為主要評估指標。

4樓:

AUC(Area under curve)其實不是機器學習裡起源的概念。這個概念其實很早就有了。而其實你要談論AUC,則必須首先說,ROC,receiver operating characteristics(測試工作曲線特徵)。

AUC其實就是ROC曲線下的面積。最早是在二戰的時候研究雷達就有了這個概念。其實你看一些比較老的研究統計建模的書也會給你講AUC。

AUC,ROC的話定義很簡單,你去看wiki就可以了。我現在給你說的就是為什麼要有這個東西。以及他好用在哪。

因為實際上你設計乙個機器學習的程式,他很多時候是乙個分類器。如果是簡單的+1,-1這種二元分類的話會有四種情況。的確是+1,被歸為+1,的確是-1,被歸為-1,是+1卻被歸納為-1,還有一種相反的情況。

理論上最好的分類器是可以同時把前兩種情況全部挑出來的。但實際上,這個只是乙個美好的幻想罷了。人類設計的任何分類器,都會有其偏差,有些對於前者更敏感,而有些對於後者更敏感。

為什麼會出現這種情況?如果你對機器學習沒有一定認識的話,你可能是想不到的。因為任何一種機器學習演算法都一定有其歸納偏好。

否則就會被一些等效的假設所迷惑。這樣也無法產生學習的效果,也和乙個隨機的分類器沒有區別了。

這種曲線就叫ROC。而這種曲線下的面積叫AUC。面積越大則分類器效能也就越好。乙個很複雜的問題,也就被轉化為乙個比大小的問題了。

所以怎麼辦呢?你要評價乙個分類器,是一定要把這兩種情況,綜合起來做考慮的。比如你是乙個醫院的腫瘤醫生。

你要確診乙個病人,現在有影像檢測(測有沒有陰影)和生物化學檢測(測某種蛋白質含量,比如)。前者容易把正常人當成病人,後者容易把病人給放過去。單純的這兩種分類器效能都不好。

那麼你肯定要把這兩種方法,給他相結合。其實這就是,提高AUC嘛。

其實在做決策的時候也一樣。有些人的思想是偏向於寧可錯殺不可漏殺的。有些人是傾向於寧可漏殺不可錯殺的。怎麼辦?這個就需要你把兩者去結合。

世界是複雜的,要有多種方法對問題去做判斷。

5樓:譚本東

借鑑了一些回答,非常感謝。補充下我的理解。

AUC是指隨機給定乙個正樣本和乙個負樣本,分類器輸出該正樣本為正的那個概率值 (真陽率)比分類器輸出該負樣本為正的那個概率值 (偽陽率)要大的可能性,那麼任意一對正負樣本在同乙個分類器下,只要正樣本輸出大於負樣本,就可以將這一對正確識別。

從統計特性上來說,這樣的樣本對能夠被正確的數量越多越好,而且誇張點,即便資料類別極度不平衡,能被正確區分的對數和總對數之比也能良好表徵效能。

和roc曲線扯上關係,可以理解成遍歷所有閾值,計算真陽率和偽陽率,取的真陽率的期望,對應的是正樣本被正確識別數目的期望,這個量和被正確識別的正負樣本對是相等的。

6樓:

ROC是一種曲線,AUC意思是曲線下的面積(曲線不一定是ROC,但通常預設曲線是ROC)

第一種思路是描點畫圖畫出梯形曲線,第二種思路是直接根據ROC的物理意義進行計算。

第一種思路:畫圖,求梯形面積之和

不僅描述起來複雜,計算起來也很繁瑣。

defroc

(y_true

,y_mine):a

=[(y_mine[i

],y_true[i

])foriin

range

(len

(y_true

))]a

=sorted(a

,key

=lambdax:

-x[0

])thresh

=sorted

(list

(set([0

,1]+

[i[0

]foriin

a])),

key=

lambdax:

-x)cnt=[

np.count_nonzero

(y_true==0

),np

.count_nonzero

(y_true==1

),0,0

]x=y=j=0foriin

thresh

:while

j

anda[j

][0]>=i:

ifa[j

][1]:cnt

[0b11]+=

1cnt

[0b01]-=

1else

:cnt

[0b10]+=

1cnt

[0b00]-=

1j+=1

x.(cnt

[0b10]/

(cnt

[0b00]+

cnt[

0b10

]))y.(

cnt[

0b11]/

(cnt

[0b11]+

cnt[

0b01

]))returnx,

y,thresh

defauc(x

,y):a

=sorted

([(x[i

],y[i

])foriin

range

(len(x

))],

key=

lambdax:

x[0])

area=0

fori

inrange(1

,len(a

)):area+=(

a[i-

1][1]

+a[i

][1])*

(a[i

][0]-

a[i-

1][0])

/2return

area

第二種思路:

ROC設計的初衷非常簡單:隨機選擇乙個正樣本x,隨機選擇乙個負樣本y,丟給你的判別器來打分,AUC值就表示x比y更像正樣本的概率。

那麼,問題來了:如果正樣本x和負樣本y的得分相同怎麼辦?那麼就可以了開始瞎判了:x>y的概率就是1/2.

如果考慮正樣本負樣本得分相同,計算就要略微複雜,而如果不考慮正負樣本得分相同,計算上就會非常簡潔。

計算上,可以簡潔地表達為

def auc2(y_mine, y_true):

"""auc的物理意義在於:隨機正樣本比隨機負樣本得分高的概率基於這種直觀的思路可以更快速的計算auc

:param y_mine:

:param y_true:

:return:

"""a = sorted([(y_mine[i], y_true[i]) for i in range(len(y_mine))], key=lambda x: -x[0])

s = 0

true_count = len([1 for i in y_true if i])

false_count = len(y_true) - true_count

total_false = false_count

for i in aif i[1s += 1 / true_count * false_count / total_false

elsefalse_count -= 1

return s

7樓:泰克尼客

對於AUC最簡單的理解是ROC曲線下的面積。

但AUC有乙個更優雅的,概率學上的意義:隨機選取乙個正例和乙個負例,分類器給正例的打分大於分類器給負例的打分的概率。

Probabilistic interpretation of AUC

The Probabilistic Interpretation of AUC

8樓:徐大江

剛接觸AUC,按照我的理解,AUC可以按如下方式計算:

假設正樣本數量為M,負樣本數量為N,則正負樣本組合數量為M*N(此為分母)。現在計算分子,將所有樣本的score按照從大到小排序,假設pi(1或0)為第i個樣本的真實值,T為分子(初始值為0),按如下方式計算T:

i = N, T=0

while i > 0:

if pi > 0: T += i

else: i -= 1

AUC = T / M*N,這只是我的理解,期待各位大神的指正。

9樓:sean

之前研究過,今天晚上時間實在不夠了,先說下形象的理解,保證秒懂,明天有空再更新。

對於二類分類問題,我們先畫roc曲線,曲線的每乙個點表示乙個閾值,分類器給每個樣本乙個得分,得分大於閾值的我們認為是正樣本,小於閾值的認為是負樣本。那麼縱座標是正樣本的召回率,橫座標是1-負樣本的召回率。從原點開始畫roc曲線,閾值從1開始遞減,隨著閾值的降低,正樣本的召回率肯定是在增加的,而負樣本的召回率在降低,1-負樣本召回率在增加,如果正樣本的召回率增加的速度大於負樣本的召回率的下降,說明我們的分類器效果是不錯的。

roc曲線下面的面積就是auc. 在建立這麼形象的理解之後,明天有空再繼續更新。

如何理解機器學習中的 regularization (正則化)?

zhao 先占個坑寫個快捷簡短的。intuitional角度 L2norm懲罰太大的weight W,讓很多W處於很弱的狀態,這相當於降低了模型複雜度。統計角度,不少前面的答案提到了Gaussian先驗分布,是這麼個事兒。統計目的是找到合適的W,使得posterior概率最大化,用人話說就是 給定資...

如何理解機器學習中說深度學習和整合學習是黑箱模型?

Ada 深度學習和整合學習都是機器學習裡面的分支,裡面主要涉及到的技術就是神經網路。而之所以說它們是黑箱模型,主要是因為它們所使用的神經網路技術的不可解釋性。神經網路是一種模擬人的大腦思考計算的演算法,裡面涉及到了很多的計算層級,每乙個層級裡面又有很多的計算節點,同一層級的各個節點之間,不同層級之間...

如何理解機器學習中的嵌入 Embeddings ?

RandomWalk 應該是翻譯成嵌入比較多吧。機器學習裡面嵌入這個概念應該是來自於NLP領域的word embedding,意思就是給每乙個符號 字或者詞 在乙個向量空間裡面找乙個 代表 貌似現在embedding這個詞已經開始亂用了,有人把影象或者語音提取的特徵也叫embedding。這種應該叫...