訓練機器學習模型的要點之一是避免過擬合。如果發生過擬合,模型的精確度會下降。這是由於模型過度嘗試捕獲訓練資料集的雜訊。本文介紹了兩種常用的正則化方法,通過視覺化解釋幫助你理解正則化的作用和兩種方法的區別。雜訊,是指那些不能代表資料真實特性的資料點,它們的生成是隨機的。學習和捕捉這些資料點讓你的模型複雜度增大,有過擬合的風險。
避免過擬合的方式之一是使用交叉驗證(cross validation),這有利於估計測試集中的錯誤,同時有利於確定對模型最有效的引數。本文將重點介紹一種方法,它有助於避免過擬合併提高模型的可解釋性。
正則化是一種回歸的形式,它將係數估計(coefficient estimate)朝零的方向進行約束、調整或縮小。也就是說,正則化可以在學習過程中降低模型複雜度和不穩定程度,從而避免過擬合的危險。
乙個簡單的線性回歸關係如下式。其中 y 代表學習關係,β 代表對不同變數或**因子 x 的係數估計。
y ≈ β0 + β1x1 + β2x2 + …+ βpxp
擬合過程涉及損失函式,稱為殘差平方和(rss)。係數選擇要使得它們能最小化損失函式。
這個式子可以根據你的訓練資料調整係數。但如果訓練資料中存在雜訊,則估計的係數就不能很好地泛化到未來資料中。這正是正則化要解決的問題,它能將學習後的引數估計朝零縮小調整。
嶺回歸
上圖展示了嶺回歸(ridge regression)。這一方法通過新增收縮量調整殘差平方和。現在,係數要朝最小化上述函式的方向進行調整和估計。其中,λ 是調整因子,它決定了我們要如何對模型的複雜度進行「懲罰」。模型複雜度是由係數的增大來表現的。我們如果想最小化上述函式,這些係數就應該變小。這也就是嶺回歸避免係數過大的方法。同時,注意我們縮小了每個變數和響應之間的估計關聯,除了截距 β0 之外——這是因為,截距是當 xi1 = xi2 = …= xip = 0 時對平均值的度量。
當 λ=0 時,懲罰項沒有作用,嶺回歸所產生的引數估計將與最小二乘法相同。但是當 λ→∞ 時,懲罰項的收縮作用就增大了,導致嶺回歸下的係數估計會接近於零。可以看出,選擇乙個恰當的 λ 值至關重要。為此,交叉驗證派上用場了。由這種方法產生的係數估計也被稱為 l2 範數(l2 norm)。
標準的最小二乘法產生的係數是隨尺度等變的(scale equivariant)。即,如果我們將每個輸入乘以 c,那麼相應的係數需要乘以因子 1/c。因此,無論**因子如何縮放,**因子和係數的乘積(x)保持不變。但是,嶺回歸當中卻不是如此。因此,我們需要在使用嶺回歸之前,對**因子進行標準化,即將**因子轉換到相同的尺度。用到的公式如下:
lasso 回歸
lasso 是另乙個變體,其中需要最小化上述函式。很明顯,這種變體只有在懲罰高係數時才有別於嶺回歸。它使用 |β_j|(模數)代替 β 的平方作為懲罰項。在統計學中,這被稱為 l1 範數。
讓我們換個角度看看上述方法。嶺回歸可以被認為是求解乙個方程,其中係數的平方和小於等於 s。而 lasso 可以看作係數的模數之和小於等於 s 的方程。其中,s 是乙個隨收縮因子 λ 變化的常數。這些方程也被稱為約束函式。
假定在給定的問題中有 2 個引數。那麼根據上述公式,嶺回歸的表示式為 β1² + β2² ≤ s。這意味著,在由 β1² + β2² ≤ s 給出的圓的所有點當中,嶺回歸係數有著最小的 rss(損失函式)。
同樣地,對 lasso 而言,方程變為 |β1|+|β2|≤ s。這意味著在由 |β1|+|β2|≤ s 給出的菱形當中,lasso 係數有著最小的 rss(損失函式)。
下圖描述了這些方程。
上圖的綠色區域代表約束函式域:左側代表 lasso,右側代表嶺回歸。其中紅色橢圓是 rss 的等值線,即橢圓上的點有著相同的 rss 值。對於乙個非常大的 s 值,綠色區域將會包含橢圓的中心,使得兩種回歸方法的係數估計等於最小二乘估計。但是,上圖的結果並不是這樣。在上圖中,lasso 和嶺回歸係數估計是由橢圓和約束函式域的第乙個交點給出的。因為嶺回歸的約束函式域沒有尖角,所以這個交點一般不會產生在乙個座標軸上,也就是說嶺回歸的係數估計全都是非零的。然而,lasso 約束函式域在每個軸上都有尖角,因此橢圓經常和約束函式域相交。發生這種情況時,其中乙個係數就會等於 0。在高維度時(引數遠大於 2),許多係數估計值可能同時為 0。
這說明了嶺回歸的乙個明顯缺點:模型的可解釋性。它將把不重要的**因子的係數縮小到趨近於 0,但永不達到 0。也就是說,最終的模型會包含所有的**因子。但是,在 lasso 中,如果將調整因子 λ 調整得足夠大,l1 範數懲罰可以迫使一些係數估計值完全等於 0。因此,lasso 可以進行變數選擇,產生稀疏模型。
正則化有何效果?
標準的最小二乘模型常常產生方差。即對於與訓練集不同的資料集,模型可能不能很好地泛化。正則化能在不顯著增大偏差的的同時,顯著減小模型的方差。因此,正則化技術中使用的調整因子 λ,能控制對方差和偏差的影響。當 λ 的值開始上公升時,它減小了係數的值,從而降低了方差。直到上公升到某個值之前,λ 的增大很有利,因為它只是減少方差(避免過擬合),而不會丟失資料的任何重要特性。但是在某個特定值之後,模型就會失去重要的性質,導致偏差上公升產生欠擬合。因此,要仔細選擇 λ 的值。
這就是你開始使用正則化之前所要掌握的全部基礎,正則化技術能夠幫助你提高回歸模型的準確性。實現這些演算法的乙個很流行的庫是 scikit-learn,它可以僅僅用 python 中的幾行**執行你的模型。
機器學習初學者筆記(一)
1 監督學習 給演算法乙個資料集,其中包括了正確的資料,然後演算法的 目的是找出更多的正確 值 2 回歸問題 目標是 乙個連續值輸出 3 分類問題 離散值輸出 4 無監督學習 給演算法無標籤或者相同標籤的資料集,然後利用演算法將其分簇 也可以看成是聚類演算法 5 學習步驟 首先有乙個訓練集,然後利用...
機器學習初學者筆記(二)
7 工作流程 輸入乙個x,然後通過學習演算法能夠輸出函式h,進而 y。這裡的函式h是假設函式是乙個引導x到y的函式。8 如何決定函式h?通過利用代價函式。若有訓練集以及乙個函式 9 如何確定代價函式的最小值對應的梯度下降法 梯度下降法的思想是 開始時隨機給定乙個引數的組合 梯度下降法的公式為 對於這...
給機器學習初學者的忠告
1 理論知識沒那麼重要。不要為了學習機器學習,去把高等數學 線性代數和概率與統計三門課像準備考研一樣再學一遍,認識牛頓 萊布尼茨兩位高等數學的祖師爺,再了解行列式 矩陣和概率統計中的一些名詞術語就足夠在這一行業混吃混喝了。2 不要把過多精力花在演算法上。就像去學習開車,不需要研究汽車內容構造,更不需...