周志華西瓜書《機器學習筆記》學習筆記第二章《模型的評估與選擇》

Yolo_1996發表於2018-12-02

本章是西瓜書的第二章,周志華老師在這一部分基礎對機器學習中的基礎知識進行介紹,主要闡述了誤差、過擬合的相關概念和模型的評估度量方法。
博主在今年元旦之後就要正式開始做畢業設計了,所以我會努力在今年元旦假期結束之前把西瓜書的所有內容更新。也希望大家可以監督我嘻嘻。

一、經驗誤差與過擬合

  • 錯誤率: 分類錯誤的樣本數佔樣本總數的比例稱為“錯誤率”,即如果我們在mm個樣本中有aa個樣本分類錯誤,則錯誤率為 E=amE=\frac{a}{m}
  • 精度: 與錯誤率相對應,分類正確的樣本數佔樣本總數的比例就是精度,即精度=1-錯誤率。
  • 誤差: 學習器的實際預測輸出與樣本的真實輸出之間的差異稱為“誤差”,學習器在訓練集上的誤差稱為“訓練誤差”或“經驗誤差”,在新樣本上的誤差稱為”泛化誤差“。我們希望得到的學習器具有的泛化誤差越小越好,但是我們事先並不知道新樣本是什麼樣,實際能做的是努力使經驗誤差最小化。
  • 過擬合: 學習器把訓練樣本自身的一些特點也當做潛在樣本都會具有的一般性質,導致泛化效能下降。過擬合是機器學習面臨的關鍵障礙,各類學習演算法都必然帶有一些針對過擬合的措施,但是過擬合併不能徹底避免,我們只能對其進行“緩解”。
  • 欠擬合: 對訓練樣本的一般性質尚未學習好。我們可以通過下圖對過擬合和欠擬合進行直觀的理解。
    在這裡插入圖片描述

二、評估方法

我們無法直接獲得泛化誤差從而對學習器進行評估,而訓練誤差又由於有過擬合現象的存在不適合作為標準。為了對模型進行評估,我們需要用一個測試集來測試學習器對新樣本的判別能力,用測試集上的測試誤差來作為泛化誤差的近似。

測試樣本是從樣本中獨立同分布取樣而得,我們希望取得的測試集要儘可能的和訓練集互斥,即測試集儘量不在訓練集中出現,未在訓練過程使用過。

這一部分內容主要就是介紹了幾種可以用來將測試集與訓練集進行分離的方法。

2.1 留出法

“留出法”(hold-out)直接把資料集D劃分成兩個互斥的集合,其中一個集合作為訓練集S,另一個作為測試集T,即D=S∪T,S∩T=∅,在S上訓練出模型後,用T來評估其測試誤差,作為對泛化誤差的估計。

這裡有幾點需要我們特別注意:

  • 訓練/測試集的劃分要儘可能保持資料分佈的一致性,避免因為資料劃分的過程中引入額外的誤差而對最終的結果產生影響。從取樣的角度來看待資料集的劃分過程, 我們可以用“分層取樣”來保留原先的分類比例。
  • 在給定訓練/測試集的樣本比例後,我們依舊存在很多種劃分方式對初始資料集進行分割,不同的劃分方式會產生不同的訓練/測試集,模型評估的結果也將有所不同,所以單次劃分的結果並不可靠,我們在使用留出法時一般要採用若干次隨機劃分、重複進行實驗評估後取平均值作為留出法的評估結果。
  • 如何確定訓練集和測試集的數目是留出法中的一堆矛盾關係,一般在實際使用過程中我們將2345\frac{2}{3}—\frac{4}{5}的樣本用於訓練,剩餘的用於測試。

2.2 交叉驗證法

交叉驗證法(cross validation):先將資料集DD分為kk個大小相似的互斥子集,即D=D1D2DkD=D_{1}∪D_{2}∪……∪D_{k},D_{i}∩D_{j}=空集(iji≠j)。每次用k1k-1個子集的並集作為訓練集,餘下的子集作為測試集;獲得kk組訓練/測試集,從而可進行kk次訓練和測試,最終返回的是這kk個測試結果的均值。

  • 交叉驗證法的評估結果的穩定性和保真性取決於kk的值,所以交叉驗證法又稱為示“kk折交叉驗證法”,kk的最常用值為10,下圖就是一個10折交叉驗證的示意圖。
    在這裡插入圖片描述

  • 為減小因樣本劃分不同而引入的差別,k折交叉驗證通常要隨機使用不同的劃分重複p次,評估結果是這p次k折交叉驗證結果的均值,常見的是10次10折交叉驗證。

  • 當資料集的樣本數和kk值相同時,此時我們就得到了交叉驗證法的一個特例:留一法,留一法不受隨機樣本的影響,評估結果一般來說較為準確。

2.3 自助法

在上文中我們介紹了留出法和交叉驗證法這兩種方法,我們希望評估的是用整個D訓練出的模型,但在留出法和交叉驗證法中,由於保留了一部分樣本用於測試,因此實際評估的模型所使用的訓練集比D小,這必然會引入一些因訓練樣本規模不同而導致的估計偏差。留一法受訓練樣本規模變化的影響較小,但計算複雜度又太高了。

自助法: 給定包含mm個樣本的資料集DD,每次隨機從DD 中挑選一個樣本,將其拷貝放入DD’,然後再將該樣本放回初始資料集DD中,使得該樣本在下次取樣時仍有可能被採到。重複執行mm次,就可以得到包含mm個樣本的資料集DD’。可以得知在mm次取樣中,樣本始終不被採到的概率取極限為:
在這裡插入圖片描述

通過自助取樣,初始樣本集D中大約有36.8%的樣本沒有出現在D’中,於是可以將D’作為訓練集,D\D’作為測試集。

用這種方法,實際評估的模型與期望評估的模型都是使用mm個訓練樣本,我們任然有資料總量約為13\frac{1}{3}的,沒在訓練集中出現的樣本用於測試,這樣的測試結果,也被稱為“包外估計”。

自助法在資料集較小,難以有效劃分訓練集/測試集時很有用,但由於自助法產生的資料集(隨機抽樣)改變了初始資料集的分佈,因此引入了估計偏差。在初始資料集足夠時,留出法和交叉驗證法更加常用。

調參(parameter tuning):大多數學習演算法都有些引數(parameter)需要設定,引數配置不同,學得模型的效能往往有顯著差別。
學習演算法的很多引數是在實數範圍內取值,因此,對每種引數取值都訓練出模型來是不可行的。常用的做法是:對每個引數選定一個範圍和步長λ,這樣使得學習的過程變得可行。

最後需要注意的是:當選定好模型和調參完成後,我們需要使用初始的資料集D重新訓練模型,即讓最初劃分出來用於評估的測試集也被模型學習,增強模型的學習效果。

2.4 調參與最終模型

大多數學習演算法都有引數需要設定,引數配置不同,學的模型的效能往往會有顯著性差異。

  • 我們在調整引數的過程中需要計算開銷和效能估計之間進行折中。
  • 在模型選擇完成後,學習引數和引數配置已經選定,此時我們應該用資料集D重新訓練模型,這個模型在訓練過程中使用了所有的mm個樣本,這才是我們最終遞交給使用者進行使用的模型。
  • 我們通常把學的的模型在實際使用中遇到的資料稱為測試資料,為加以區分,模型評估與選擇中用於評估測試的資料集稱為驗證集。在研究對比不同演算法的泛化效能時,我們用測試集上的判別效果來估計模型在實際使用中的泛化能力,而把訓練資料另外劃分為訓練集和驗證集們,基於驗證集上的效能來進行模型選擇和調參。

三 、效能度量

效能度量是衡量模型泛化能力的評價標準,在對比不同模型的能力時,使用不同的效能度量往往會導致不同的評判結果。

在迴歸任務中,最常用的效能度量是:“均方誤差”(mean squared error)。預測任務中,給定樣例集D=(x1,y1),(x2,y2),,(xm,ym)D={(x_{1},y_{1}),(x_{2},y_{2}),…,(x_{m},y_{m})},其中yiy_{i}是對示例xix_{i}的真實標記,要評估學習器f的效能,就要把學習器預測結果f(x)f(x)與真實標記yy進行比較。

在迴歸任務中,我們最常使用的度量效能是“均方誤差”(mean sqared error)
在這裡插入圖片描述

更一般的,對於資料分佈DD和概率密度p(.)p(.),均方誤差(mean square error)可描述為:
在這裡插入圖片描述

3.1 錯誤率和精度

錯誤率和精度是最常用在分類任務(離散)中的兩種效能度量方法,既適用於二分類任務,也適用於多分類任務。

  • 錯誤率: 分類錯誤的樣本數佔樣本總數的比例。對於樣例DD,錯誤率定義為:
    在這裡插入圖片描述
  • 精度: 分類正確的樣本數佔樣本總數的比例。對於樣例DD,精度定義為:
    在這裡插入圖片描述
    顯然,精度與錯誤率之和為1。

當我們知道資料分佈和概率密度函式p(`)之後,我們可以對錯誤率和精度定義如下:在這裡插入圖片描述
在這裡插入圖片描述

3.2 查準率與查全率

查準率: 衡量某一檢索系統的訊號噪聲比的一種指標,即檢出的相關文獻量與檢出的文獻總量的百分比。普遍表示為:查準率=(檢索出的相關資訊量/檢索出的資訊總量)x100%。

查全率(召回率): 衡量某一檢索系統從文獻集合中檢出相關文獻成功度的一項指標,即檢出的相關文獻量與檢索系統中相關文獻總量的百分比。普遍表示為:查全率=(檢索出的相關資訊量/系統中的相關資訊總量)x100%。使用泛指性較強的檢索語言(如上位類、上位主題詞)能提高查全率,但查準率下降。

兩者的詳細定義可以藉助於分類結果混淆矩陣:
在這裡插入圖片描述

根據上表,查準率P和查全率R可以分別定義為:
在這裡插入圖片描述

查準率和查全率是一堆矛盾的度量,一般來說,查準率越高,查全率往往偏低;查全率高時,查準率往往偏低。

根據學習器的預測結果(一般為一個實值或概率)對測試樣本進行排序,將最可能是“正例”的樣本排在前面,最不可能是“正例”的排在後面,按此順序逐個把樣本作為“正例”進行預測,每次計算出當前的P值和R值,以查準率為縱軸,查全率為橫軸作圖。我們就可以得到查準率和查全率曲線,簡稱為“P-R曲線”。如下圖所示:
在這裡插入圖片描述

西瓜書在接下來的部分主要是講述瞭如何根據“P—R曲線”對學習器的優劣進行比較。主要有如下幾種方法:

  • 根據P-R曲線與座標軸構成的面積

  • 根據P-R曲線畫出的平衡點(BEP)

  • F1F_{1}度量:
    在這裡插入圖片描述

  • 在實際使用中,不同場合下我們對查全率和查重率的重視程度不同,所以我們提出了更為一般的FβF_{\beta }
    在這裡插入圖片描述
    β{\beta }度量了查全率對查準率的相對重要性。

  • 當有多個二分類混淆矩陣時,例如:多次訓練或者在多個資料集上訓練,那麼估算全域性效能的方法有兩種,分為巨集觀和微觀。巨集觀就是先算出每個混淆矩陣的P值和R值,然後取得平均P值macro-P和平均R值macro-R,算出Fβ或F1:
    在這裡插入圖片描述

    微觀則是先將各混淆矩陣的對應元素進行平均,計算出混淆矩陣的平均TP、FP、TN、FN,接著進行計算P、R,進而求出FβF_{\beta }F1F_{1}
    在這裡插入圖片描述
    在這裡插入圖片描述

3.3 ROC 與AUC

很多學習器是為測試樣本產生一個實值或概率預測,然後將這個預測值與一個分類闊值(threshold)進行比較,若大於閾值則分為正類,否則為反類。實際上,根據這個實值或概率預測結果,我們可將測試樣本進行排序,"最可能"是正例的排在最前面,“最不可能"是正例的排在最後面.這樣,分類過程就相當於在這個排序中以某個"截斷點” (cut point)將樣本分為兩部分,前一部分判作正例,後一部分則判作反例。

ROC 曲線則是從查準率和查全率的重要性這個角度出發來研究學習器泛化效能的有力工具。

我們根據學習器的預測結果對樣例進行排序,按此順序逐個把樣本作為正例進行預測,每次計算出兩個重要量的值,分別以它們為橫、縱座標作圖’就得到了"ROC 曲線與P-R 曲線使用查準率、查全率為縱、橫軸不同, ROC 曲線的縱軸是"真正例率" (True Positive Rate,簡稱TPR) ,橫軸是"假正例率" (False PositiveRate,簡稱FPR) 。

兩者分別定義為:
在這裡插入圖片描述

我們可以得到ROC和AUC影象如下:
在這裡插入圖片描述
上圖中的對角線對應於"隨機猜測" 模型,而點(01(0,1) 則對應於將所有正例排在所有反例之前的"理想模型".

我們可以用ROC 曲線下的面積,即AUC (Area Under ROC Curve)對學習器的效能進行比較。假定ROC 曲線是由座標為(x1y1),(x2,y2)(x_{1} , y_{1}), (x_{2}, y_{2}) , . . . , (xm,ym)(x_{m}, y_{m}) 的點按序連線而形成(x1=0,xm=1(x_{1} =0, x_{m} = 1),則AUC為:
在這裡插入圖片描述

AUC 考慮的是樣本預測的排序質量,因此它與排序誤差有緊密聯絡.給定m+m^{+}個正例和mm^{-} 個反例?令D+D^{+}DD^{-}分別表示正、反例集合,則排序"損失" (loss) 定義為:
在這裡插入圖片描述

即考慮每一對正、反例,若正例的預測值小於反例,則記一個"罰分"則相等則記0.5 個"罰分"。容易看出, lrαnkl_{rαnk} 對應的是ROC 曲線之上的面積:若一個正例在ROC 曲線上對應標記點的座標為(xy)(x,y) , 則xx 恰是排序在其之前的反例所佔的比例,即假正例率.因此有;
在這裡插入圖片描述

3.4 代價敏感錯誤率與代價曲線

在實際生活中,不同的誤差對應的代價不同,在這裡,我們引入代價矩陣:
在這裡插入圖片描述

我們把上表中的第0 類作為正類、第1 類作為反類?令D+DD_{+} 與D_{-}分別代表樣例集D 的正例子集和反例子集,則"代價敏感" (cost-sensitive)錯誤率為:
在這裡插入圖片描述

在非均等情況下,我們代價曲線來衡量學習器的期望總體評價。橫座標為取值為[01][0 ,1]的正例概率代價
在這裡插入圖片描述
其中p 是樣例為正例的概率;縱軸是取值為[0,1] 的歸一化代價:
在這裡插入圖片描述
FPR 是假正例率,FNR=1TPRFNR = 1 - TPR 是假反例率.
在這裡插入圖片描述

四、比較檢驗

本部分主要介紹兩種最基本的假設檢驗,然後介紹幾種常用的機器學習效能比較方法。

現實任務中我們並不知道學習器的泛化錯誤率,只能獲知其測試錯誤率。兩者存在一些不同,但我們可根據測試錯誤率估推出泛化錯誤率的分佈。

  • 假設檢驗
  • 交叉驗證t 檢驗
  • McNemar 檢驗
  • Friedman 檢驗與 Nemenyi 後續檢驗

五、偏差與方差

“偏差方差分解” (bias-variance decomposition)是解釋學習演算法泛化效能的一種重要工具。

對測試樣本隊令yDy_{D}mm 在資料集中的標記, yyxx 的真實標記, f(x;D)f(x; D) 為訓練集DD 上學得模型ffxx 上的預測輸出。

我們可對演算法的期望泛化誤差進行分解如下:
在這裡插入圖片描述

從而得到:
在這裡插入圖片描述
泛化誤差可分解為偏差、方差與噪聲之和。

一般來說,偏差與方差是有衝突的,這稱為偏差一方差窘境。
在這裡插入圖片描述

相關文章