1. 程式人生 > >機器學習評估方法及效能度量

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

- [機器學習評估方法及效能度量](#%e6%9c%ba%e5%99%a8%e5%ad%a6%e4%b9%a0%e8%af%84%e4%bc%b0%e6%96%b9%e6%b3%95%e5%8f%8a%e6%80%a7%e8%83%bd%e5%ba%a6%e9%87%8f) - [1 方法](#1-%e6%96%b9%e6%b3%95) - [2 度量](#2-%e5%ba%a6%e9%87%8f) - [2.1 錯誤率和精度](#21-%e9%94%99%e8%af%af%e7%8e%87%e5%92%8c%e7%b2%be%e5%ba%a6) - [2.2 查準率和查全率](#22-%e6%9f%a5%e5%87%86%e7%8e%87%e5%92%8c%e6%9f%a5%e5%85%a8%e7%8e%87) - [2.3 ROC和AUC](#23-roc%e5%92%8cauc) - [2.4 代價敏感錯誤率和代價曲線](#24-%e4%bb%a3%e4%bb%b7%e6%95%8f%e6%84%9f%e9%94%99%e8%af%af%e7%8e%87%e5%92%8c%e4%bb%a3%e4%bb%b7%e6%9b%b2%e7%ba%bf) # 機器學習評估方法及效能度量 ## 1 方法 已知資料集$D$有限, 需分出一部分用作訓練, 剩下的一部分用作測試. **按比例留出.** 訓練集和測試集保持$D$中類別的比例. 以二分類任務為例, 常見做法是將大約$2/3$~$4/ 5$的樣本用作訓練, 剩餘樣本用於測試. 一般採用若干次隨機劃分, 重複進行實驗評估後取平均值作為留出法的評估結果. **交叉檢驗法.** 劃分$D = D_1\cup \cdots \cup D_k$,$D_i\cap D_j \neq \varnothing(i\neq j)$, 每個子集仍儘可能保持類別比例.每次取一個子集用於測試, 作$k$次評估後取平均值. 特殊做法是"留一法", 即每次留一個元素用於測試. **自助法.** 設$D$有$m$個樣本, 從$D$中有放回地抽樣$m$次得到有$m$個元素的$D'$, 則可用$D'$作訓練集,$D\backslash D'$作為測試集. 自助法在資料集較小, 難以劃分時很有用, 但其改變了資料集的原始分佈, 會引入估計偏差. 因此, 當資料充足時, 留出法和交叉檢驗法更常用. ## 2 度量 ### 2.1 錯誤率和精度 對於分類任務, 最常用的兩個度量是**錯誤率和精度**: $$ \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} $$ 對於二分類任務, 由於考察的角度不同, 有較多的度量方式. ### 2.2 查準率和查全率 **查準率和查全率**定義為 $$ 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+b\geq 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} = \frac12\left(\frac1P + \frac1R \right), $$ 或比較加權調和平均$F_{\beta}$ $$ \frac{1}{F_{\beta}} = \frac{1}{1 + \beta^2}\left(\frac1P + \frac{\beta^2}{R} \right), $$ 兩者都是越大越優. ### 2.3 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}), $$ 越大分類器越優. ### 2.4 代價敏感錯誤率和代價曲線 設$cost_{01}$(正例識別成反例)和$cost_{10}$(反例識別成正例)為錯誤代價, 則**代價敏感錯誤率**為 $$ \begin{aligned} E(f; D; cost) = &\frac1m\left(\sum_{x_i \in D^{+}} \mathbb{I}(f(x_i)\neq y_i)cost_{01}\right. \\ &\left. + \sum_{x_i\in D^{-}}\mathbb{I}(f(x_i)\neq y_i)cost_{10} \right). \end{aligned} $$ 它的重要之處是意識到不同類別識別錯誤的代價不同, 好比預測地震, 若是把沒地震預測成有地震, 大不了大家睡覺小心點, 但是如果把有地震預測成沒地震, 那造成的風險就大了. 假設$p$是整個樣本空間(不是訓練集)正例的概率(即Drummond and Holt,2006文章中的p_deploy), 以正例代價概率 $$ P(+)cost = \frac{p\times cost_{01}}{p\times cost_{01} + (1-p)\times cost_{10}}, $$ 為橫座標, 以歸一化代價 $$ cost_{norm} = \frac{FNR\times p \times cost_{01} + FPR\times (1-p)\times cost_{10}}{p\times 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 = FPR\cdot m\cdot cost_{01} + FNR\cdot n\cdot cost_{10}. $$ 2. 假設總樣本空間數量為$1$, 正例數量為$p$, 則反例數量為$1-p$, 我們可以推測總樣本空間的代價為: $$ cost = FPR\cdot p\cdot cost_{01} + FNR\cdot (1-p)\cdot cost_{10}. \tag{*} $$ 若正例和反例全都預測錯誤, 即假正例率和假反例率都為$1$, 此時代價最大, 為 $$ cost_{max} = p\cdot cost_{01} + (1-p)\cdot cost_{10}. $$ 歸一化代價即是$(*)$式除掉上式, 歸一化後的代價為 $$ cost_{norm} = \frac{cost}{cost_{max}} = \frac{FNR\cdot p \cdot cost_{01} + FPR\cdot (1-p)\cdot cost_{10}}{p\cdot cost_{01} + (1-p)\cdot cost_{10}} \in [0, 1]. $$ 如果不歸一化, 我們以$p$或$p\cdot cost_{01}$為橫座標, 以$(*)$式為縱座標, 按照前面的畫法直接畫出來的圖和代價曲線是等價的, 但是此時需要知道誤分類代價. 歸一化後, 以$p$或正例代價概率為橫座標(即把上式中$FNR$的係數那一塊作為自變數), **則畫圖的時候, 不必知道誤分類代價**. 另外我們其實可以注意到, 上面第2點中的代價其實是在樣本空間分佈為$(p, 1-p)$下的一個期望, 改變$p$其實是在改變樣本空間的分佈. 因此代價曲線下面的面積從這個意義下講是所有可能的資料分佈的一個平均代價, 期望的期望, 平均的平均, 這是造成人們理解困難的