機器學習評估方法及性能度量

  • 2020 年 3 月 15 日
  • 筆記

機器學習評估方法及性能度量

1.方法

已知數據集(D)有限, 需分出一部分用作訓練, 剩下的一部分用作測試.

按比例留出. 訓練集和測試集保持(D)中類別的比例. 以二分類任務為例, 常見做法是將大約(2/3)~(4/ 5)的樣本用作訓練, 剩餘樣本用於測試. 一般採用若干次隨機劃分, 重複進行實驗評估後取平均值作為留出法的評估結果.

交叉檢驗法. 劃分(D = D_1cup cdots cup D_k),(D_icap D_j neq varnothing(ineq j)), 每個子集仍儘可能保持類別比例.每次取一個子集用於測試, 作(k)次評估後取平均值. 特殊做法是"留一法", 即每次留一個元素用於測試.

自助法.(D)(m)個樣本, 從(D)中有放回地抽樣(m)次得到有(m)個元素的(D'), 則可用(D')作訓練集,(Dbackslash D')作為測試集. 自助法在數據集較小, 難以劃分時很有用, 但其改變了數據集的原始分布, 會引入估計偏差. 因此, 當數據充足時, 留出法和交叉檢驗法更常用.

2.度量

對於分類任務, 最常用的兩個度量是錯誤率和精度:
[ begin{aligned} E(f; D) &= frac1m sum_{i = 1}^{m}mathbb{I}(f(x_i = y_i))\ acc(f; D) &= frac1m sum_{i = 1}^{m}mathbb{I}(f(x_i) neq y_i). end{aligned} ]

對於二分類任務, 由於考察的角度不同, 有較多的度量方式.

查准率和查全率.
[ P(recision) = frac{TP}{TP + FP}qquad R(ecall) = frac{TP}{TP + FN}. ]
其中(TP)為真正例數, (FP)為假正例數, (FN)為假反例數. 設原本數據中正例數為(OP), 反例數為(ON); 學習到的正例數為(LP), 反例數為(LN), 則
[ begin{aligned} OP &= TP + FN\ ON &= TN + FP\ LP &= TP + FP\ LN &= TN + FN end{aligned} ]
可知查准率是所有學習到的正例中分類正確的比例; 查全率是原始數據正例被查對的比例.

二分類器(如邏輯回歸)一般會事先設定一個閾值作為超參數(顯式或隱式地), 學習後返回樣本為正例的概率, 若其大於閾值, 則判定該樣本為正例, 否則判定為反例. 閾值越高, 假正例越少, 查准率越高; 閾值越低, 假反例越少, 查全率越高. 兩者的矛盾在於此.

邏輯回歸閾值設為(0.5), 等價於判定滿足(w^Tx+bgeq 0)的樣本為正例, 改變其閾值相當於把回歸得到的直線平行地移動, 等價於判定滿足平移後(w^Tx+b'geq 0)樣本為正例.

通過選取不同的閾值, 則可根據相應的查准率(縱坐標)和查全率(橫坐標)繪製出(P-R)曲線(形如1/4圓). 由上面的分析可知, 閾值是隨橫坐標減小設定的, 即橫坐標為0時閾值最大, 橫坐標為1時閾值最小. 觀察曲線可比較兩個分類器孰優孰劣:

  1. 若 A 的曲線包住 B 的曲線, 則認為 A 優於 B;
  2. 若 A 的平衡點(與(y = x)的交點)大於 B 的, 則認為 A 優於 B;
  3. 比較(P)(R)的調和平均(F_1)
    [ frac{1}{F_1} = frac12left(frac1P + frac1R right), ]
    或比較加權調和平均(F_{beta})
    [ frac{1}{F_{beta}} = frac{1}{1 + beta^2}left(frac1P + frac{beta^2}{R} right), ]
    兩者都是越大越優.

ROC和AUC.
真正例率和假正例率分別為:
[ TPR = frac{TP}{TP + FN}qquad FPR = frac{FP}{TN + FP}. ]
真正例率是正例中被正確識別的比例(查全率), 假正例率是反例中被錯誤識別的比例. 隨著閾值的增大, 真正例率先不變後變小, 假正例率先變小後不變. 和(P-R)曲線一樣, 變化閾值, 以真正例率為縱坐標, 假正例率為橫坐標, 可繪製出 ROC(Receiver Operating Characteristic) 曲線. 比較曲線下方面積(Area Under ROC Curve)
[ AUC = frac12 sum_{i= 1}^{m-1}(x_{i+1} – x_i)(y_i + y_{i+1}), ]
越大分類器越優.

代價敏感錯誤率和代價曲線.
(cost_{01})(正例識別成反例)和(cost_{10})(反例識別成正例)為錯誤代價, 則代價敏感錯誤率為
[ begin{aligned} E(f; D; cost) = &frac1mleft(sum_{x_i in D^{+}} mathbb{I}(f(x_i)neq y_i)cost_{01}right. \ &left. + sum_{x_iin D^{-}}mathbb{I}(f(x_i)neq y_i)cost_{10} right). end{aligned} ]
它的重要之處是意識到不同類別識別錯誤的代價不同, 好比預測地震, 若是把沒地震預測成有地震, 大不了大家睡覺小心點, 但是如果把有地震預測成沒地震, 那造成的風險就大了.

假設(p)是整個樣本空間(不是訓練集)正例的概率(即Drummond and Holt,2006文章中的p_deploy), 以正例代價概率
[ P(+)cost = frac{ptimes cost_{01}}{ptimes cost_{01} + (1-p)times cost_{10}}, ]
為橫坐標, 以歸一化代價
[ cost_{norm} = frac{FNRtimes p times cost_{01} + FPRtimes (1-p)times cost_{10}}{ptimes cost_{01} + (1-p)times cost_{10}}. ]
為縱坐標(其中(FNR = 1 – TPR)是假反例率), 形成代價曲線, 它更關心泛化能力, 因為它更關心總樣本空間的分布.

繪製方法: 固定一個閾值, 就得到相應的(FPR)(FNR), 注意到(cost_{norm})關於(P(+)cost)是線性的, 因此當前閾值下的代價曲線, 即是((0, FPR))((1, FNR))連接成的直線. 最後取得到的所有直線段的下界即為最優的代價曲線. 取下界的意思是對每個(p)固定最優閾值, 使得真正的變化量只剩下正例概率(p). 容易知道代價曲線下所圍的面積是以正例代價概率為測度的期望總體代價.

從最樸素的想法來理解代價曲線:

  1. 假設已知總樣本空間有(m)個正例, 有(n)個反例. 固定一個分類閾值, 將得到相應的假正例率((FPR))和假反例率((FNR)), 那麼可以推測總樣本空間的代價為:
    [ cost = FPRcdot mcdot cost_{01} + FNRcdot ncdot cost_{10}. ]
  2. 假設總樣本空間數量為(1), 正例數量為(p), 則反例數量為(1-p), 我們可以推測總樣本空間的代價為:
    [ cost = FPRcdot pcdot cost_{01} + FNRcdot (1-p)cdot cost_{10}. tag{*} ]
    若正例和反例全都預測錯誤, 即假正例率和假反例率都為(1), 此時代價最大, 為
    [ cost_{max} = pcdot cost_{01} + (1-p)cdot cost_{10}. ]
    歸一化代價即是((*))式除掉上式, 歸一化後的代價為
    [ cost_{norm} = frac{cost}{cost_{max}} = frac{FNRcdot p cdot cost_{01} + FPRcdot (1-p)cdot cost_{10}}{pcdot cost_{01} + (1-p)cdot cost_{10}} in [0, 1]. ]
    如果不歸一化, 我們以(p)(pcdot cost_{01})為橫坐標, 以((*))式為縱坐標, 按照前面的畫法直接畫出來的圖和代價曲線是等價的, 但是此時需要知道誤分類代價.

歸一化後, 以(p)或正例代價概率為橫坐標(即把上式中(FNR)的係數那一塊作為自變數), 則畫圖的時候, 不必知道誤分類代價.

另外我們其實可以注意到, 上面第2點中的代價其實是在樣本空間分布為((p, 1-p))下的一個期望, 改變(p)其實是在改變樣本空間的分布. 因此代價曲線下面的面積從這個意義下講是所有可能的數據分布的一個平均代價, 期望的期望, 平均的平均, 這是造成人們理解困難的根源.