1. 程式人生 > >學習筆記 | 機器學習-周志華 | 5

學習筆記 | 機器學習-周志華 | 5

第二章 模型評估與選擇

2.1 經驗誤差與過擬合

  1. "錯誤率" (error rate) ,即如果在 m 個樣本中有 α 個樣本分類錯誤,則錯誤率 E= α/m;
  2. 1 一 α/m 稱為**“精度” (accuracy)** ,即"精度 =1 - 錯誤率"
  3. 更一般地,把學習器的實際預測輸出與樣本的真實輸出之間的差異稱為"誤差" (error),學習器在訓練集上的誤差稱為"訓練誤差" (training error)或"經驗誤差" (empirical error) ,在新樣本上的誤差稱為"泛化誤差" (generalization error).
  4. 在訓練集上表現很好的學習器,例如甚至對所有訓練樣本都分類正確,即分類錯誤率為零,分類精度為 100%,但這樣的學習器在多數情況下都不好.
  5. 當學習器把訓練樣本學得"太好"了的時候,很可能巳經把訓練樣本自身的一些特點當作了所有潛在樣本都會具有的一般性質,這樣就會導致泛化效能下降這種現象在機器學習中稱為"過擬合" (overfitting). 與"過擬合"相對的是"欠擬合" (underfitting) ,這是指對訓練樣本的一般性質尚未學好.
  6. NP問題是指存在多項式演算法能夠解決的非決定性問題,而其中NP完全問題又是最有可能不是P問題的問題型別。所有的NP問題都可以用多項式時間劃歸到他們中的一個。所以顯然NP完全的問題具有如下性質:它可以在多項式時間內求解,當且僅當所有的其他的NP-完全問題也可以在多項式時間內求解。
  7. NP完全問題
    (NP-C問題),是世界七大數學難題之一。 NP的英文全稱是Non-deterministic Polynomial的問題,即多項式複雜程度的非確定性問題。簡單的寫法是 NP=P?,問題就在這個問號上,到底是NP等於P,還是NP不等於P。
  8. P問題是具有多項式演算法的判定問題。這裡的P代表Polynomial。P問題就是可以有一個確定型圖靈機在多項式時間內解決的問題。即目前那些存在O(n), O(nk), O(nlogn)等多項式時間複雜度解法的問題。比如排序問題、最小生成樹、單源最短路徑。直觀的講,我們將P問題視為可以較快解決的問題。
  9. 只要相信 "p ≠ NP " ,過擬合就不可避免。
  10. 模型選擇" (model selection) 問題。

2.2 評估方法

  1. 使用一個 “測試集 " (testing set)來測試學習器對新樣本的判別 能力,然後以測試集的"測試誤差” (testing error)作為泛化誤差的近似。
  2. 測試集應該儘可能與訓練集互斥, 即測試樣本儘量不在訓練集中出現、未在訓練過程中使用過.

2.2.1 留出法

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

  1. 訓練/測試集的劃分要儘可能保持資料分佈的一致性,避免因資料劃分過程引入額外的偏差而對最終結果產生影響,例如在分類任務中至少要保持樣本的類別比例相似.
  2. 如果從取樣 (sampling) 的角度來看待資料集的劃分過程,則保留類別比例的取樣方式通常稱為"分層取樣" (stratified sampling). 例如通過對 D 進行分層取樣而獲得含 70% 樣本的訓練集 S 和含30% 樣本的測試集 T , 若 D 包含 500 個正例、 500 個反例,則分層取樣得到的S 應包含 350 個正例、 350 個反例,而 T 則包含 150 個正例和 150 個反例;若S、 T 中樣本類別比例差別很大,則誤差估計將由於訓練/測試資料分佈的差異而產生偏差.
  3. 即使在給定訓練/測試集的樣本比例後,仍存在多種劃分方式對初始資料集 D 進行分割.單次使用留出法得到的估計結果往往不夠穩定可靠,在使用留出法時,一般要採用若干次隨機劃分、重複進行實驗評估後取平均值作為留出法的評估結果.
  4. 留出法存在的問題:若令訓練集 S 包含絕大多數樣本7 則訓練出的模型可能更接近於用 D 訓練出的模型, 但由於 T 比較小,評估結果可能不夠穩定準確;若令測試集 T 多包含一些樣本, 則訓練集 S 與 D 差別更大了,被評估的模型與用 D 訓練出 的模型相比可能有較大差別,從而降低了評估結果的保真性(fidelity) 。

2.2.2 交叉驗證法

“交叉驗證法” (cross validation)先將資料集 D 劃分為 k 個大小相似的互斥子集, 即 D = D1 ∪ D2∪… ∪ D k, Di ∩ Dj = ø (i≠ j ) . 每個子集 Di 都儘可能保持資料分佈的一致性,即從 D 中 通過分層取樣得到.
每次用k-1 個子集的並集作為訓練集,餘下 的那個子集作為測試集;這樣就可獲得 k組訓練/測試集,從而可進行 k 次訓練和測試,最終返回的是這 k 個測試結果的均值。顯然,交叉驗證法評估結果的穩定性和保真性在很大程度上取決於 k的取值,為強調這一點,通常把交叉驗證法稱為 " k 折交叉驗證" (k-fold cross validation). k 最常用 的取值是 10,此時稱為 1 0 折交叉驗 證 ; 其他常用 的 k 值有 5、 20 等.

  1. 將資料集 D 劃分 為 k 個子集同樣存在多種劃分方式.為減小因樣本劃分不同而引入的差別 , k 折交叉驗證通常要隨機使用不同的劃分重複 p 次。最終的評估結果是這 p 次 k 折交叉驗證結果的均值,例如常見的有 "10 次 10 折交叉驗證 "。
  2. 假定資料集 D 中包含 m 個樣本 3 若令 k=m , 則得到了交叉驗證法的一個特例:留一法 (Leave-One-Out,簡稱 LOO) . 顯然 , 留一法不受隨機樣本劃分方式的影響,因為 m 個樣本只有唯一的方式劃分為 m 個子集一一每個子集包含一個樣本;留一法使用的訓練集與初始資料集相比只少了一個樣本,這就使得在絕大多數情況下,留一法中被實際評估的模型與期望評估的用 D 訓練出的模型很相似.因此,留一法的評估結果往往被認為比較準確.然而,留一法也有其缺陷:在資料集比較大時,訓練 m 個模型的計算開銷可能是難以忍受的(例如資料集包含 1 百萬個樣本,則需訓練 1 百萬個模型),而這還是在未考慮演算法調參的情況下.另外,留一法的估計結果也未必永遠比其他評估方法準確;"沒有免費的午餐"定理對實驗評估方法同樣適用.

2.2.3 自助法

“自助法” (bootstrapping)直接以自助取樣法 (bootstrap sampling)為基礎 [Efron and Tibshirani, 1993]. 給定包含 m 個樣
本的資料集 D ,我們對它進行取樣產生資料集 D’: 每次隨機從 D 中挑選一個樣本 將其拷貝放入 D’ 然後再將該樣本放回初始資料集 D 中,使得該樣本在下次取樣時仍有可能被採到;這個過程重複執行 m 次後,我們就得到了包含 m個樣本的資料集 D’, 這就是自助取樣的結果.顯然 ,D 中有一部分樣本會在 D’中多次出現,而另一部分樣本不出現.可以做一個簡單的估計,樣本在 m 次取樣中始終不被採到的概率是 (1 - 1/m)的m次方,取極限得到在這裡插入圖片描述
即通過自助取樣,初始資料集 D 中約有 36.8% 的樣本未出現在取樣資料集 D’中.於是我們可將 D’ 用作訓練集 , D\D’(\表示集合減法) 用作測試集;這樣,實際評估的模型與期望評估的模型都使用 m 個訓練樣本,而我們仍有資料總量約 1/3 的、沒在訓練集中出現的樣本用於測試.這樣的測試結果,亦稱**“包外估計”** (out-of-bag estimate).

  1. 自助法在資料集較小、難以有效劃分訓練/測試集時很有用;
  2. 此外,自助法能從初始資料集中產生多個不同的訓練集,這對整合學習等方法有很大的好處
  3. 然而,自助法產生的資料集改變了初始資料集的分佈,這會引入估計偏差.因此,在初始資料量足夠時,留出法和交叉驗證法更常用一些.

2.2.4 調參與最終模型

  1. 大多數學習演算法都有些引數(parameter)需要設定,引數配置不同,學得模型的效能往往有顯著差別.因此,在進行模型評估與選擇時,除了要對適用學習演算法進行選擇,還需對演算法引數進行設定,這就是通常所說的"引數調節"或簡稱"調參" (parameter tuning)。
  2. 實中常用的做法是對每個引數選定一個範圍和變化步長,例如在 [0 , 0.2] 範圍內以 0.05 為步長,則實際要評估的候選引數值有 5 個,最終是從這 5 個候選值中產生選定值.顯然,這樣選定的引數值往往不是"最佳"值,但這是在計算開銷和效能估計之間進行折中的結果,通過這個折中,學習過程才變得可行.事實上,即便在進行這樣的折中後,調參往往仍很困難.可以簡單估算一下:假定演算法有 3 個引數,每個引數僅考慮 5 個候選值,這樣對每一組訓練/測試集就有 53 = 125 個模型需考察;很多強大的學習演算法有大量引數需設定,這將導致極大的調參工程量,以至於在不少應用任務中好不好往往對最終模型效能有關鍵性影響.,例如大型"深度學習" 引數調得模型甚至有上百億個引數.
  3. 我們通常把學得模型在實際使用中遇到的資料稱為測試資料,為了加以區分,模型評估與選擇中用於評估測試的資料集常稱為"驗證集" (validation set).
  4. 在研究對比不同演算法的泛化效能時,我們用測試集上的判別效果來估計模型在實際使用時的泛化能力,而把訓練資料另外劃分為訓練集和驗證集,基於驗證集上的效能來進行模型選擇和調參.

2.3 效能度量

  1. 衡量模型泛化能力的評價標準是效能度量(performance measure)。
  2. 效能度量反映了任務需求,在對比不同模型的能力時,使用不同的效能度量往往會導致不同的評判結果;這意味著模型的"好壞"是相對的,什麼樣的模型是好的,不僅取決於演算法和資料,還決定於任務需求.
    在這裡插入圖片描述
    2.3.1 錯誤率與精度
    在這裡插入圖片描述
    在這裡插入圖片描述

2.3.2 查準率、查全率與F1

查準率(precision) (準確率)與 查全率(recall) (找回率)
可將樣例根據其真實類別與學習器預測類別的組合劃分為真正例 (true positive)、假正例 (false positive)、真反倒 (true negative) 、假反例 (false negative) 四種情形,令 TP、 FP、 TN、 FN 分別表示其對應的樣例數,則顯然有TP+FP+TN+FN=樣例總數.分類結果的"淚淆矩陣" (cofusion matrix) 如表 2.1 所示
在這裡插入圖片描述

查準率P與查全率R分別定義為
P=TP/TP+FP, R=TP/TP+FN.