Linear least squares, Lasso,ridge regression有何本質區別?
Linear least squares, Lasso,ridge regression有何本質區別?
還有ridge regression uses L2 regularization; and Lasso uses L1 regularization. L1和L2一般如何選取?
Linear regression一般只對low dimension適用,比如n=50, p=5,而且這五個變數還不存在multicolinearity.
Ridge Regression的提出就是為了解決multicolinearity的,加一個L2 penalty term也是因為算起來方便。然而它並不能shrink parameters to 0.所以沒法做variable selection。
LASSO是針對Ridge Regression的沒法做variable selection的問題提出來的,L1 penalty雖然算起來麻煩,沒有解析解,但是可以把某些係數shrink到0啊。
然而LASSO雖然可以做variable selection,但是不consistent啊,而且當n很小時至多只能選出n個變數;而且不能做group selection。
於是有了在L1和L2 penalty之間做個權重就是elastic net, 針對不consistent有了adaptive lasso,針對不能做group selection有了group lasso, 在graphical models里有了graphical lasso。然後有人說unbiasedness, sparsity and continuity這三條都滿足多好,於是有了MCP和SCAD同時滿足這三條性質。penalized regression太多了,上面提到的都是比較popular的方法了。很多回答都很全面了,大意就是lasso在優化過程的目標函數中使用如下的L1 penalty:
從而把一些線性回歸項的係數「逼成」零;ridge是用L2 penalty,旨在把係數變得小一些,但非完全成零。兩者原理上的區別可由下圖表示:
不難看出由於L1 penalty規定的範圍「四四方方、有稜有角」,所以最優解的係數會被剛好縮成零,因此lasso可以實現對變數的選擇(係數為零的變數就被篩掉了)。
有趣的是,我們還可以將所有變數分組,然後在目標函數中懲罰每一組的L2範數,這樣達到的效果就是可以將一整組的係數同時消成零,即抹掉一整組的變數,這種手法叫做group lasso,其目標函數如下:
其中我們把所有變數分為 組,第一項是通常的OLS,第二項是每一組係數的L2範數之和。這裡, 控制整體懲罰的力度,是每一組的加權,可以按需調節。
比如一個regression若有10個係數 ,我們如果選擇將其分成2組:其中 一組, 一組。那麼group lasso的懲罰項目將會是:
通過施加group-wise的L2 penalty,我們有可能促使 或者 。
最後,還有一種lasso和group lasso的奇葩結合,叫做sparse group lasso,由 Simon et al 在2013年提出,sparse group lasso的目標函數(如下)的懲罰項中,既有所有係數的L1範數,又有每一組係數的L2範數
其中 依然控制總體的懲罰力度,有新引入 控制兩個懲罰項之間的相互強弱。所以sparse group lasso既可以把係數和變數一組一組地篩掉,又可以在剩下的組中篩掉一些單個的係數,原理圖如下:
當然了,這只是在簡單OLS背景下的lasso、ridge、和group lasso和sparse group lasso,更常用的目標函數的第一項一般是log likelihood(用於maximum likelihood手法)。相似的概念也可以遷移到其他場景,比如因子分析模型(factor analysis model),其中group lasso可以幫助進行對可被觀測的變數選取,而sparse group lasso可以選取隱藏因子,我統計的thesis做的就是這個啦。
線性回歸問題是很經典的機器學習問題了。
適用的方法也蠻多,有標準的Ordinary Least Squares,還有帶了L2正則的Ridge Regression以及L1正則的Lasso Regression。
這些不同的回歸模型的差異和設計動機是什麼?
在本帖的一個高票回答[1]里,把這個問題討論得其實已經相當清楚了。
我在這裡的回答更多是一個知識性的總結,在Scott Young的《如何高效學習》[6]里提到高效學習的幾個環節: 獲取、理解、拓展、糾錯、應用、測試。
在我來看,用自己的語言對來整理對一個問題的認識,就是理解和擴展的一種形式,而發在這裡也算是一種應用、測試兼顧糾錯的形式了。首先來看什麼是回歸問題,直白來說,就是給定
其中映射函數未知,但是我們手上有一堆數據樣本,形式如下:
我們期望從數據樣本里推斷出映射函數
,滿足即期望推斷出的映射函數在數據樣本上與真實目標的期望差異儘可能最小化。
通常來說,數據樣本中每個樣本的出現頻率都可以認為是1,而我們要推斷的映射函數可以認為是
一個線性函數
其中就是我們要推斷的關鍵參數了。
這樣的問題就是線性回歸(Linear Regression)問題。
Ordinary Linear Square的求解方法很直白,結合上面的描述,我們可以將
具像化為求解函數的最小值以及對應的關鍵參數。對於這個目標函數,我們可以通過求導計算[2],直接得出解析解如下 :
當然,這是一個典型的Convex優化問題,也可以通過迭代求優的演算法來進行求解,比如Gradient Descent或者Newton法[2]。
看起來不錯,那麼為什麼我們還要在OLS的基礎上提供了Ridge Regression(L2正則)和Lasso Regression(L1正則)呢?
如果說得籠統一些的話,是為了避免over-fit,如果再深入一些,則可以這樣來理解:
還是在[3]里,提供了一個定量的證明:
一個有名的病態矩陣是Hilbert矩陣[4],其形如下:
再回到我們關於OLS的討論,我們不難看出,隨著訓練樣本採樣次數的增加,採樣到病態陣的概率會增多,這樣一來學出的模型的穩定性就比較
那麼病態陣的根本原因是什麼呢?條件數的描述還是相對有些抽象,所以這裡又引入了奇異陣的概念。
什麼是奇異陣呢?
一定是一個方陣,所以這裡僅討論方陣這一特殊形態)就是奇異陣,即
那麼再具體一些,什麼樣的方陣會不存在逆呢?
非滿秩、矩陣的特徵值之和為0、矩陣的行列式為0。
滿足這三個條件中的任意一個條件,即可推出方陣為奇異陣,不可求逆,實際上這三個條件是可以互相推導出來的。
而我們又知道,一個方陣的逆矩陣可以通過其伴隨矩陣和行列式求出來[7]
從這裡,其實可以看的出來,對於近似奇異陣,其行列式非常接近於0,所以
如果類比普通代數的話,奇異陣就好比是0,0不存在倒數,越接近0的數,其倒數越大,同樣,奇異陣不存在逆矩陣,而接近奇異陣的逆矩陣的波動也會比較大。
所以跟奇異陣有多像(數學語言里稱為near singularity),決定了我們的線性回歸模型有多麼不穩定。
既然知道了奇異陣的性質並且了解到是奇異陣使得從訓練數據中學出來的線性回歸模型不那麼穩定,那麼我們是不是可以人為地通過引入一些transformation讓
長得跟奇異陣不那麼像呢?
我們知道
於是一個直觀的思路是在方陣的對角線元素上施加如下的線性變換 其中
是單位陣。
有了上面的變換以後,對角線的元素為全零的概率就可以有效降低,也就達到了減少
near singularity的程度,進而減少線性回歸模型不穩定性的目的了。
那麼這個變換跟Ridge或是Lasso有什麼關係呢?
實際上,
(7.6)
正是對下面的
這個優化問題為
計算閉式解得到的結果(在[2]里OLS的閉式解的推導過程里加入二範數正則項,蠻自然地就會得到7.6里的結果,[8]里也有類似的推論)。
而(7.7)正是Ridge Regression的標準寫法。
進一步,Lasso Regression的寫法是
這實際上也是在原始矩陣上施加了一些變換,期望離奇異陣遠一些,另外1範數的引入,使得模型訓練的過程本身包含了model selection的功能,在上面的回復里都舉出了很多的例子,在一本像樣些的ML/DM的教材里也大抵都有著比形象的示例圖,在這裡我就不再重複了。
一個略微想提一下的是,對於2範數,本質上其實是對誤差的高斯先驗,而1範數則對應於誤差的Laplace先驗,這算是另一個理解正則化的視角了。
只不過1範數的引入導致優化目標不再處處連續不能直接求取閉式解,而不得不resort到迭代求優的方法上了,而因為其非處處連續的特點,
即便是在迭代求優的過程中,也變得有些特殊了,這個我們可以在以後討論OWLQN和LBFGS演算法的時後再詳細引出來。
[1]. Linear least squares, Lasso,ridge regression有何本質區別? - 數據挖掘[2]. http://cs229.stanford.edu/notes/cs229-notes1.pdf[3]. 《數值分析導論》(數值分析導論 (豆瓣) )的 例6.5.3
[4]. 《數值分析導論》(數值分析導論 (豆瓣) )的例6.5.5
[5]. 關於奇異陣的資料。
[6]. 如何高效學習 (豆瓣)如何高效學習 (豆瓣)[7]. http://cs229.stanford.edu/section/cs229-linalg.pdf[8]. PRML 3.28
J(theta)是模型的cost function
y是實際數據y_hat是你的模型推算出來的數據theta是模型的參量最原始的regression:
J(theta) = sum((y - y_hat)^2)加上L1(也就是LASSO):
J_lasso(theta) = sum((y - y_hat)^2) + sum(abs(theta))加上L2(也就是Ridge):
J_ridge(theta) = sum((y - y_hat)^2) + sum(theta^2)對於兩個參量的cost function來說,把模型視覺化出來就是這樣的:
那個長得像年輪蛋糕的圈圈就是J(theta),左邊的圓圈是L2,右邊的方塊是L1。也就是說你在做最優化的時候,你在原有的空間里疊加了一個圓圈/方塊,這樣就會有一種「力」把你的theta向0拉,這也是為什麼叫LASSO的原因。L1和L2什麼時候用呢?如果你有很多features,不知道哪個最重要,那麼你可以用L1,因為L1會更鼓勵theta為0。這樣你可以直接用非0的theta,那麼模型的複雜程度會降低很多題主這個問題算是比較基礎的,那我回答也詳細點好了。個人理解,不當之初歡迎各位大牛指正。
知乎公式編輯器導致意外換行問題不知如何解決……各位看官幫幫忙。 1. Least-squares(最小二乘法)是最經典的機器學習演算法,後續的大部分機器學習演算法(包括題主提到的Lasso,ridge regression)都是在其基礎上發展而來的。Linear model即,只要求得其參數,便可以得到自變數與因變數的映射關係。因此有監督回歸的任務就是通過個成對的訓練樣本來求得學習模型的參數。
2. 最小二乘法是對模型的輸出和訓練樣本的輸出的平方誤差為最小時的參數進行學習。稱之為損失函數。隨著學習模型複雜度的提高,這種經典最小二乘法存在的諸多缺陷也表露出來,其中一個重要的問題就是對訓練數據的過擬合(overfitting)。過擬合的原因被認為是學習模型相比真實模型過於複雜。因此為解決過擬合問題,可在損失函數的後面加上一個約束條件從而限制模型的複雜度,這個約束條件即為正則化項(regularizer)。典型的正則化方法就是引入約束,約束的約束條件是參數的的範數小於某個閾值,此時最小二乘學習法的學習目標變為使學習結果的平方誤差與正則化項的和最小。雖然這種方法對於預防過擬合非常有效,但當學習模型中的參數特別多時,求解各參數需要花費大量的時間。因此,一種能夠把大部分參數都設置為0的學習方法便被提出,就是稀疏學習,Lasso回歸就是典型的稀疏學習。
3. Lasso回歸的本質是約束的最小二乘法,即學習模型參數的範數小於某個閾值。想像一下,約束下的參數分布趨向於以圓點為中心的圓周內部,而約束下的參數則集中分布在各坐標軸附近,因此約束能夠有效的將若干參數的解收斂到0。約束的求解相對於約束更為複雜,通常解法是需要數個約束求解的迭代過程。因此,題主所問的和約束如何選取的問題,個人認為如果不考慮約束的彈性網回歸,約束更適合參數較多或需要特徵提取的情況下,約束更適合模型簡單或是不想求解那麼複雜的情況下(MATLAB算這兩種約束都很簡單)。
4. 嶺回歸也是最小二乘法正則化方法的一種延伸,特點是以損失無偏性為代價換取數值穩定性。
希望能幫到你。不太贊同高票答案關於Lasso產生的motivation,高票答案說:「你可能又要問了,多加的那一項憑什麼是模長呢?不能把2-norm改成1-norm嗎?」實際上,Tibshirani (1996) 原文中對此也有頗多闡述,Lasso產生的初因並非只是簡單地把2修改到1(雖然表現出來確實如此,後面對此詳敘)。我嘗試在樓上各個答案的基礎上,添加一些歷史線索。
先回答題主問題:
最小二乘法的一些討論可參見 Logistic 回歸模型的參數估計為什麼不能採用最小二乘法? - Yeung Evan 的回答 ;Linear least squares是對線性回歸模型進行參數估計的一種選擇,同時我們當然可以從非最小二乘的方法對線性回歸模型的參數進行估計。在使用最小二乘法進行求解時,我們會對線性回歸模型進行假設,當這些假設在實際中並不滿足時,最小二乘法是有問題的。其中很重要的一個假設是要求各個變數要相互獨立,而實際樣本可能會有較大的共線性(multicollinearity)。從數學上來說,這種情況會造成(至少一個)特徵值很小,從而估計量的MSE會很大(*)。所以ridge regression就很粗暴,因為(至少一個)特徵值很小,所以就強行加上一個把特徵值「掰」大。ridge regression 大約是在1970年Hoerl提出。
後來(或同時)人們考慮回歸方程的選擇問題,比如說,不一定所有的自變數的數據都需要放入模型,因為有些自變數本身對模型的影響不大,但引入之後卻會增加對其他參數的估計所需的計算量以及減少其精度(那個年代計算機還遠未普及)。但到底哪些變數需要選,哪些變數需要棄,就是一個頗為棘手的問題。後來比較經典的處理方法就是逐步回歸法,又細分為向前逐步回歸和向後逐步回歸。這一方法的成熟大約也是在70年代左右。再然後,此問題的發展是1993年Frank和Friedman提出的bridge regression,他們提出的對優化目標函數的限制已經是形如的樣子了,但可惜他們沒有能力進一步對取特殊值(**)時的情況進行討論。
最終在1996年Tibshirani把上述兩個問題同時解決了:
(*)MSE偏大時估計的精確度會降低,因為方差偏大;
(**)時模型具有「挑選」自變數的能力,並將這個情況下的優化問題講清楚了;
這裡回到本文開頭,看上去只是把 改成了 ,但實際上背後的工作原理相當複雜,這也是CS的一些研究在嚴密性上,相對容易忽視的地方:即對變數的選擇性從何而來?換句話說,怎麼證明把 數值改了,就把變數壓縮了呢?
要回答這個問題是相當難的,僅以ridge回歸為例,在考慮 時,可以通過相當的篇幅證明,在此約束下的回歸結果 。這意味著,估計向量的長度縮短了——當然其中的某些分量一定變小了——這就是最初的變數被壓縮的雛形。而更一般的變數選擇性,需要更艱深的證明,而不是簡單一句「把 值改了,模型就能避免over fitting」——中間的因果邏輯需要相當多的數學推導。
Lasso後續的發展請關注千面人的答案,當然包括真正把Lasso變得「好算」的Lars演算法也是該問題的里程碑之一。
上述即是Lasso和ridge regression的一些歷史線索,是最自然、最符合一個研究發展脈絡的邏輯。在機器學習中還有一些和此問題相關的概念,比如正則化,它們本質上都是相似的,在機器學習中引入正則化這一概念的淵源非我能置喙,但至少說引入正則因子或者懲罰項是為了避免overfitting,是不太自然的。
三者都是找一個weights使total cost最小
不同的是怎麼定義total cost
Linear regression的cost 的定義是
即殘差平方和,把預測值與實際值的差異(殘差)平方後相加。
Linear regression方法便是用一些最優化的方法(直接求解析解,梯度下降等)求這個total cost的最小值對應的weights.
實際用這個方法若沒有足夠的訓練樣本或features數很多時會出現overfitting的情況。
overfitting的時候weights的數值經常會很大。
為了克服這個問題在totally cost加入對weights數值的懲罰項。
懲罰項是weights數值的大小。用2範數來量化,即每個weights分量的平方和。
在weights的懲罰項前加入調節參數lambda。
這就是Ridge regression
Ridge regression方法也是用最優化求使Total cost最小的weights。
Ridge regression比Linear regression好的另一點是,它總是可以對方程直接求解析解,就算在方程的未知數(weights)比方程數(樣本數)多的情況。
實際用Ridge regression時weights會慢慢變小但不會為零。
(圖為Ridge regression中隨lambda大小的變化每個weights分量大小的變化情況,可以看到隨著lambda變大(即懲罰項越重要),weights分量越趨近0)
當features很多的時候那些weights非常小的對應的feature對學習結果沒什麼影響。
於是改變total cost使在優化total cost 過程中不僅使weight變小,還能使其變為0。
將weights懲罰項變為1範數就能實現。
這就是Lasso regression
懲罰項變成1範數即weights分量的絕對值後Total cost在收斂的過程中會使一些分量變為0
變為0的分量對結果影響較小,即對應的feature相對不重要。因此lasso regression也有對features進行篩選的作用。
(圖為lasso regression中隨lambda大小的變化每個weights分量大小的變化情況,可以看到隨著lambda變大(即懲罰項越重要),一些weights分量會變成0)
綜上:Linear regression, Ridge regression 和 Lasso regression的區別在對cost的定義上。不同的total cost定義對應著不同的模型。
先驗假設不同
這個問題可以從以下幾個方面回答:1:optimization的角度,即1樓;2:regularization的角度,L1,L2 regularization都是為了預防或者減少過擬合,機器學習的過程本質上是從一個假設空間(函數空間)中根據一定的演算法選擇某個最優的假設(函數)的過程,加上一些regularization就是限制了我們所選擇的假設(函數)只能在一定的範圍內選取,對線性回歸而言,過擬合的一個明顯標誌就是某些權重的值會很大,加上一些限制可以減少這樣的情況的發生,L1的解通常稀疏,L2從計算角度而言更方便;3:從貝葉斯角度而言,不同的regularization代表了對權重使用不同的先驗分布,這一點建議看PRML的前面的章節,由更具體的描述;
這個問題我才疏學淺,只能從下面幾個方面回答:1,linear regression是個很大的題目,還有general linear regression。題主說的least square, 姑且認為是ordinary least square,那麼其實很簡單,就是證明了(在特定情況下)這個quadratic loss function估計出來的參數是blue (best linear unbiased estimator),指的是在所有linear,無偏 estimator當中,這個估計的結果是variance最小的。2,加上regularizer的一個數學原因是1中參數估計的表達式存在inverse,如果存在multi-colinearity或者非唯一解,那麼estimator 的數值解可能不存在/極不穩定。加入一個regularizer 可以保證inverse的非奇異性。3,l1, l2都是可行的regularizer,唯一的區別可能就是l1得到的估計更加sparse。
The difference essentially hides in Tuning parameter lambda for those three methods, which is all about answering the following question: "How much do you like to pay, for coefficients being non-zero?"
從應用的角度講兩句。linear regression應用在反應變數和觀測量成線性關係加一個高斯誤差的模型上。怎麼估計參數?最基礎常見的是least square,其結果的好處在於無偏。但是當觀測量X接近singular的時候,least square估計量的方差大。ridge是在最優化的函數上做l2的regularization,而lasso是l1的。ridge是修改優化函數後的升級版regression。而lasso最大的好處在於,curve常和數軸上的頂點相交,自動完成了feature selection,不用再看顯著性的臉色。
鑒於各種專業術語,我這就逗逼一下:
故事是這樣的:我們的自變數中,有些不中用,有些長得跟別人一樣(多重共線)。那怎麼把沒用的自變數搞死,把那些copy別人明星臉的搗蛋自變數拆穿呢?
Ridge的出場就是因為那些整容女變數的,和人家長得一樣,導致這個模型的估計不穩定,即:換一套數據,變數的係數估計就相差巨大,有時候大到不可理喻。那咋整呢?給扣個帽子!你不是大么,我設定個門檻,太大就滾吧。 所以樓上畫的那個以原點為圓心的圈,就是限制係數不能出圈的意思。
Lasso的故事,大家都說了叫變數選擇。那怎麼個選擇法子呢?還是上面那個例圖,它不是不讓出圈,是不讓出那個正方形的牢籠。大家問了,不就是圈和方形的差別,有啥大不了的?我就說,其實大了去了,你想啊:其實為了讓殘差小,我們得到的beta係數估計值其實都是在圓圈或者方形的邊界上的,而lasso是取得四個角上的值,則必有橫坐標,或者縱坐標為0. 為零的那個倒霉的係數就這樣被剔除出局了,官方說法叫變數選擇。而相比人家ridge很圓滑的處世之道了,也就是讓那些不中用的傢伙係數渺小而已,不徹底搞死到0。
=====
這是樓上的圖,不是原創啊。
Lasso是一階正則化,嶺回歸是二階。lasso的出發點是減少overfit,而嶺回歸一般認為是處理多重共線性的一種做法,當然它也有降低overfit的作用。lasso實際上是挑選自變數的一種做法,嶺回歸是壓縮某些係數。二者都會在訓練集上放大誤差,但是均能在測試集上減小估計誤差(理論上)。
本質就是有無罰項和什麼形式的罰。其實主要看l1罰的作用即可,對於無罰的約束問題,假設其存在一個靠近0的極值點x0,顯然x0使其目標函數的導數接近於0。加了l1罰之後,若只考慮l1罰的極值點,顯然是0,弱導數也是其係數,起主導作用。而l2的導數在x0附近依然很小,基本不影響原約束問題導數的值。
瀉藥。本質上並無區別。都是線性模型而已。
推薦閱讀:
※谁能解释下seq2seq中的beam search算法过程?
※機器學習中SVD和PCA一直沒有搞的特別清楚,應該如何理解呢?
※遊戲行業,大數據該如何應用?
※如果有第谷的數據,現在的機器學習,深度學習有辦法學出開普勒三定律嗎?