教程 | 初學者如何學習機器學習中的L1和L2正則化

 2017-11-23 12:19:00.0

原標題:教程 | 初學者如何學習機器學習中的L1和L2正則化

選自Medium

作者:Prashant Gupta

參與:陳韻竹、劉曉坤

訓練機器學習模型的要點之一是避免過擬合。如果發生過擬合,模型的精確度會下降。這是由於模型過度嘗試捕獲訓練數據集的噪聲。本文介紹了兩種常用的正則化方法,通過可視化解釋幫助你理解正則化的作用和兩種方法的區別。

噪聲,是指那些不能代表數據真實特性的數據點,它們的生成是隨機的。學習和捕捉這些數據點讓你的模型複雜度增大,有過擬合的風險。

避免過擬合的方式之一是使用交叉驗證(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 中的幾行代碼運行你的模型。

原文地址:https://towardsdatascience.com/regularization-in-machine-learning-76441ddcf99a

文章來源:機器之心