正則化與特徵縮減技術

2021-09-24 23:41:54 字數 1874 閱讀 5115

在機器學習的概述中就提到過,我們可以劃分訓練集、驗證集、測試集避免在訓練過程中的過擬合影響了我們對模型的評價,這種策略的目的是避免了訓練對測試集的影響,但是並沒有真正解決過擬合這個問題,所以其實就這樣做,仍然有可能對驗證集過擬合,然後在測試集測試的效果不好,那這時候,我們應該怎麼改進模型,難道重新訓練嗎,可是重新訓練我們又再怎麼確定訓練多少次數。

為了解決過擬合這個問題,必須從根本上進行分析,為什麼會出現過擬合,回到模型的層面,什麼叫訓練模型,其實就是一次次的迭代,讓損失函式不斷下降,最簡單的例子,乙個近似線性的資料集,我們最初訓練出來的模型是一條直線,慢慢的它會有點彎曲,因為它認為彎曲一點可以更好地擬合資料,這時候是正確的,可是如果我們不停止模型,繼續訓練,它的形狀就可能越來越奇怪,越來越複雜,變成一大團,甚至說變成一條能夠穿過所有點的曲線,這樣損失函式當然最少了,可是並沒有意義,因為它的泛化能力一定是很差的,從這個過程看來,過擬合,其實也可以認為是模型企圖擬合所有資料而導致結構變得過於複雜。

既然過擬合可以看成模型過於複雜,那麼我們是不是可以追求一種平衡,既能夠使得模型能更好地擬合資料,也使得模型的結構不會過於複雜,這就是正則化做的事情了,具體來說,就是在原來的損失函式上引入正則項,我們最小化損失函式,就必須同時考慮最小化損失,和最小化模型複雜度了。

具體怎麼定義損失項,這就涉及到怎麼定義模型複雜度。模型複雜度可以理解為模型假設空間的大小,高維模型、多節點的樹模型,這些模型可能的函式值更多,假設空間更大,模型更複雜。或者說,想象一下,乙個很複雜的函式,它的影象也是很複雜的,主要表現在變化幅度很大,這樣,當我們把模型限制在乙個相同的區間內,複雜模型的假設空間(或者說模型覆蓋的空間)就會比簡單模型更大。因此,從這個角度來說,或許用模型的變化幅度來衡量模型的複雜度是乙個可行的辦法。

模型的變化幅度,實際上就是模型各個引數的權重,權重越大,自然引數的微小變化都會導致模型結果的巨大改變,從這個角度來看,乙個複雜模型對新資料**過程中,對誤差的包容度是更小的,或者說乙個小小的誤差在複雜模型下也會被明顯的放大,這也正是過擬合的模型泛化能力差的原因。因此,用引數權重來衡量模型複雜度是可行的。

說了那麼多,其實就是希望把模型複雜度和模型的權重聯絡上,事實上正則化往往有l1正則化(lasso)和l2正則化(嶺回歸)。所謂l1l2其實指的是範數。

lasso是指,將係數的l1範數(各個係數的絕對值之和),作為懲罰項加到損失函式上面,lasso的基本思想是在回歸係數的絕對值小於乙個常數的約束下,是殘差平方和最小化,從而能夠產生某些嚴格等於0的回歸係數。

嶺回歸指將係數的l2範數(各個係數的平方和)作為懲罰項新增到損失函式中,由於l2懲罰項中的係數是二次方的,導致了l2和l1有一些區別,比如l2正則化會讓係數的取值變得平均,對於關聯特徵,這意味著他們能夠獲得更接近的係數。舉個例子,比如y=x1+x2,x1和x2具有很強的關聯,那麼用l1正則化,不論學習到的模型是y=x1+x2還是y=2x1,都是2,可是對於l2正則化,第乙個是2,第二個是4,這就反映了l2和l1的不同取向。

簡單介紹一下他們的區別,首先應為絕對值的緣故,l2正則化計算是比l1正則化簡單很多的,而l1在非稀疏向量的計算效率也很低;l1最重要的乙個特點是會輸出稀疏,會把不重要的特徵直接置0,而l2則不會;l2有唯一解,l1不是。

最後想講一下正則化與特徵選擇的關係,一般來說,我們是會偏向於用盡可能少的特徵構建盡可能好的模型,主要是避免特徵之間關聯性較大,過多特徵造成過擬合等問題,所以在特徵工程我們會想辦法選擇最好的乙個特徵子集。而這裡的正則化,目的是避免模型過於複雜,減少部分影響不明顯的引數的權重,其實和剔除無關特徵是乙個道理,特徵對應的引數趨於0,和特徵被去除是一樣的,所以,l1l2正則化在特徵縮減技術中也有介紹,說到底還是同乙個東西,同乙個目的,只是換個名詞,這種現象在機器學習中太常見了,主要是這些模型其實在不同領域都會被應用到,自然不同領域就有不同叫法了。

想瀏覽更多關於數學、機器學習、深度學習的內容,可瀏覽本人部落格

實驗03 特徵處理(標準化 歸一化 正則化)

參考部落格 位址傳送 實驗記錄,方便以後查閱 預處理方法 from sklearn.preprocessing import standardscaler from sklearn.preprocessing import minmaxscaler from matplotlib import gr...

正則化與歸一化

歸一化 normalization 歸一化可以指把一組資料縮放到 0,1 的範圍內,或者自定義的某個範圍內。也可以指對一組資料縮放,使其的和為1。其目的是通過把有量綱表示式變為無量綱表示式,有利於不同量綱資料之間的比較 展示等。主要的歸一化演算法有 1.線性轉換,即min max歸一化 常用方法 x...

虛擬化技術與容器技術

作為一種部署應用程式的全新方式,容器技術在短時間內獲得了廣泛關注,但是這種技術同樣存在某些限制,並且和虛擬機器存在本質上的不同。虛擬化技術已經改變了現代計算方式,它能夠提公升系統資源使用效率 消除應用程式和底層硬體之間的依賴關係,同時加強負載的可以移植性和安全性,但是hypervisor和虛擬機器只...