機器學習(一)模型評估與選擇(上)


 

1. 誤差與過擬合

 
        我們在訓練模型上,希望泛化誤差越小越好,雖然在實際任務中還會考慮到時間、存儲等cost,爲理解簡單,這裏先暫且只考慮泛化誤差,在模型選擇上,我們則需要從這三個方面:評估方法性能度量比較驗證 來考慮,最後選出最優模型。
 

1.1. 誤差及其類型

  • 誤差:實際預測輸出與樣本的真實輸出之間的差異;
  • 測試誤差:在測試集 Test 上的誤差;
  • 訓練誤差(經驗誤差):在訓練集 Train 上的誤差;
  • 泛化誤差:在新樣本上的誤差。

我們希望泛化誤差越小越好,但是對於經驗誤差則不是越小越好,因爲會出現過擬合現象。

 

1.2. 過擬合/欠擬合

        我們希望最後得到的學習器能在新樣本上也能表現德很好,因此模型應該從訓練樣本中儘可能學到適用於所有潛在新樣本的"普遍規律",這樣才能達到我們預期。

  • 欠擬合:由於學習能力低下而造成的,對訓練樣本一般性質尚未學好,但是容易克服,例如:在決策樹學習中擴展分支,在神經網絡中增加訓練輪數
  • 過擬合:由於學習能力過於強大,以至於把訓練樣本的一些特殊的特性當成了所有潛在樣本的特徵,過擬合不好解決,並且過擬合是無法徹底避免的,我們所能做的只是"緩解”或者減小其風險。
                                    在這裏插入圖片描述
                                    在這裏插入圖片描述

 

2. 評估方法

        通常, 我們通過測試集 Test 來對學習器的泛化誤差進行評估,關鍵點在於訓練集 Train 與測試集 Test 應該儘可能 互斥即測試樣本儘量不在訓練集中出現,並且未在訓練過程中使用過

 
常見方法

  • 留出法(hold-out)
  • 交叉驗證法(cross validation)
  • 自助法(bootstrap)

 

2.1. 留出法

        直接將數據集 D 劃分爲兩個互斥的集合,其中一個集合作爲訓練集 S,另一個作爲測試集 T, 即D=STD=S\cup TST=S\cap T=\varnothing。在 S 上訓練出模型後,用 T 來評估其測試誤差,作爲對泛化誤差的估計。

特別注意

  • 訓練/測試集的劃分要儘可能保持數據分佈的一致性,避免因數據劃分過程引入額外的偏差而對最終結果產生影響。具體來說,若 D 中正例:反例=1:1,則劃分的 S 也應該正例:反例=1:1;若S、 T 中樣本類別比例差別很大,則誤差估計將由於訓練/測試數據分佈的差異而產生偏差。
  • 需要多次使用留出法來評估:根據留出法概念可知,不同的劃分將導致不同的訓練/測試集,那麼模型評估的結果也會有差別。因此單次使用留出法得到的估計結果往往不夠穩定可靠,在使用留出法時,一般要採用若干次隨機劃分、重複進行實驗評估後取平均值作爲留出法的評估結果,100 次後就得到 100 個結果,最後留出法返回的則是這 100 個結果的平均。

 

2.2. 交叉驗證法

                                在這裏插入圖片描述
        交叉驗證法 (cross validation):先將數據集 D 劃分爲 k 個大小相似的互斥子集, 即D=D1D2DkDiDj=(ij)D=D_{1}\cup D_{2}\cup ……\cup D_{k},D_{i}\cap D_{j}=\varnothing (i\neq j),每個子集 Di 都儘可能保持數據分佈的一致性,每次用 k-1 個子集的並集作爲訓練集,餘下的那個子集作爲測試集;這樣就可獲得 k 組訓練/測試集,從而可進行 k 次訓練和測試,最終返回的是這 k 個測試結果的均值

 
        留一法 (Leave- One-Out,簡稱 LOO):假定數據集 D 中包含 m 個樣本,若令 k=m ,則此時稱爲“留一法”。顯然,留一法不受隨機樣本劃分方式的影響,留一法使用的訓練集與初始數據集相比只少了一個樣本,這就使得在絕大多數情況下,留一法中被實際評估的模型與期望評估的用 D 訓練出的模型很相似,因此,留一法的評估結果往往被認爲比較準確。缺點就是當數據集很大時,留一法計算代價太大。

 

2.3. 調參與最終模型

  • 算法的參數:一般由人工設定設定,亦稱“超參數”;
  • 模型的參數:由機器學習確定。

        學習算法的很多參數是在實數範圍內取值,常用的做法則是對每個參數選定一個範圍和變化步長,例如在 [0 ,0.4] 範圍內以 0.1 爲步長,得到5個參數值,然後整個算法若有100個參數,則需要 5100 個模型,參數調得好不好往往對最終模型性能有關鍵性的影響

        我們通常把學得模型在實際使用中遇到的數據稱爲 測試集,爲了加以區分,模型評估與選擇中用於評估測試的數據集常稱爲 驗證集(validation set)。


Reference:

  1. 《機器學習》周志華著
  2. 偏差(Bias)與方差(Variance)
  3. 機器學習中的Bias(偏差),Error(誤差),和Variance(方差)有什麼區別和聯繫?
  4. 偏差(Bias)與方差(Variance)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章