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

2021-06-21 08:12:58 字數 1855 閱讀 5926

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

要評價乙個**演算法的優劣,標準無非就是比較**結果和真實結果的差別,差別越小,這個演算法效能就越好,由此給出了經驗風險的表示式

其中,l(y,f(x))叫做損失函式,它是用來量化真實結果y和**結果f(x)的區別大小的。

如果我們對已知的樣本,用經驗風險最小化的標準來選擇演算法,我們就一定會選擇經驗風險最小的演算法。這樣,就會產生過擬合的問題。導致我們得到的演算法在樣本集上的測試結果非常優秀,但是在真實的**中,卻不盡如人意。換一種說法,就是這種演算法的泛化能力比較差。

參考李航的統計學習方法,學習方法的泛化能力往往都是通過研究泛化誤差的概率上界來進行的。也就是說,泛化誤差上界量化了在最壞的情況下,乙個學習演算法的優略程度。

泛化誤差的計算公式如下

其中不等式右邊的r(f)是經驗風險,n為樣本數量,d為假設空間內的分類器個數。具體請參考《統計學習方法》。當假設空間推廣到無限的時候,參考andrew的說法,我的理解是:假設學習演算法的評分為y(越高越好),經驗風險為b,假設空間的vc維是x,樣本數量為a,那麼不嚴格地說,它們之間服從y=x/a+b這個線性的關係(存在特例)。

泛化誤差從巨集觀上給出了演算法的優劣評分,但是這個評分收斂於演算法的誤差上界。而在實際應用中,誤差上界往往非常大,不具有實際的參考價值。因此,評價乙個學習演算法是否適合於某一實際的問題,就要用交叉驗證的方法來實際測試。

為了避免過擬合的問題,交叉驗證把訓練資料分成了訓練集和測試集,用訓練集來訓練學習演算法,再用測試集來驗證學習演算法,每次都從候選的學習演算法集合中選擇乙個演算法,進行學習和測試,最後比較所有演算法的測試結果,選擇最優的演算法。

但是簡單交叉驗證還是不能充分得利用所有資料。在資料特別珍貴的情況下,對造成了資料資源的浪費。因此,某些情況下,會再次改進這個演算法,採用k-摺疊交叉驗證,演算法如下:

在極端情況下,k等於訓練集資料的數量s,要進行k次的訓練和測試,這種情況下的交叉驗證被稱為留一交叉驗證。

泛化誤差和交叉驗證為我們選擇合適的學習演算法提供了相應的策略,而特徵選擇則可以使我們在一定程度上優化資料。

假設樣本的維度n非差大,而每乙個維度都代表了乙個表徵這個資料的特徵。當資料的特徵非常多時,我們就需要通過某種方式來過濾掉一些冗餘的特徵,提高資料的質量,這就是特徵選擇的目的。

第一種方法叫做前向搜尋,它的主要特點是每次從特徵集中選出乙個測試效果最好的特徵,直到滿足相應條件為止,具體演算法如下:

這種演算法的計算複雜度較大,為o(n2)

第二種方法叫做過濾特徵選擇,它的主要特點是分別計算每乙個特徵相對於類別標籤y的資訊量,最後把資訊量的值從大到小排列,選取最優的k個值所代表的特徵。資訊量的計算公式參考kl距離的計算方法得到,公式如下:

這種演算法的計算複雜度較之前者較小,為o(n)。

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

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

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

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

正則化和交叉驗證

偏差 描述的是 值 估計值 的期望與真實值之間的差距。偏差越大,越偏離真實資料集。方差 描述的是 值的變化範圍,離散程度,也就是離其期望值的距離。方差越大,結果資料的分布越散。high bias 高偏差 就是欠擬合,high variance 高方差 就是過擬合。在損失函式上新增了正則化項,可以對模...