轉載至:http://blog.csdn.net/Dandelionyu/article/details/45971209
1. 模型評估與模型選擇
在實際應用中,針對具體的監督學習問題,爲了評估所訓練出的模型是否有較好地泛化能力,可以把數據集切割成訓練集和測試集兩部分(注意使訓練集和測試集中均含有各種類型的數據)。
用訓練集在各種條件下(如:不同的參數個數)訓練模型,學習出其參數後,再在測試集上評價各個模型的測試誤差。選擇測試誤差最小的模型。
引用Andrew Ng的機器學習課程中的一個例子進行說明。
假設要在10個不同次數的多項式模型之間進行選擇:
1.hθ(x)=θ0+θ1x
2.hθ(x)=θ0+θ1x+θ2x2
3.hθ(x)=θ0+θ1x+⋯+θ3x3
⋮
10.hθ(x)=θ0+θ1x+⋯+θ10x10
決策函數hθ(x)
訓練集誤差Jtrain(θ)
測試集誤差Jtest(θ)
交叉驗證集誤差Jcv(θ)
首先,針對這10個模型分別對目標函數求解最優化問題即
然而,按照這種做法選擇出來的參數
2. 交叉驗證
交叉驗證法把數據集分成三部分:數據集,交叉驗證集,測試集(如6:2:2分配)。還是上面那個例子,模型選擇的方法是:
- 使用訓練集訓練出10個模型;
- 用10個模型上分別對交叉驗證集計算出交叉驗證誤差
Jcv(θ) 的值; - 選取使
Jcv(θ) 值最小的模型; - 用步驟3中選出的模型對測試集計算得出泛化誤差(
Jtest(θ) 的值)。
3. 模型診斷
實際中訓練出的模型可能存在 過擬合 或 欠擬合 的情況,這時候就需要對模型所處的情況做出準確地判斷以指導模型的改進。下圖描述了訓練集和交叉驗證集與模型複雜度之間的關係。
- 對於訓練集來說,當d較小時,模型較簡單,對數據擬合程度低,誤差大;隨着d的增大,模型越來越複雜,擬合程度高,誤差降到一個比較小得值。
- 對於交叉驗證集來說,當d小時,擬合程度低,誤差大,但隨着d的增大,誤差呈現先減小後增大的趨勢,轉折點是開始出現模型過擬合訓練集的情況時。
那麼,當交叉驗證集的誤差
Jcv(θ) 和Jtrain(θ) 相近,都比較大時:欠擬合Jcv(θ) 很大,而Jtrain(θ) 比較小時:過擬合
3.1 正則化
在訓練模型時,一般會選擇正則化方法來防止過擬合,正則化項的係數
用參數向量的
L2 範數作正則化項,模型是要優化的目標函數爲hθ(x)=θ0+θ1x+θ2x2+θ3x3+θ4x4 J(θ)=12m∑i=1m(hθ(xi)−yi)2+λ2m∑j=1mθj2
(注意正則化項是從j=1 開始的,沒有包含常數項θ0 )
λ 過大時,求解minJ(θ) 的結果將使得θj≈0 (j=1,2,⋯,m) ,此時hθ(x)≈θ0 是一條水平直線如上圖左所示,模型處於欠擬合情況。λ 過小(λ≈0 )時,正則化項對模型的修正效果很小近似於無,如上圖右所示,模型處於欠擬合情況。- 爲了取得上圖中所示比較好的擬合情況,需要選擇一個合適的
λ 值,即還是需要考慮和剛纔選擇多形式模型的次數相類似的問題。
我們選擇一系列想要測試的
依舊把數據集分爲:訓練集,交叉驗證集,測試集。
則選擇
- 針對12個不同的
λ 值,用訓練集訓練出12個不同的正則化模型 - 在交叉驗證集上用12個模型分別計算出對應的交叉驗證誤差
Jcv(θ) - 選擇使
Jcv(θ) 值最小的模型 - 用步驟3中選擇的模型計算得出泛化誤差
Jtest(θ)
訓練集和交叉驗證集與正則化項參數
λ 比較小時,訓練集誤差Jtrain(θ) 比較小而交叉驗證集 誤差Jcv(θ) 比較大 :過擬合- 隨着
λ 增大,訓練集誤差Jtrain(θ) 不斷增加而交叉驗證集 誤差Jcv(θ) 先減小後增加 :欠擬合
3.2 學習曲線(learning curves)
學習曲線是將訓練集誤差和交叉驗證集誤差作爲訓練集樣本數量(
即,假如有100行數據,從第1行數據開始,逐漸學習更多行的數據。思想是:當訓練較少行的數據時,訓練的模型將能夠完美的適應較少的數據,但是訓練出來的模型卻不能很好地適應交叉驗證集或測試集數據。
3.2.1 用學習曲線識別欠擬合
作爲例子,假設只用一條直線來擬合下面的數據,可以看出,即使訓練集樣本量不斷增大,數據擬合的效果也不會有太大改善:
這說明,如果模型處於欠擬合狀態,增加訓練集的數據量對改善誤差沒什麼幫助。也就是說如果你的模型誤差很高,且在增加訓練集樣本後依然沒什麼改善,那麼就可以判斷模型處於欠擬合的狀態。
3.2.2 用學習曲線識別過擬合
假設我們使用一個很高次的多項式模型,而且正則化項係數很小,可以看出,當交叉驗證集誤差遠大於訓練集誤差時,增加訓練集裏樣本數量往往可以有效地提高模型效果:
即,模型在過擬合情況下,增加訓練集的樣本數量可能有效地改善算法效果。
小結
若模型處於過擬合狀態,可採取方法:
- 增加訓練集樣本量
- 減少特徵集數量
- 增加正則化項係數
λ 的值
若模型處於欠擬合狀態,可採取方法:
- 增加特徵集數量
- 增加多項式特徵(組合特徵)
- 減小正則化項係數
λ 的值