小編寫這篇文章的主要目的,是用來給大家介紹關(guān)于Python中代碼的相關(guān)實(shí)例,比如教大家怎么用Python計(jì)算AUC代碼,具體代碼內(nèi)容,下面給大家一一列舉出來。
AUC是人工智能中常用的評級判定手段,它的具體意義是什么呢?看下圖:
下面的表格給大家做出了具體的解釋
表中列代表預(yù)測分類,行代表實(shí)際分類:
實(shí)際1,預(yù)測1:真正類(tp)
實(shí)際1,預(yù)測0:假負(fù)類(fn)
實(shí)際0,預(yù)測1:假正類(fp)
實(shí)際0,預(yù)測0:真負(fù)類(tn)
真實(shí)負(fù)樣本總數(shù)=n=fp+tn
真實(shí)正樣本總數(shù)=p=tp+fn
在第一張圖中,
橫坐標(biāo)false positive rate代表假正類率,由fp/n計(jì)算得到,
意為在實(shí)際負(fù)樣本中出現(xiàn)預(yù)測正樣本的概率。
縱坐標(biāo)true positive rate代表真正類率,由tp/p計(jì)算得到,
意為在實(shí)際正樣本中出現(xiàn)預(yù)測正樣本的概率。
為什么指標(biāo)可以衡量分類效果?
下面解釋下這條曲線內(nèi)容
1、通過分類器,測試其概率,然后從高到低做一個排序
2.由上到小,分別以每一個預(yù)測概率作為閾值,大于該閾值的認(rèn)定其為1,小于的為0,計(jì)算fp rate和tp rate。
對于一個有分類效果(效果比隨機(jī)要好)的分類器,剛開始將高概率作為閾值時,閾值以上的的話,可以做出一個平均值;閾值以上的假正樣本占全部負(fù)樣本的比例(fp rate)。
auc理解
auc就是:隨機(jī)抽出一對樣本(一個正樣本,一個負(fù)樣本),然后用訓(xùn)練得到的分類器來對這兩個樣本進(jìn)行預(yù)測,預(yù)測得到正樣本的概率大于負(fù)樣本概率的概率。
AUC計(jì)算
方法一
在有k個正樣本數(shù)據(jù),p個負(fù)樣本的數(shù)據(jù)集里。一共有k*l對樣本(一對樣本即,一個正樣本與一個負(fù)樣本)。統(tǒng)計(jì)這k*l對樣本里,來預(yù)判其相關(guān)的一個概率值。
舉個例子:
假設(shè)有4條樣本。2個正樣本,2個負(fù)樣本,那么M*N=4。
即總共有4個樣本對。分別是:
?。―,B),(D,A),(C,B),(C,A)。
在(D,B)樣本對中,正樣本D預(yù)測的概率大于負(fù)樣本B預(yù)測的概率(也就是D的得分比B高),記為1
同理,對于(C,B)。正樣本C預(yù)測的概率小于負(fù)樣本C預(yù)測的概率,記為0.
那么auc如下:
假如出現(xiàn)得分一致的時候:
同樣本是4個樣本對,對于樣本對(C,B)其I值為0.5。
方法二
利公式:
對預(yù)測概率做一個從上到下的排序
對其中的概率數(shù)值設(shè)一個rank值(最高的概率的rank為n,第二高的為n-1)
rank實(shí)際上代表了該score(預(yù)測概率)超過的樣本的數(shù)目
為了求證正樣本的score值大于負(fù)樣本,假如說有正向容量,那么,其相關(guān)的值,任意組合起來的話,都是比較大的了。我們?nèi)∷膔ank值為k,但是k-1中有M-1是正樣例和正樣例的組合這種是不在統(tǒng)計(jì)范圍內(nèi)的(為計(jì)算方便我們?nèi)組,相應(yīng)的不符合的有M個),所以要減掉,那么同理排在第二位的k-1,會有M-1個是不滿足的,依次類推,故得到后面的公式M*(M+1)/2,我們可以驗(yàn)證在正樣本score都大于負(fù)樣本的假設(shè)下,AUC的值為1
除以M*k
舉例說明:
排序。按概率排序后得到:
按照上面的公式,把相關(guān)的序號進(jìn)行一個疊加,然后再去增刪查改:
得到:
如果出現(xiàn)得分一樣的情況:
假如有4個取值概率為0.5,而且既有正樣本也有負(fù)樣本的情況。計(jì)算的時候,其實(shí)原則就是相等得分的rank取平均值。具體來說如下:
先排序:
這里需要注意的是:相等概率得分的樣本,無論正負(fù),誰在前,誰在后無所謂。
由于只考慮正樣本的rank值:
對于正樣本A,其rank值為7
對于正樣本B,其rank值為6
對于正樣本E,其rank值為(5+4+3+2)/4
對于正樣本F,其rank值為(5+4+3+2)/4
實(shí)現(xiàn)及驗(yàn)證
采用sklearn中的庫函數(shù)驗(yàn)證:
import numpy as np from sklearn.metrics import roc_curve from sklearn.metrics import auc #---自己按照公式實(shí)現(xiàn) def auc_calculate(labels,preds,n_bins=100): postive_len=sum(labels) negative_len=len(labels)-postive_len total_case=postive_len*negative_len pos_histogram=[0 for _ in range(n_bins)] neg_histogram=[0 for _ in range(n_bins)] bin_width=1.0/n_bins for i in range(len(labels)): nth_bin=int(preds<i>/bin_width) if labels<i>==1: pos_histogram[nth_bin]+=1 else: neg_histogram[nth_bin]+=1 accumulated_neg=0 satisfied_pair=0 for i in range(n_bins): satisfied_pair+=(pos_histogram<i>*accumulated_neg+pos_histogram<i>*neg_histogram<i>*0.5) accumulated_neg+=neg_histogram<i> return satisfied_pair/float(total_case) if __name__=='__main__': y=np.array([1,0,0,0,1,0,1,0,]) pred=np.array([0.9,0.8,0.3,0.1,0.4,0.9,0.66,0.7]) fpr,tpr,thresholds=roc_curve(y,pred,pos_label=1) print("-----sklearn:",auc(fpr,tpr)) print("-----py腳本:",auc_calculate(y,pred))
AUC的優(yōu)點(diǎn):
它不受關(guān)于平衡性的影響,不同的樣本比例,其AUC的評測結(jié)果都是一樣的。所以我們在訓(xùn)練的時候,可以直接使用AUC作為損失函數(shù)。
以上就是小編給大家總結(jié)的了,希望可以能給各位讀者帶來一定的幫助。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/127815.html
對于很多從事Python的人來說,有很多的人想要去進(jìn)階的,比如學(xué)習(xí)跟多的一些知識,比如,我們在工作中會遇到,使用Python計(jì)算AUC的三種方式,下面給大家做出一個解答?! 〗榻B AUC(Area Under Curve),其實(shí)就是ROC曲線圍成的和下坐標(biāo)軸圍成的一個面積,這個面積的數(shù)值一般是不會大于1的。 當(dāng)然,ROC曲線基本上都在y=x,這條直線上面的一個正上方,因此AUC的正確值應(yīng)該...
摘要:問題是什么能拿來干什么如何求解深入理解是什么混淆矩陣混淆矩陣是理解大多數(shù)評價指標(biāo)的基礎(chǔ),毫無疑問也是理解的基礎(chǔ)。內(nèi)容的召回往往是根據(jù)的排序而決定的。 問題: AUC是什么 AUC能拿來干什么 AUC如何求解(深入理解AUC) AUC是什么 混淆矩陣(Confusion matrix) 混淆矩陣是理解大多數(shù)評價指標(biāo)的基礎(chǔ),毫無疑問也是理解AUC的基礎(chǔ)。豐富的資料介紹著混淆矩陣的概念,...
摘要:精準(zhǔn)率代表對正樣本結(jié)果中的預(yù)測準(zhǔn)確程度,而準(zhǔn)確率則代表整體的預(yù)測準(zhǔn)確程度,既包括正樣本,也包括負(fù)樣本。分?jǐn)?shù)同時考慮了查準(zhǔn)率和查全率,讓二者同時達(dá)到最高,取一個平衡。接受者操作特征曲線曲線,又稱接受 作者:xiaoyu 微信公眾號:Python數(shù)據(jù)科學(xué) 知乎:python數(shù)據(jù)分析師 ROC/AUC作為機(jī)器學(xué)習(xí)的評估指標(biāo)非常重要,也是面試中經(jīng)常出現(xiàn)的問題(80%都會問到)。其實(shí),理解它并...
摘要:精準(zhǔn)率代表對正樣本結(jié)果中的預(yù)測準(zhǔn)確程度,而準(zhǔn)確率則代表整體的預(yù)測準(zhǔn)確程度,既包括正樣本,也包括負(fù)樣本。分?jǐn)?shù)同時考慮了查準(zhǔn)率和查全率,讓二者同時達(dá)到最高,取一個平衡。接受者操作特征曲線曲線,又稱接受 作者:xiaoyu 微信公眾號:Python數(shù)據(jù)科學(xué) 知乎:python數(shù)據(jù)分析師 ROC/AUC作為機(jī)器學(xué)習(xí)的評估指標(biāo)非常重要,也是面試中經(jīng)常出現(xiàn)的問題(80%都會問到)。其實(shí),理解它并...
閱讀 1066·2023-01-14 11:38
閱讀 1062·2023-01-14 11:04
閱讀 901·2023-01-14 10:48
閱讀 2377·2023-01-14 10:34
閱讀 1147·2023-01-14 10:24
閱讀 1026·2023-01-14 10:18
閱讀 654·2023-01-14 10:09
閱讀 733·2023-01-14 10:02