目錄
一、性能度量
性能度量是衡量模型泛化能力的評價標準,反映了任務需求。
通俗講就是對於多個模型,哪個好呢?性能度量就是評判這個。
什麼樣的模型是好的,不僅取決於算法和數據,還取決於任務需求。
二、迴歸問題的性能度量
迴歸問題常用的性能度量是“圴方誤差”
, 是預測值, 是真實值。
三、分類問題的性能度量
3.1 混淆矩陣
一些標記:
正例Positive,反例Negative
預測是正確的True,預測是錯誤的False
TP:預測是正例,預測正確,即實際是正例
FP:預測是正例,預測錯誤,即實際是反例
TN:預測是反例,預測正確,即實際是反例
FN:預測是反例,預測錯誤,即實際是正例
實際正例:TP+FN
實際反例:FP+TN
混淆矩陣:
3.2 準確率、召回率與F1
- 準確率
,準確率(亦稱查準率)強調準,表示預測是正例中,預測對的比例。
- 召回率
,召回率(亦稱查全率)強調全,表示實際是正例中,預測對的比例。
舉例:對於某個請求關鍵詞,實際有200篇文章相關。某個算法預測100篇文章相關,而這100篇預測中,實際相關的只有80篇。
那麼 P = 80 / 100 = 0.8,R = 80 / 200 = 0.4
一句話總結:P與R分子相同,都是TP,P的分母是預測正例,R的分母是實際正例。
- PR圖與BEP
PR圖怎麼畫?
其實這要從排序型模型說起。拿邏輯迴歸舉例,邏輯迴歸的輸出是一個0到1之間的概率數字,因此,如果我們想要根據這個概率判斷用戶好壞的話,我們就必須定義一個閾值。通常來講,邏輯迴歸的概率越大說明越接近1,也就可以說他是壞用戶的可能性更大。比如,我們定義了閾值爲0.5,即概率小於0.5的我們都認爲是好用戶,而大於0.5都認爲是壞用戶。因此,對於閾值爲0.5的情況下,我們可以得到相應的一對查準率和查全率。我們就遍歷0到1之間所有的閾值,而每個閾值下都對應着一對查準率和查全率,從而我們就得到了這條曲線。
在PR圖中,包圍面積大的好:算法A > 算法C,算法B > 算法C,那麼算法A與算法B呢?
BEP,是在PR圖中取P=R,這樣算法A > 算法B > 算法C
比BEP更常用的是F1度量
- F1
,F1中P與R權重一樣。
若對P/R有不同偏好:
當 > 1時,R有更大影響,當 < 1時,P有更大影響
有的場景你會絕大程度地關心準確率,而另外一些場景你會更關心召回率。舉例子,如果你訓練一個分類器去檢測視頻是否適合兒童觀看,你會傾向選擇那種即便拒絕了很多好視頻、但保證所保留的視頻都是好(高準確率)的分類器,而不是那種高召回率、但讓壞視頻混入的分類器(這種情況下你或許想增加人工去檢測分類器選擇出來的視頻)。另一方面,加入你訓練一個分類器去檢測監控圖像當中的竊賊,有着 30% 準確率、99% 召回率的分類器或許是合適的(當然,警衛會得到一些錯誤的報警,但是幾乎所有的竊賊都會被抓到)。
3.3 ROC與AUC
ROC(Receiver Operating Characteristic)曲線,又稱接受者操作特徵曲線。該曲線最早應用於雷達信號檢測領域,用於區分信號與噪聲。後來人們將其用於評價模型的預測能力,ROC曲線是基於混淆矩陣得出的。
- ROC曲線
真正例率,分母是實際是正例,(TPR其實就是召回率)
實際是正例中,預測是正例的比例(預測對了,TP)
假正例率 ,分母是實際是負例
實際是負例中,預測是正例的比例(預測錯了,FP)
ROC曲線中,橫座標是假正例率,縱座標是真正例率
我們發現TPR和FPR分別是基於實際表現正例和負例出發的,也就是說它們分別在實際的正樣本和負樣本中來觀察相關概率問題。正因爲如此,所以無論樣本是否平衡,都不會被影響。還是拿之前的例子,總樣本中,90%是正樣本,10%是負樣本。我們知道用準確率是有水分的,但是用TPR和FPR不一樣。這裏,TPR只關注90%正樣本中有多少是被真正覆蓋的,而與那10%毫無關係,同理,FPR只關注10%負樣本中有多少是被錯誤覆蓋的,也與那90%毫無關係,所以可以看出:如果我們從實際表現的各個結果角度出發,就可以避免樣本不平衡的問題了,這也是爲什麼選用TPR和FPR作爲ROC/AUC的指標的原因。
與前面的P-R曲線類似,ROC曲線也是通過遍歷所有閾值來繪製整條曲線的。
TPR表示覆蓋程度,FPR表示虛報的程度(負樣本中有多少被錯誤預測爲正例,因爲我們關心的是正例),所以我們希望覆蓋越多越好,虛報越少越好。即TPR越高,FPR越低(即ROC曲線越陡),模型性能越好。
ROC一個最大優點是:無視樣本不平衡。
- AUC
AUC表示ROC曲線下面積,越大表示模型性能越好。
auc計算公式:https://blog.csdn.net/qq_22238533/article/details/78666436
參考: