1. 程式人生 > >機器學習6:評估

機器學習6:評估

評估+設計雜談

評估模型(假設函式)

當要對我們的預測誤差作故障排除,不外乎通過以下這幾種方式:

  • 增加更多的訓練樣本
  • 減少特徵種類
  • 增加特徵種類(增加額外的特徵或者多項式特徵 ( x 1 x
    2 , x 1 2 , x 2
    2
    ) (x_1x_2,x_1^2,x_2^2)
  • 增加或減少懲罰引數 λ \lambda

但是如何確定應該採取的方式?

訓練集+測試集

訓練得到的假設函式可能對於訓練集來說誤差低,但是在預測新樣本時不夠準確(過擬合),因此,我們需要把訓練樣本分為訓練集和測試集,比例為7:3。

所以評估過程為:

  1. 採用訓練集訓練得到假設函式
  2. 計算測試集在假設函式下的代價函式(計算測試集的平均誤差)

測試集的誤差

  1. 線性迴歸
    J t e s t ( Θ ) = 1 2 m t e s t i = 1 m t e s t ( h Θ ( x t e s t ( i ) y t e s t ( i ) ) ) 2 J_{test}(\Theta) = \frac{1}{2m_{test}}\sum_{i=1}^{m_{test}}(h_\Theta(x^{(i)}_{test}-y^{(i)}_{test}))^2

  2. 邏輯迴歸
    2.1 分類誤差 0/1
    e r r ( h Θ ( x ) , y ) = { 1 i f h Θ ( x ) 0.5 a n d y = 0 o r h Θ ( x ) < 0.5 a n d y = 1 0 o t h e r w i s e err(h_\Theta(x),y) = \begin{cases} 1 &if\quad h_\Theta(x)\ge0.5\quad and\quad y=0\quad or\quad h_\Theta(x)\lt0.5\quad and\quad y=1 \\ 0 &otherwise \end{cases}
    上式將錯誤分類用0或1進行了標識,所以測試集的平均誤差為:
    T e s t E r r o r = 1 2 m t e s t i = 1 m t e s t e r r ( h Θ ( x t e s t ( i ) ) , y t e s t ( i ) ) Test Error = \frac{1}{2m_{test}}\sum_{i=1}^{m_{test}}err(h_\Theta(x^{(i)}_{test}),y^{(i)}_{test})
    上式揭示了根據測試集的輸入特徵錯誤分類的比例。
    2.2 代價函式
    J t e s t ( Θ ) = 1 m t e s t i = 1 m t e s t ( y ( i ) l o g ( h Θ ( x ( i ) ) + ( 1 y ( i ) ) l o g ( 1 h Θ ( x ( i ) ) ) ) J_{test}(\Theta) = -\frac{1}{m_{test}}\sum_{i=1}^{m_{test}}(y^{(i)}log(h_\Theta(x^{(i)})+(1-y^{(i)})log(1-h_\Theta(x^{(i)})))

訓練集+驗證集+測試集

如果有多個模型可以選擇,例如可以選擇多個多項式次數不同的模型,那麼,可以通過驗證集對模型進行選擇,再利用測試集評估泛化誤差。(如果只有訓練集和測試集,用測試集同時進行模型選擇和誤差評估是不合理的,因為通過模型選擇後,測試集已經與模型相匹配,很難再用於泛化評估)

訓練集、驗證集和測試集的比例為6:2:2。

診斷:偏差 vs 方差

高偏差指欠擬合;高方差指過擬合。

  1. 多項式次數與偏差和方差診斷的關係

在這裡插入圖片描述

隨著假設函式中多項式次數(特徵)的增多,對於訓練集的誤差越來越小,而對於驗證集的誤差先降後升。

訓練集誤差和驗證集誤差均高且近似相等時診斷為高偏差;
訓練集誤差低,而驗證集誤差高時診斷為高方差。

  1. 正則化和偏差/方差

正則化引數 λ \lambda 過小時,有可能過擬合,過大時,有可能欠擬合。

隨著 λ \lambda 增大,對於訓練集的誤差越來越大,而對於驗證集的誤差先降後升。

訓練集誤差和驗證集誤差均高且近似相等時診斷為高偏差;
訓練集誤差低,而驗證集誤差高時診斷為高方差。

可以通過以下步驟選擇合適的 λ \lambda
2.1 生成若干個 λ \lambda ,如 λ = 1 : 0.01 : 10 \lambda=1:0.01:10
2.2 生成一系列模型,對應不同的 λ \lambda
2.3 通過訓練集訓練得到各模型的模型引數
2.4 通過驗證集計算驗證誤差(計算時忽略代價函式中的正則項),並選出驗證誤差最小的模型作為最優模型
2.5 將測試集應用於最優模型以預測泛化效能。

  1. 學習曲線(訓練樣本/訓練集數量與偏差和方差)

當訓練樣本增多,訓練集的誤差越來越大,而驗證集的誤差卻越來越小。在訓練樣本數量達到一定程度後,訓練集和驗證集的誤差近似。

  • 如果增加訓練樣本的情況下,訓練集的誤差和驗證集的誤差不變,且均高於理想水平,則有可能高偏差(同時可見,增加訓練樣本不能解決高偏差的問題)PS:快速聚攏的就是高偏差,因為如果是正常情況,則兩種誤差應當相似,如果一開始驗證集誤差比訓練集誤差高,則要麼高偏差,要麼高方差
    在這裡插入圖片描述

  • 如果在增加訓練樣本的情況下,驗證集的誤差平緩下降,訓練集的誤差平緩上升,且它們之間有明顯的差距,則有可能高方差(同時可見,增加訓練樣本可以解決高方差時,它們向理想水平靠攏)PS:訓練樣本增加到一定程度後,兩者之間在很長一段期間內還保持一定差距,那就說明是高方差了
    在這裡插入圖片描述

診斷後的調整

調整方式可列舉如下:

  • 增加訓練樣本 - 高方差
  • 減少特徵 - 高方差
  • 增加特徵(額外的特徵或增加多項式次數) - 高偏差
  • 減小 λ \lambda - 高偏差
  • 增加 λ \lambda - 高方差

評估神經網路

過擬合/欠擬合

  • 一個簡易的神經網路傾向於欠擬合(計算量小)
  • 一個大型的神經網路傾向於過擬合(計算量大;可以使用正則化來解決過擬合)

平衡偏差和方差

  1. 利用訓練集,從訓練包含一個隱藏層的神經網路依次