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

2021-09-25 03:59:15 字數 1974 閱讀 8500

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

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

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

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

測試誤差是模型y = f(x)關於測試資料集的經驗損失:

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

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

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

常用的正則化項有三種(l0、l1、和l2範數):

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

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

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

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

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

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

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

1.簡單交叉驗證

將資料隨機分為兩部分(70%的資料為訓練集,30%的資料為測試集),一部分作為訓練集,另一部分作為測試集。

2.n折交叉驗證

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

3.留一交叉驗證

s折交叉驗證的特殊情況是s=n,稱為留一交叉驗證法,往往是資料量較小的情況下使用。

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

過擬合,欠擬合,偏差,誤差,正則化

欠擬合 過擬合與偏差 方差關係 過擬合 在訓練資料上表現良好,在未知資料上表現差。高方差 模型把資料學習的太徹底,以至於把雜訊資料的特徵也學習到了,使得測試的時候不能夠很好地識別資料,即不能正確的分類,模型泛化能力太差 解決方法 1 重新清洗資料 2 增大資料的訓練量 3 採用正則化方法,正則化方法...

泛化誤差,交叉驗證和特徵選擇

機器學習的領域內涉及了大量的學習演算法。演算法多了,如何評價乙個演算法效能的優良程度,如何為特定的問題選擇乙個合適的演算法,這都是需要解決的問題。泛化誤差,交叉驗證和特徵選擇就分別在不同的層次上解決了這個問題。要評價乙個 演算法的優劣,標準無非就是比較 結果和真實結果的差別,差別越小,這個演算法效能...

泛化誤差,交叉驗證和特徵選擇

機器學習的領域內涉及了大量的學習演算法。演算法多了,如何評價乙個演算法效能的優良程度,如何為特定的問題選擇乙個合適的演算法,這都是需要解決的問題。泛化誤差,交叉驗證和特徵選擇就分別在不同的層次上解決了這個問題。要評價乙個 演算法的優劣,標準無非就是比較 結果和真實結果的差別,差別越小,這個演算法效能...