嶺回歸和lasso回歸(轉)


回歸和分類是機器學習算法所要解決的兩個主要問題。分類大家都知道,模型的輸出值是離散值,對應着相應的類別,通常的簡單分類問題模型輸出值是二值的,也就是二分類問題。但是回歸就稍微復雜一些,回歸模型的輸出值是連續的,也就是說,回歸模型更像是一個函數,該函數通過不同的輸入,得到不同的輸出。

       那么,什么是線性回歸,什么是非線性回歸呢?

線性回歸與非線性回歸

       前面說了,我們的回歸模型是一個函數是吧,那么線性回歸就是模型函數是由若干個基本函數線性加權得到的函數。也就是每一個基本函數前面都有一個權值來調和自己對於整個模型函數的重要性。然后,非線性函數就是各個基本函數並不是以線性加權形式結合。在線性回歸模型里面有一大類,叫廣義線性模型GLM,這里先不講。

       線性回歸模型中的各個基函數如何選擇,模型的函數就會有不同的結果。而且基函數的選擇有時可以將線性模型擴展到一般的非線性形式,只要你將基函數定義為一個非線性函數就好啦。雖然通常我們都是將每個基函數定義為輸入向量數據每一維特征的一次方函數,也就是輸入數據的每一維特征取值,但是我們仍然有必要聊聊其他的情況,這樣才能感覺到線性回歸的強大。

  •        首先,假設模型由N個基函數線性加權構成,我們可以在第一個取輸入x的一次方,第二個取x的二次方,。。。第N個取N次方,這樣模型就成為了x的多項式形式。這樣會導致一個問題,每一個基函數的輸入特征值會影響到其他基函數的值,因為它們共享變量x嘛。有一種函數可以解決這個問題,樣條函數,有興趣的同學可以查查。
  •        其次,如果每一個基函數是均值和方差確定的高斯函數,那么整個模型想不想高斯混合模型?哈哈,是挺像,但不是。因為高斯混合模型的每一個高斯分量的均值和協方差是未知的,也就是隱變量,而這里的基函數的均值和方差是確定的。
  •        然后,如果每一個基函數是三角函數,那么整個模型就是傅里葉變換的形式。怎么樣,哈哈,牛逼吧。這個在信號處理方面非常有用,比如小波分析。

       好了,下面談論的線性回歸的模型的基函數都是最簡單的輸入數據某一位特征的一次方形式。

典型線性回歸

       在最普遍的線性回歸的應用場景中,我們的輸入數據是一些具有M維特征的向量。然后回歸模型的函數就是M維特征取值的線性加權。我們要求取的模型參數就是這些權值。現在我們有這樣一批數據和這些數據的標注,怎么得到權值呢?方法就是,我們定義一個損失函數,這個損失函數是將訓練數據代入我們模型的預測值和真實標注值的差的平方,然后再將這些平方求和,即普通最小二乘法。有了損失函數,參數求解的問題就成了損失函數求和之最小化的最優化問題。

       為什么要這么定義損失函數呢?其實這個損失函數不是隨便定義滴。假設真實觀測值=模型的預測值+殘差,並且不妨假設殘差服從均值為零的的高斯分布,那么真實觀測值也服從高斯分布。通過對所有訓練樣本進行最大似然估計,然后經過一系列推導,會發現最大似然估計等價於普通最小二乘法。

       這里需要注意,使用最小二乘法有一個缺陷,就是如果殘差不服從高斯分布而服從一個其他差距很大的分布,那么求取出來的模型就會不正確。概率分布是一個讓人又愛又恨的東西,如果我們已知某一個數據集服從什么樣的概率分布,我們就可以依據這個構建一個非常好的模型。但是,通常情況下我們不知道數據服從什么樣的分布,(或者就算我們知道但是受限於數據量的限制,比如我們經常把異常值錯當做作為錯誤值,其實只是數據量夠大情況的正常值而已),我們也很難去用一個分布、甚至多個分布的混合去表示數據的真實分布。如果一個算法,是對里面的分布進行了某些假設,那么可能這個算法在真實的應用中就會表現欠佳。

       回到求取模型參數的問題上。通常求取模型參數有兩種途徑。一種是求出模型的解析解,一種是求出近似解。解析解的好處就是精確,但是求取過程計算量大,比較復雜,而且很多模型的解析解是無法求取的。近似解雖然不是特別精確,而且有時候可能會收斂到局部最優,但是計算方便,已經夠用。

       最小二乘法的解析解可以這樣求出:將損失函數關於參數求導並且令導數為零,然后通過變換可以直接得到解析解。

       最小二乘法的近似解可以這樣求出:隨機梯度下降法。即LMS也叫最小均方根法?具體做法是:每次隨機選取一個訓練樣本,對這個訓練樣本的觀測值和模型預測值的差的平方關於參數求導,也就是梯度。然后將梯度乘上一個alpha步長,將這個整體最為每一次迭代的變化部分。

 

結構風險最小化與參數縮減

 

       結構風險最小化是一種模型選擇策略。其實在上面我們求解模型參數的時候,就已經涉及到模型選擇的問題。模型選擇的策略一般有兩種,除了結構風險最小化,還有經驗風險最小化。而我們之前用的就屬於經驗風險最小化。經驗風險最小化有一個缺點就是,它求取的參數是對於訓練數據的無偏估計,結果就是容易產生過擬合現象。而結構風險最小化就是為了克服過擬合而提出的。它是在經驗風險最小化的基礎上增加了一個正則化因子。通常正則化因子是模型規模的函數。模型越復雜,這個函數取值越大。

 

       正則化因子的加入其實可以解釋為對模型參數進行了某種條件約束,然后參數的求解過程就相當於應用拉格拉日乘子法。通過對參數進行約束,保證了參數的取值不會太極端,也就進行了“參數縮減”。

 

嶺回歸

 

       有些情況下無法按照上面的典型回歸的方法去訓練模型。比如,訓練樣本數量少,甚至少於樣本維數,這樣將導致數據矩陣無法求逆;又比如樣本特征中存在大量相似的特征,導致很多參數所代表的意義重復。總得來說,就是光靠訓練樣本進行無偏估計是不好用了。這個時候,我們就應用結構風險最小化的模型選擇策略,在經驗風險最小化的基礎上加入正則化因子。當正則化因子選擇為模型參數的二范數的時候,整個回歸的方法就叫做嶺回歸。為什么叫“嶺”回歸呢?這是因為按照這種方法求取參數的解析解的時候,最后的表達式是在原來的基礎上在求逆矩陣內部加上一個對角矩陣,就好像一條“嶺”一樣。加上這條嶺以后,原來不可求逆的數據矩陣就可以求逆了。不僅僅如此,對角矩陣其實是由一個參數lamda和單位對角矩陣相乘組成。lamda越大,說明偏差就越大,原始數據對回歸求取參數的作用就越小,當lamda取到一個合適的值,就能在一定意義上解決過擬合的問題:原先過擬合的特別大或者特別小的參數會被約束到正常甚至很小的值,但不會為零。

 

lasso回歸

 

       上面說到,嶺回歸是在結構風險最小化的正則化因子上使用模型參數向量的二范數形式。那么,如果使用一范數形式,那就是lasso回歸了。lasso回歸相比於嶺回歸,會比較極端。它不僅可以解決過擬合問題,而且可以在參數縮減過程中,將一些重復的沒必要的參數直接縮減為零,也就是完全減掉了。這可以達到提取有用特征的作用。但是lasso回歸的計算過程復雜,畢竟一范數不是連續可導的。關於lasso回歸相關的研究是目前比較熱門的領域。

 

       以上就是線性回歸相關的一些知識的白話敘述。關於回歸問題還有一些相關話題比如邏輯斯蒂回歸和樹回歸,限於篇幅,以后再總結。

轉自:http://blog.csdn.net/xmu_jupiter/article/details/46594273

 

 

1.變量選擇問題:從普通線性回歸到lasso

使用最小二乘法擬合的普通線性回歸是數據建模的基本方法。其建模要點在於誤差項一般要求獨立同分布(常假定為正態)零均值。t檢驗用來檢驗擬合的模型系數的顯著性,F檢驗用來檢驗模型的顯著性(方差分析)。如果正態性不成立,t檢驗和F檢驗就沒有意義。

對較復雜的數據建模(比如文本分類,圖像去噪或者基因組研究)的時候,普通線性回歸會有一些問題:

(1)預測精度的問題 如果響應變量和預測變量之間有比較明顯的線性關系,最小二乘回歸會有很小的偏倚,特別是如果觀測數量n遠大於預測變量p時,最小二乘回歸也會有較小的方差。但是如果n和p比較接近,則容易產生過擬合;如果n<p,最小二乘回歸得不到有意義的結果。

(2)模型解釋能力的問題 包括在一個多元線性回歸模型里的很多變量可能是和響應變量無關的;也有可能產生多重共線性的現象:即多個預測變量之間明顯相關。這些情況都會增加模型的復雜程度,削弱模型的解釋能力。這時候需要進行變量選擇(特征選擇)。

針對OLS的問題,在變量選擇方面有三種擴展的方法: (1)子集選擇 這是傳統的方法,包括逐步回歸和最優子集法等,對可能的部分子集擬合線性模型,利用判別准則 (如AIC,BIC,Cp,調整R2 等)決定最優的模型。 (2)收縮方法(shrinkage method) 收縮方法又稱為正則化(regularization)。主要是嶺回歸(ridge regression)和lasso回歸。通過對最小二乘估計加入罰約束,使某些系數的估計為0。 (3)維數縮減 主成分回歸(PCR)和偏最小二乘回歸(PLS)的方法。把p個預測變量投影到m維空間(m<p),利用投影得到的不相關的組合建立線性模型。

2.正則化:嶺回歸、lasso回歸和elastic net

(1)嶺回歸

最小二乘估計是最小化殘差平方和(RSS):

 



嶺回歸在最小化RSS的計算里加入了一個收縮懲罰項(正則化的l2范數)

 



這個懲罰項中lambda大於等於0,是個調整參數。各個待估系數越小則懲罰項越小,因此懲罰項的加入有利於縮減待估參數接近於0。重點在於lambda的確定,可以使用交叉驗證或者Cp准則。

嶺回歸優於最小二乘回歸的原因在於方差-偏倚選擇。隨着lambda的增大,模型方差減小而偏倚(輕微的)增加。

嶺回歸的一個缺點:在建模時,同時引入p個預測變量,罰約束項可以收縮這些預測變量的待估系數接近0,但並非恰好是0(除非lambda為無窮大)。這個缺點對於模型精度影響不大,但給模型的解釋造成了困難。這個缺點可以由lasso來克服。(所以嶺回歸雖然減少了模型的復雜度,並沒有真正解決變量選擇的問題)

(2)lasso

lasso是一種相對較新的方法,參考[1],[2]。關於lasso的發展和一些思想介紹可以參考網上很有名氣的一篇文章《統計學習那些事》http://cos.name/2011/12/stories-about-statistical-learning/

lasso是在RSS最小化的計算中加入一個l1范數作為罰約束:

 



l1范數的好處是當lambda充分大時可以把某些待估系數精確地收縮到0。

關於嶺回歸和lasso,在[3]里有一張圖可以直觀的比較([3]的第三章是個關於本文主題特別好的參考):

 



關於嶺回歸和lasso當然也可以把它們看做一個以RSS為目標函數,以懲罰項為約束的優化問題。

(3)調整參數lambda的確定

交叉驗證法。對lambda的格點值,進行交叉驗證,選取交叉驗證誤差最小的lambda值。最后,按照得到的lambda值,用全部數據重新擬合模型即可。

(4)elastic net

elastic net融合了l1范數和l2范數兩種正則化的方法,上面的嶺回歸和lasso回歸都可以看做它的特例:

 



elastic net對於p遠大於n,或者嚴重的多重共線性情況有明顯的效果。 對於elastic net,當alpha接近1時,elastic net表現很接近lasso,但去掉了由極端相關引起的退化化或者奇怪的表現。一般來說,elastic net是嶺回歸和lasso的很好的折中,當alpha從0變化到1,目標函數的稀疏解(系數為0的情況)也從0單調增加到lasso的稀疏解。

轉自:https://site.douban.com/182577/widget/notes/10567212/note/288551448/

 

 

 

通過對損失函數(即優化目標)加入懲罰項,使得訓練求解參數過程中會考慮到系數的大小,通過設置縮減系數(懲罰系數),會使得影響較小的特征的系數衰減到0,只保留重要的特征。常用的縮減系數方法有lasso(L1正則化),嶺回歸(L2正則化)。

 

縮減系數的目的

1.1 消除噪聲特征:

如果模型考慮了一些不必要的特征,那么這些特征就算是噪聲。噪聲是沒必要的,使得模型復雜,降低模型准確性,需要剔除。 

1.2 消除關聯的特征:

如果模型的特征空間中存在關聯的特征,這會使得模型不適定,即模型參數會有多解。訓練得到的只是其中一個解,這個解往

往不能反映模型的真實情況,會誤導模型的分析與理解。訓練求解的模型參數受樣本影響特別大,樣本變化一點點,參數解就跳

 

 

到另一組解去了。總之,模型是不穩定的。

正則化:

什么是正則化:
對損失函數(目標函數)加入一個懲罰項,使得模型由多解變為更傾向其中一個解。 在最小二乘法中,可以這樣理解。XTX可能是不可逆的,通過加上正則項,迫使弱的特征的系數縮減為0.

轉自:http://blog.csdn.net/autoliuweijie/article/details/50285881

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM