1. 程式人生 > >機器學習防止過擬合之L1範數(正則)與LASSO

機器學習防止過擬合之L1範數(正則)與LASSO

機器學習過擬合問題

對於機器學習問題,我們最常遇到的一個問題便是過擬合。在對已知的資料集合進行學習的時候,我們選擇適應度最好的模型最為最終的結果。雖然我們選擇的模型能夠很好的解釋訓練資料集合,但卻不一定能夠很好的解釋測試資料或者其他資料,也就是說這個模型過於精細的刻畫了訓練資料,對於測試資料或者其他新的資料泛化能力不強。
以一個簡單的多項式擬合為例:
這裡寫圖片描述
圖一隻捕捉了資料的簡單特徵,處於欠擬合狀態。圖二是對原始資料一個比較好的擬合,圖三捕捉到了很多細節,雖然完美的通過了所有的點,但是泛化能力大大下降。
導致模型過擬合的原因很多,如:
1)模型過於複雜
2)資料存在噪聲
3)資料量比較小

對抗過擬合

目前我們已經有了很多方法對抗過擬合,常見的有
1.設定合適的模型訓練停止條件
避免模型過度訓練,產生過擬合現象
這裡寫圖片描述
2.Cross-validation 交叉驗證
一個常用的交叉驗證演算法是k-fold交叉方法:
把訓練樣例分成k份,然後進行k次交叉驗證過程,每次使用不同的一份作為驗證集合,其餘k-1份合併作為訓練集合.每個樣例會在一次實驗中被用作驗證樣例,在k-1次實驗中被用作訓練樣例;每次實驗中,使用上面討論的交叉驗證過程來決定在驗證集合上取得最佳效能的迭代次數n*,然後計算這些迭代次數的均值,作為最終需要的迭代次數。
3.特徵選擇
避免輸入的資料維度過高,選取代表性的特徵,刪去重複特徵。
4.正則化


我們經常聽到L0,L1,L2正則化,其中,
L0正則化的值是模型引數中非零引數的個數。通過最小化L0範數,來尋找最少最優的稀疏特徵項。但不幸的是,L0範數的最小化問題在實際應用中是NP難問題,無法實際應用。
L1正則化表示各個引數絕對值之和。L1正則是基於L1範數,即在目標函式後面加上引數的L1範數和項,即引數絕對值和與引數的積項。

這裡寫圖片描述
L2正則化標識各個引數的平方的和。L2正則是基於L2範數,即在目標函式後面加上引數的L2範數和項,即引數的平方和與引數的積項。
這裡寫圖片描述

引用一張非常著名的圖:
這裡寫圖片描述

由圖上可以看出,L1正則化可以在區域的角附近取得最優值,而角也就意味著有一個或者多個引數值為0,這就實現了稀疏化。而L2正則因為是球域,在座標軸相交的可能性大大減小,因此沒有稀疏性。

LASSO迴歸

Lasso(Least absolute shrinkage and selection operator, Tibshirani(1996))方法是一種壓縮估計。它通過構造一個罰函式得到一個較為精煉的模型,使得它壓縮一些係數,同時設定一些係數為零。因此保留了子集收縮的優點,是一種處理具有復共線性資料的有偏估計。Lasso 的基本思想是在迴歸係數的絕對值之和小於一個常數的約束條件下,使殘差平方和最小化,從而能夠產生某些嚴格等於0 的迴歸係數,得到可以解釋的模型。
Lasso迴歸有時也叫做線性迴歸的L1正則化,和Ridge迴歸的主要區別就是在正則化項,Ridge迴歸用的是L2正則化,而Lasso迴歸用的是L1正則化。Lasso迴歸有一個很大的問題,導致我們需要把它單獨拎出來講,就是它的損失函式不是連續可導的,由於L1範數用的是絕對值之和,導致損失函式有不可導的點。目前求解思路主要是極值解法座標軸下降法(coordinate descent)和最小角迴歸法( Least Angle Regression, LARS)

座標下降法:
我們的優化目標就是在θ的n個座標軸上(或者說向量的方向上)對損失函式做迭代的下降,當所有的座標軸上的θi(i = 1,2,…n)都達到收斂時,我們的損失函式最小,此時的θ即為我們要求的結果。
座標下降優化方法是一種非梯度優化演算法。為了找到一個函式的區域性極小值,在每次迭代中可以在當前點處沿一個座標方向進行一維搜尋。在整個過程中迴圈使用不同的座標方向。一個週期的一維搜尋迭代過程相當於一個梯度迭代。
座標下降法基於最小化多變數目標函式可以通過每次沿一個方向最小化目標函式來求解。與梯度方法的變化的梯度方向不同,座標下降方法固定其他的梯度方向。例如,座標方向為e1,e2,…,en。每次沿一個座標方向最小化目標函式,迴圈地沿每個座標方向進行計算。

最小角迴歸
最小角迴歸演算法是一個逐步的過程,每一步都選擇一個相關性最大的特徵,總的運算步數只和特徵的數目有關,和訓練集的大小無關。它與向前逐步迴歸(Forward Stepwise)不同點在於,Forward Stepwise每次都是根據選擇的變數子集,完全擬合出線性模型,計算出RSS,再設計統計量(如AIC)對較高的模型複雜度作出懲罰,而LAR是每次先找出和因變數相關度最高的那個變數, 再沿著LSE的方向一點點調整這個predictor的係數,在這個過程中,這個變數和殘差的相關係數會逐漸減小,等到這個相關性沒那麼顯著的時候,就要選進新的相關性最高的變數,然後重新沿著LSE的方向進行變動。而到最後,所有變數都被選中,就和LSE相同了。
這裡寫圖片描述