機器學習——性能度量
- 2020 年 3 月 6 日
- 筆記
衡量模型泛化能力的標準就是性能能度量(performance measure)。以下分為兩種任務進行記錄。
回歸任務
均方誤差
回歸任務最常用的性能度量就是均方誤差(mean squared error),即:
$displaystyle E(f;mathcal{D}) = frac{1}{m}sumlimits_{i=1}^{m}(f(x_i)-y_i)^2, x_i in mathcal{D}$
分類任務
錯誤率與精度
錯誤率$ E(f;mathcal{D})$與精度$ acc(f;mathcal{D})$容易理解,錯誤率是預測正確的數量除以總數,精度就是預測錯誤的數量除以總數:
查准率與查全率
為了讓模型滿足一些更精確的要求,僅僅錯誤率和精度是不夠的,於是又提出了查准率和查全率。以二分類任務為例,首先由預測結果統計以下四個數量(稱作分類結果混淆矩陣):
真實情況 | 預測結果 | |
正例 | 反例 | |
正例 | TP(True Positive 判斷對) | FN(False Negative 判斷錯) |
反例 | FP(False Positive 判斷錯) | TN(True Negative 判斷對) |
查准率就是預測為正例的樣本中正例所佔的比例:
查全率就是所有正例中被預測為正例的樣本所佔的比例:
$displaystyle R = frac{TP}{TP+FN}$
可以發現它們是兩個矛盾的量,和概率論里假設檢驗的兩種錯誤類似。我們不能一味地只追求其中一個指標,比如全判斷正確時查全率為1,或者只判斷一個最有可能的為正例時查准率為1,這樣另外一個指標就很差了。這兩種都是欠擬合的表現。
P-R曲線
實際上分類任務就是將連續的數通過一個閾值變換得到離散的類別值,和回歸任務的區別就在這裡。所以分類任務也可以像回歸任務一樣將樣本的預測概率進行一個排序,將有最可能為正例的樣本排在最前,最不可能的排在最後。然後從前往後依次將樣本納入正例預測(其它為反例預測),每次納入都計算此時的$P$與$R$。從而在以$P$為縱坐標,$R$為橫坐標的坐標系中獲得一系列的點,最後連接各點得到P-R曲線。如圖:
P-R曲線可以用來表示模型劃分正反例的情況,也就是正例排在反例之前的傾向。曲線越向外擴張,說明正例更多是排在反例之前的(這正是我們想要的)。當所有正例都排在反例之前時,曲線就和坐標軸連成一個(1,1)的正方形(此時模型只要找到正反例的分界線就能完美劃分正反例)。我們可以通過曲線與坐標軸構成的面積是否更大,或平衡點($P$等於$R$時)是否更接近(1,1)來判斷模型的相對好壞。
不過這個曲線畫的不太嚴謹,如果真的是按照以上的方法來畫曲線的話,查准率不可能在查全率為1的情況下為0。除非反例樣本比正例樣本多得多(可以近似為0),但若是這樣,曲線則應該是和反比例函數一樣向下凸的,而不是如圖向上凸。
F1度量
平衡點用於考察模型對正反例的區分程度,考慮了模型判斷時正反例的可能性。而$F1$則是對$P$和$R$使用調和平均數進行了一個平均(據說是因為調和平均數更重視較小值才使用它):
$displaystyle F1 = frac{2}{frac{1}{R}+frac{1}{P}} = frac{2PR}{P+R}$
另外對於訓練側重不同,可以對這個調和平均進行加權:
$displaystyle F_{beta} = frac{(1+beta^2)PR}{beta^2P+R}$
用$beta$可能不容易看,用另一種方式表示加權:
$displaystyle frac{a+b}{frac{a}{R}+frac{b}{P}}$
上下同乘$frac{PR}{b}$得:
$displaystyle frac{frac{a+b}{b}PR}{frac{a}{b}P+R}$
最後令$frac{a}{b}$為$beta^2$即可得到$F_{beta}$。可以判斷,$|beta|<1$時,即$|a|<|b|$,則查准率$P$的權重更大,從而對模型的影響比查全率更大;$|beta|>1$時則相反;$|beta|=1$時$F_beta$變為了$F_1$。
當對模型進行多次測試(每次測試用一組測試集)並獲取多個混淆矩陣時,我們想綜合考察這些混淆矩陣。通常想到的做法就是求平均,因此,對$F1$有以下兩種平均方式。
宏$F1$:
$displaystyle P_{macro}=frac{1}{n}sumlimits_{i=1}^{n}P_i$
$displaystyle R_{macro}=frac{1}{n}sumlimits_{i=1}^{n}R_i$
$displaystyle F1_{macro} = frac{2P_{macro} R_{macro}}{P_{macro}+R_{macro}}$
微$F1$:
$displaystyle P_{micro}=frac{overline{TP}}{overline{TP}+overline{FP}}$
$displaystyle R_{micro}=frac{overline{TP}}{overline{TP}+overline{FN}}$
$displaystyle F1_{micro} = frac{2P_{micro} R_{micro}}{P_{micro}+R_{micro}}$
其中宏$F1$是直接對$P$和$R$進行平均得到最終的$P$和$R$,微$F1$則是將所有的數量總和到一起再計算最終的$P$和$R$(如果橫線代表的是算術平均數的話,其它平均數就不是總和了)。
ROC與AUC
ROC(Receiver Operating Characteristic)曲線與P-R曲線類似,也可以用來表示模型對樣本預測可能性排序的優劣(正例全都排在反例之前就是最優)。但是它和P-R曲線不同,它的起點和終點分別一定是(0,0)和(1,1),所以能更具體地反應這個情況(P-R曲線有時不一定是上圖的情況,具體情況比較複雜,所以不太好用)。ROC曲線分別定義橫縱坐標為假正例率(FPR False Positive Rate),和真正例率(TPR True Positive Rate):
$displaystyle {rm FPR} = frac{FP}{TN + FP}$
$displaystyle {rm TPR} = frac{TP}{TP + FN}$
可以發現$TPR$就是查全率$R$,但因為是在不同的圖裡,側重點不同,所以叫法也就不一樣了。和P-R曲線一樣,排好序從前往後納入正例,我們可以獲得這樣的折線圖:
剛開始點在(0,0)的位置,因為沒有樣本被納為正例(全默認為反例)。隨後每納入一個正例樣本為正例,點就向上一格。而每納入一個反例樣本為正例,點就向右一格。最後達到(1,1),此時所有正反樣本都被納為正例。我們希望最好的情況就是正例樣本全排在反例樣本之前,所以這個折線此時應該先從(0,0)筆直往上到(0,1),再筆直往右到(1,1)。最壞的情況就是反例樣本全在正例樣本之前,曲線從(0,0)直線到(1,0),再直線到(1,1)。
我們可以計算ROC曲線以下包圍的面積來比較模型的優劣,也就是AUC(Area Under ROC Curve)。這個面積實際上就是排在每一個正例樣本之後的反例樣本數量$x_i$的總和,再除以反例樣本總數$n$與正例樣本的總數$m$(除以總數變成概率):
$displaystyle {rm AUC} = frac{1}{nm}sumlimits_{i=1}^{m}x_i =sumlimits_{i=1}^{m} frac{x_i}{n}timesfrac{1}{m}$
其中,$displaystylefrac{x_i}{n}timesfrac{1}{m}$ 面積範圍如圖中紅框。$displaystylefrac{x_i}{n}$為寬,$displaystylefrac{1}{m}$為高:
通常測試的樣本的量是很大的,所以折線通常會變成一個圓潤的曲線:
這時,因為樣本的量很大,曲線的形狀就只和模型的性能(將正例排在反例之前)相關了(和樣本中正例的比例無關)。並且測試量大的情況下不會因為一些噪聲點而使圖像出現大的偏差。比如當測試量比較小的時候,測試集1不湊巧幾個正例被排在了反例之前,而測試集2比一少了幾個這樣的情況。由於測試量小,二者畫出來的折線相差就很大了。
下圖是樣本總量為100000,正例樣本率分別為10%和90%的兩條ROC曲線(因為沒有真的訓練出模型,這裡將每個正例樣本的概率設為以0.8為均值,0.55為標準差的正態分佈上的隨機數;反例樣本的概率設為均值為0.2的相同分佈上的隨機數):
下圖是樣本總量為1000,正例樣本率分別為10%和90%的兩條ROC曲線:
可以看到,大樣本量下,正例率對ROC曲線的影響微乎其微(實際上它影響的也就是每次向上、向右走的步伐大小而已,對曲線總體趨勢的影響在即使小樣本量上也沒有),極限情況就是無影響(當然正例率不能為0或1這種極限值)。
代價敏感錯誤率與代價曲線
模型總是會判斷出錯的,對於二分類模型的出錯,可以分為兩種情況:1.正例判斷為反例、2.反例判斷為正例。根據實際情況,這兩種錯誤的代價通常是不同的。所以要分別定義不同的代價,有以下代價矩陣:
真實類別 | 預測類別 | |
0類 | 1類 | |
0類 | 0 | $C_{01}$ |
1類 | $C_{10}$ | 0 |
代價的絕對值大小並沒有實際意義,有意義的是他們的比值$frac{C_{01}}{C_{10}}$,即二類錯誤的嚴重性比重。設樣本為0類的概率為$p$,第一類錯誤和第二類錯誤的概率為條件概率,定義如下:
$P_{01} = P(Judge=1|Sample=0)$
$P_{10} = P(Judge=0|Sample=1)$
學習器與分類器
為了後面便於辨認,區分一下分類器與學習器。學習器是能夠給測試樣本進行排序的模型(比如給樣本設連續的值,值越大表示它為正例的可能性越大,再進行排序);分類器是確定了閾值的學習器(連續值大於閾值為正例,小於閾值為反例)。而確定了閾值也就確定了犯錯的概率,為什麼這麼說呢?如下圖:
假設學習器關於0類和1類樣本的預測值的概率密度分別是上圖的紅線和藍線。比如這裡閾值取為0(閾值取定,學習器進化為分類器),左邊淡藍色面積就是分類器把0類樣本預測為1類的犯錯概率,右邊淡橙色面積就是分類器把1類樣本預測為0類的犯錯概率,也就是這兩個犯錯概率由閾值確定而確定了。而當其中一個犯錯概率確定時,顯然閾值和另一個犯錯概率也確定了。因此,這三個值在一個學習器(注意!不是分類器,分類器已經確定這三個值了)中是一一對應的。正如ROC整條曲線代表學習器在閾值變化時的$TPR$和$FPR$,而曲線上每個點表示在該閾值下變成的分類器的$TPR$和$FPR$。
樣本在先驗概率p下於分類器的期望代價
對於某個樣本,在某個分類器(即固定了閾值的學習器)與某個固定的$p$下,它的期望代價為:
$displaystylemathop{E(C)}= sumlimits_{i=0}^{1}sumlimits_{j=0}^{1} P(Sample=i)P(Judge=j|Sample=i)C_{ij}=pP_{01}C_{01} + (1-p)P_{10}C_{10}$
又因為代價的絕對值沒有實際意義,所以對它進行歸一化:
$displaystyle E(C)_{norm}=frac{P_{01}pC_{01} + P_{10}(1-p)C_{10}}{p C_{01} + (1-p) C_{10}}$
當p未知且服從均勻分佈時,樣本於分類器的期望代價
我們可以將歸一化期望代價與$p$分別做為縱坐標與橫坐標,以$p$為自變量可得一條曲線,如下圖:
對曲線下方進行積分,計算面積。表示正例樣本概率的概率分佈為(0~1)的均勻分佈時,樣本在這個分類器上的期望代價:
樣本於整個學習器的期望代價
對於上面求得期望,這個期望可以被看做關於閾值(兩個錯誤率)的函數。所以我們還可以再在這個閾值上進行求期望。對於學習器,我們可以給它取把所有的閾值都取個遍。對於每個閾值(對應一個分類器與ROC曲線上的一點),都能在圖上畫出一條以$p$為自變量的期望代價曲線,如圖(因為電腦性能,ROC曲線只取了10000個樣本):
所有的曲線在圖中產生了一個下界曲線,即學習器的代價曲線。這個下界曲線的每一點,表示在該$p$下,樣本於分類器(學習器取任意閾值)的最小期望代價。就是說,學習器在該曲線上,對於每個$p$,都取到了最優閾值(最優分類器)。那麼它的面積就是:對於$psim U(0,1)$,分類器的最小期望代價:
$displaystylemathop{E{min_{threshold}[E(C)_{norm}]}}_{psim U(0,1)} = int_{0}^{1} min_{threshold}[E(C)_{norm}] dp = int_{0}^{1} min_{P_{01},P_{10}}[ frac{P_{01}pC_{01} + P_{10}(1-p)C_{10}}{p C_{01} + (1-p) C_{10}} ] dp$,
其中$P_{10}$和$P_{01}$對應一個$threshold$
或者把它看做學習器的一個指標,稱之為學習器的期望總體代價。(搞得這麼複雜,這些代價的定義實際上也就是一個相對的值,在對學習器進行比較時,我們可以用這個進行比較)
西瓜書中的圖是直線(可能為了更直觀),但是橫坐標變得很複雜,是$p$先乘代價再歸一化。即所謂的正例概率代價:
$displaystyle P(+)cost = frac{pC_{01}}{pC_{01}+(1-p)C_{10}}$
導致後面計算的期望代價(在這個複雜的橫坐標上積分面積)的意義我都有點搞不明白,而且查閱的資料一般橫坐標也是用$p$。但是我認為對於評價學習器來說,用哪個都是一樣的。因為都是相對的量,而且趨勢也是相同的。圖像如下圖: