誤差、過擬合、正則化、交叉驗證、泛化能力詳解

1.訓練誤差與測試誤差

機器學習的目的就是使學習得到的模型不僅對訓練數據有好的表現能力,同時也要對未知數據具有很好的預測能力,因此給定損失函數的情況下,我們可以得到模型的訓練誤差(訓練集)和測試誤差(測試集),根據模型的訓練誤差和測試誤差,我們可以評價學習得到的模型的好壞。

同時需要注意的是,統計學習方法具體採用的損失函數未必是評估時使用的損失函數,兩者相同的情況下是比較理想的。

假設我們最終學習到的模型是Y = f(x),訓練誤差是模型Y = f(x)關於訓練數據集的經驗損失:

其中N是訓練集樣本數量。

測試誤差是模型Y = f(x)關於測試數據集的經驗損失:

其中N'是測試集樣本數量。

2.過擬合問題

上一篇文章中已經簡單介紹了過擬合問題,現在詳細介紹一下過擬合問題:

當假設空間含有不同複雜度時的模型時,就要面臨模型選擇的問題。現在假設存在一個“真模型”,能夠完美的對數據進行分類,所以當我們選擇模型時,希望能夠找到一個無限逼近“真模型”的一個模型。具體的是所選擇的模型應與“真模型”的參數個數相同,所選擇的模型的參數向量應與“真模型”的參數向量相近

而在優化模型時,如果我們一味地追求模型對訓練數據的預測能力,就會不可避免的使模型的複雜度提高,這時就會出現過擬合問題,如下圖(摘自《統計學習方法》),隨着模型次數的增加,模型能很好的擬合訓練數據,但是會偏離“真模型”。

3.正則化 

正則化也上一篇文章中也簡單的介紹了一下,其實正則化是防止模型過擬合很好的方法,通過加入模型複雜度這一懲罰項,限制模型變得複雜,從而解決了過擬合問題。

常用的正則化項有三種(L0、L1、和L2範數):

L0範數:其實就是向量中非零元素的個數;

L1範數:向量中各個元素絕對值之和;

L2範數:向量中所有元素絕對值的平方和再開方;

不同的範數都可以有效的防止模型過擬合,但是不同範數效果不同,L1範數可以使模型變得稀疏性,而L2範數不會使變得稀疏,但是能很好的限制模型的複雜度(上圖所示)。具體請參考:L0、L1、L2範數,這篇文章很好地介紹了各種範數的作用原理。

4.交叉驗證

交叉驗證是模型選擇常用的一種方法,該方法主要使用於樣本數據充足的情況,我們可以將樣本數據劃分爲:訓練集、交叉驗證集和測試集三個數據集。其中訓練集主要是根據數據去調節模型的參數而交叉驗證集的作用主要是調節模型的超參數,測試集是評估訓練得到模型的泛化能力(請參考參數與超參數的區別)。

交叉驗證集的基本思想就是:重複的使用數據,把給定的數據進行劃分,將劃分的數據集組合成訓練集和測試集,在此基礎上反覆地進行訓練、測試以及模型選擇。

交叉驗證主要有三種方法:

1.簡單交叉驗證

將數據隨機分爲兩部分(70%的數據爲訓練集,30%的數據爲測試集),一部分作爲訓練集,另一部分作爲測試集。

2.N折交叉驗證

N折交叉驗證是交叉驗證中最常用的一種方法,方法是隨機將數據分爲N個互不相交的大小相同的子集,然後利用S-1個子集的數據作爲訓練集,剩下的子集作爲測試集,將這一過程對可能的S種選擇重複進行,最後選出S次評測中平均測試誤差最小的模型。

3.留一交叉驗證

S折交叉驗證的特殊情況是S=N,稱爲留一交叉驗證法,往往是數據量較小的情況下使用。

5.泛化能力

學習方法的泛化能力是指由該方法學習到的模型對未知數據的預測能力,是學習方法本質上重要的性質,常用的方法是通過測試誤差來衡量泛化能力,但是這種方法依賴測試數據,但是由於測試數據是有限的,因此評價結果不是完全可靠的。

每天進步一點點~

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章