L1正則化的Lasso回歸可以用來特徵選擇,L2正則化(嶺回歸)通常用來防止過擬合,那它也可以用來做特徵選擇嗎?


不曾聽聞。--原答案

我看了所謂「已認證的官方賬號」的回答, @論智 。雖然您的回答似乎有零有整,姑且不說您是否是copy paste的,這樣具有誤導性的回答確實讓人匪夷所思。

我們先看一下他所說的alpha是個什麼東西。

我們知道Ridge regression 裏的objective function是有一個penalty的term,以防止overfitting,這個term是L2的。

objective function: SSE + alpha*||beta||^2

這個alpha是用來控制penalty的強度,正常來說是通過一些techniques,for example, cross-validation,通過Linear probing 去找到一個alpha值,使得這個Ridge regression能夠generalize,有效降低prediction error。

用alpha去做feature selection簡直是荒謬!它只是一個regularization的手段,防止overfitting,並非是用來做feature selection。你人為地去操作alpha的值,以達到你所謂的feature selection的目的,而忽略了模型的整體性,簡直是荒謬至極。

我們來說為什麼Lasso能做feature selection,而Ridge不能:

Feature selection的過程是remove的過程,LASSO 能將解釋力弱、比較noisy的變數剔除,而Ridge是將這些變數在模型中所表現出來的重要性大大降低,但並不能剔除。嚴格意義上來講,剔除纔是Feature selection,通常是在modeling之前,LASSO因為其特性,可以作為一種手段。

當然,Modeling的過程是一個講故事的過程,如果你用Ridge的結果去剔除某些變數再重新modeling,在符合common sense並且有較好的結果的情況下,去闡述一個完整的故事,做modeling的document的時候去這麼說,也無可厚非,雖然從理論上來說,這種故事缺乏強而有力的backup。

摘自ESLII Stanford U

&

Ridge Lasso 其實是一個optimize的過程:

Ridge -

objective function: Arg(min) SSE subject to ||Beta||^2 &< M

Lasso -

objective function:Arg(min) SSE subject to sum(|Beta|) &

那麼他們分別的條件在空間中,以二維為例,一個是四條線圍成的形狀,另一個是curve的圓。

SSE是一個Squared的形式:

sum(y - betaX)^2 = sum(beta^2(*) - 2beta(*) +(*)) (*)為省略的內容。

那麼SSE 在空間中是橢圓,我們在高三就學過的優化過程,就能大致站展開了。就如同上圖中的最下邊兩個圖。

&

你簡單地設一個X, Let us say, it is a diag(n) with diag value = 1。 用gradient的方法去求beta。就能得到表中的式子。

這裡我們又能抨擊一下 @論智 在不負責任的回答中關於sigma的用法。

beta/(1 + sigma) 是一個特例,但也不乏說明性。

不管你的sigma有多大,你都不可能在Ridge中將一個parameter shrink to 0。

咱們也用他添加引用的方法,強調一下。

Feature selection 是一個精密的過程,並不是胡來的過程。我們有方法、有理論地去選變數,這纔是modeling正確的步驟。正確的理論,結果不好,只能說是方法不合適;錯誤的理論,往往讓你的模型站不住腳。

請您 @論智 選擇刪除您的回答,或者是做出改正。


正則化用來防止過擬合的主要直覺就是避免模型過於複雜,或者說,降低模型的複雜度。而特徵選擇也是為了降低模型的複雜度。

在L1正則化(Lasso回歸) J + alpha sum|θ| 中(J為原目標函數或損失函數, 	heta 為模型係數),通過調整 alpha (比如通過交叉驗證),可以使(在Lasso回歸模型看來)不重要的特徵係數為零,換句話說,也就是移除了這些特徵。

圖片來源:Dataminer(CrossValidated)

依次類推,L2正則化(Ridge regression,嶺回歸)不也可以用來做特徵選擇嗎?但是我們遇到了一個問題,無論把alpha改到多大,L2都無法使特徵係數為零(隨著alpha的增大,特徵係數會變得越來越小,不重要的特徵係數會更快接近零,但永遠到不了零)。

不過,這不是什麼大問題。我們可以設定一個閾值,係數低於這個閾值的,就移除相應特徵。

相比L1,用L2正則化做特徵選取,最大的劣勢是難以應對相關特徵(correlated features)。在正則化的時候,如果有大量相關特徵,一般而言,L1的效果要比L2好。

關於這一點,可以考慮一個簡化的極端情形,假設有兩個可以相互替換的相關特徵 X_1X_2 ,那麼線性模型 1 * X_1 + 1 * X_20 * X_1 + 2 * X_2 是等價的。在L1看來,這兩個模型的penalty(複雜度)是一樣的( 1 + 1 = 0 + 2 = 2 ),而L2由於取平方的關係,兩個模型的penalty大不相同( 1^2 + 1^2 
eq 2^2 + 0 )。

那麼,在特徵選取的時候,在L1看來,模型 1 * X_1 + 1 * X_20 * X_1 + 2 * X_2 的複雜度差不多,前者兩個係數都沒到零,都不移除,後者會移除 X_1,但留下 2 * X_2 ,最終效果是一樣的。L2更喜歡 1 * X_1 + 1 * X_2(penalty才2),所以會更大力度地懲罰0 * X_1 + 2 * X_2 (penalty高達4)。換句話說,L2可能最終留下的模型是1 * X_1 + 1 * X_2。然後如果我們設定的閾值是大於1才保留,那很不幸, X_1X_2就會被L2全部移除。

總的來說,L2(設定閾值的情況下)可以用來做特徵選擇。但因為在應對相關特徵方面效果不如L1,而且也比L1稍微複雜一點(需要算平方,還要考慮閾值的選取),所以在特徵選取方面不像L1一樣得到了廣泛應用。


範劍青在2001年的著名文章中指出,只有凹的懲罰函數具有模型選擇能力。LASSO是凹凸臨界點也是可以的。


個人覺得看你怎麼用了。其實理論上L2並不是用於特徵篩選的演算法,L1看上去更合適。但是L1想一次做到合適程度的特徵篩選,對懲罰項的調餐要做得比較好。而L2其實只要加一個大一些的懲罰項,就可以得到每個特徵權重,從大到小也可以排序做特徵的初篩。其實特徵篩選的方法很多,其實要機遇模型的話,隨機森林或者xgboost也是不錯的選擇。


不行,L2有平滑效果,會把大的壓小噢,不像L1,傾向於把小的變0從而做特徵選擇


推薦閱讀:

TAG:回歸分析 | 線性回歸 | 回歸 | 特徵選擇 |

相關文章