日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

机器学习中的评价指标

發布時間:2024/5/24 综合教程 37 生活家
生活随笔 收集整理的這篇文章主要介紹了 机器学习中的评价指标 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基本概念介紹

  1 混淆矩陣

              

  2 準確率:

             

   3 精準率:

          

   4 召回率:

          

    5 P-R曲線(查準率與查全率)

            

   6 靈敏度與特異度

          

    概率角度理解評價指標:

          我們也可以從另一個角度考慮:條件概率。我們假設X為預測值,Y為真實值。那么就可以將這些指標按條件概率表示:

          

          

7 ROC曲線

         TPR: 真正率 FPR:假正率

          

介紹下AUC原理

由于AUC關聯的內容比較多,面試時問得也非常細,因此,我們將按照以下順序對AUC進行重點介紹。

為什么要用AUC?
AUC與ROC?
AUC的實際含義及計算方法?

為什么要用AUC?

1. 為什么不用準確率(accuracy)?

在二分類中,如果正反例分布不平衡,而我們對minority class 更感興趣,這時accuracy評價指標基本沒有參考價值,比如欺詐檢測,癌癥檢測等場景。舉個栗子:

在測試集里,有100個sample,99個反例,只有1個正例。如果我的模型不分青紅皂白對任意一個sample都預測是反例,那么我的模型的accuracy是 正確的個數/總個數 = 99/100 = 99%。

2. 為什么不用召回率(recall)和精確率(precision)?

召回率:把實際為真值的判斷為真值的概率。

精確率:判斷為真值,判斷正確的概率(實際也為真值)。

recall = TP / (TP + FN)

precision = TP / (TP + FP)

一般說來,如果想要召回的多,精確率就要下降;想要精確率提升,召回的就少。因此,召回率與精確率是魚與熊掌不可兼得。

3. 為什么不用F1分數?

F1-score 可以看做是precision和recall的綜合評價指標,公式為:

問題就是,如果你的兩個模型,一個precision特別高,recall特別低,而另一個recall特別高,precision特別低的時候,F1-score可能是差不多的,你也不能基于此來作出選擇。

4. AUC適用場景

說到這里,終于講到我們的AUC了,它是一個用來評估分類模型性能的常見指標,優點是:

適用于正負樣本分布不一致的場景; 在負樣本數量遠遠大于正樣本數量的情況下,PR曲線更能反映分類器的好壞
對于分類器性能的評價,不限定單一的分類閾值;

不過,要真正理解地AUC,還要從ROC開始講起。

AUC與ROC?

ROC是什么?

ROC,全名叫做Receiver Operating Characteristic(受試者操作曲線),其主要分析工具是一個畫在二維平面上的曲線——ROC curve,其中,平面的橫坐標是假正率(FPR),縱坐標是真正率(TPR)。

幾個概念簡單解釋下:

真正率(TPR) = 靈敏度(Sensitivity) = 召回率:把實際為真值的判斷為真值的概率。
特異度(Specificity):把實際為假值的判斷為假值的概率。
假正率(FPR) = 1 - 特異度:把實際為假值的判斷為真值的概率。

TPR = TP / (TP+FN)

FPR = FP / (FP + TN

ROC曲線就是,在測試樣本上根據不同的分類器閾值,計算出一系列的(FPR,TPR)點集,將其在平面圖中連接成曲線,這就是ROC曲線。

畫roc曲線的一個例子

假設已經得出一系列樣本被劃分為正類的概率,然后按照大小排序,下圖是一個示例,圖中共有20個測試樣本,“Class”一欄表示每個測試樣本真正的標簽(p表示正樣本,n表示負樣本),“Score”表示每個測試樣本屬于正樣本的概率。

接下來,我們從高到低,依次將“Score”值作為閾值threshold,當測試樣本屬于正樣本的概率大于或等于這個threshold時,我們認為它為正樣本,否則為負樣本。舉例來說,對于圖中的第4個樣本,其“Score”值為0.6,那么樣本1,2,3,4都被認為是正樣本,因為它們的“Score”值都大于等于0.6,而其他樣本則都認為是負樣本。每次選取一個不同的threshold,我們就可以得到一組FPR和TPR,即ROC曲線上的一點。這樣一來,我們一共得到了20組FPR和TPR的值,將它們畫在ROC曲線的結果如下圖:

進一步理解ROC曲線

如下面這幅圖,(a)圖中實線為ROC曲線,線上每個點對應一個分類器閾值下(FPR,TPR)。

橫軸表示FPR,FPR越大,預測正類中實際負類越多。

縱軸表示TPR:正類覆蓋率,TPR越大,預測正類中實際正類越多。

ROC曲線必過(0, 0)和(1, 1)兩個點。

(1, 1)點含義:判分閾值為0,所有樣本都被預測為正樣本,TPR=1,FPR=1。
判分閾值逐漸增加,TPR和FPR同時減小。
(0, 0)點含義:判分閾值為1,所有樣本都預測為負樣本,TPR=0,FPR=0。

理想目標:TPR=1,FPR=0,即圖中(0,1)點,故ROC曲線越靠攏(0,1)點,越偏離45度對角線越好,Sensitivity、Specificity越大效果越好。

AUC與ROC的聯系

雖然,ROC曲線可以評測分類器的好壞,但是,人們總是希望能有一個具體數值來作為評價指標,于是Area Under roc Curve(AUC)就出現了。

顧名思義,AUC的值就是處于ROC curve下方的那部分面積的大小。通常,AUC的值介于0.5到1.0之間,較大的AUC代表了較好的performance。

AUC怎么計算?

AUC有什么實際含義呢?簡單來說其實就是,隨機抽出一對樣本(一個正樣本,一個負樣本),然后用訓練得到的分類器來對這兩個樣本進行預測,預測得到正樣本的概率大于負樣本概率的概率,這個概率值就是AUC。

有以下兩種方式計算AUC:

(1)方法一:

在有M個正樣本,N個負樣本的數據集里。一共有M*N對樣本(一對樣本即,一個正樣本與一個負樣本)。統計這M*N對樣本里,正樣本的預測概率大于負樣本的預測概率的個數。

計算復雜度:O(M*N)。

(2)方法二:

其中:

(1)M, N分別是正樣本和負樣本的個數;

(2)代表第i條樣本的序號。(概率得分從小到大排,排在第rank個位置)

(3)表示把正樣本的序號加起來。

AUC的計算主要以下幾種方法:

計算ROC曲線下的面積。這是比較直接的一種方法,可以近似計算ROC曲線一個個小梯形的面積。幾乎不會用這種方法
從AUC統計意義去計算。所有的正負樣本對中,正樣本排在負樣本前面占樣本對數的比例,即這個概率值。
具體的做法就是它也是首先對prob score從大到小排序,然后令最大prob score對應的sample 的rank為n,第二大score對應sample的rank為n-1,以此類推。然后把所有的正類樣本的rank相加,再減去M-1種兩個正樣本組合的情況。得到的就是所有的樣本中有多少對正類樣本的score大于負類樣本的score。最后再除以M×N。公式如下:

AUC計算代碼:

def calAUC(prob,labels):
    f = list(zip(prob,labels))
    rank = [values2 for values1,values2 in sorted(f,key=lambda x:x[0])]
    rankList = [i+1 for i in range(len(rank)) if rank[i]==1]
    posNum = 0
    negNum = 0
    for i in range(len(labels)):
        if(labels[i]==1):
            posNum+=1
        else:
            negNum+=1
    auc = 0
    auc = (sum(rankList)- (posNum*(posNum+1))/2)/(posNum*negNum)
    print(auc)
    return auc

參考文獻:1https://www.zhihu.com/question/30643044

      2https://mp.weixin.qq.com/s/rfnMox5BEKhrBcpGRMvRVg

總結

以上是生活随笔為你收集整理的机器学习中的评价指标的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。