線性迴歸多重共線性優化

問題引入

之前分析了線性迴歸問題的解法,最小二乘迴歸法,但是對於大多數的實際問題,由於我們要用有限的觀測值去估計模型的分佈,比如在之前講線性迴歸中的例子,給出的樣例有100對,而我們建立的模型是一條直線,我們都知道兩點確定一條直線,這裏有100個點,這種稱作過度確定估計,同時很多樣例由於各種原因本身存在誤差,另一個方面是特徵之間相關性很大,說白了就是兩個特徵之間存在關係,本身可以用一個變量來表示,這樣既簡化了模型,同時減少特徵意味着減小誤差,我們現在在線性迴歸中去想辦法優化這個問題。

多重共線性:是指多變量線性迴歸中,變量之間由於存在高度相關關係而使迴歸估計不準確。比如虛擬變量陷阱即有可能觸發多重共線性問題。

如果樣本存在很大誤差,那麼我們估計到的結果β 變化就會非常大,估計到的參數的方差也會很大,導致估計不準確。


LASSO迴歸

LASSO迴歸的思路是既然會導致β 變化很大,以及方差很大,那麼我們在最小二乘估計的時候把 β 也作爲損失函數中優化的一項,然後讓 β 的值不能過大

同時在這一項中給一個係數k,就能夠調節它的影響,k值越大,則 β 的變化影響很大,然後誤差導致共線性的影響減小,我們在不斷增大懲罰係數的過程中,畫出參數 β 的變化曲線,這個曲線被稱爲嶺跡
然後如果某個特徵參數導致嶺跡波動很大,說明這個變量參數有共線性,我們可以考慮剔除這個變量

步驟
1. 對數據做標準化,從而方便以後對 βk 的嶺跡的比較,否則不同變量的參數大小沒有比較性。
2.構建懲罰函數,對不同的k,畫出軌跡圖
3. 根據軌跡圖,選擇剔除掉哪些變量。


目標函數
這裏寫圖片描述

我們通過不斷增大懲罰係數k,然後看看它的參數各個 β 的變化
這裏寫圖片描述

上面右圖是LASSO迴歸圖像,可以看到從右到左隨着k值的增大,很多 β 會出現變爲0的情況,這種變量就是導致共線性的變量,我們可以剔除

爲什麼出現0的就是導致共線性的變量呢?
這裏寫圖片描述

看看上面這個圖,假設現在是一個兩個參數的直線模型,有兩個參數 β1 β2 需要估計,而按照LASSO對 β 的約束條件就是上面藍色正方形, β\^ 使我們的自變量係數,需要估計的結果,可以看到紅色的圓形總是先喝舉行的角相交,而這個點正好β1=0 ,說明傳統的最小二乘迴歸中β1 是具有共線性的,我們可以剔除,LASSO迴歸得到的是隻有 β2 對模型有用。

其實除了常用LASSO迴歸之外,還有一個嶺迴歸,差別在於約束條件是pj=1βj2<=t ,對應到上面的圖中就是藍色區域是個圓形,所以他不能直接讓β 值爲0,應爲相交的區域肯定不是在座標軸上 ,但是它也能通過增大懲罰係數k觀察β 軌跡的波動去剔除共線性變量, 但是很明顯發現LASSO更簡單。

總結

嶺迴歸(Ridge迴歸)能夠優化點是通過調整懲罰係數0<k<1 的大小,然後抑制過數據誤差導致的擬合
而LASSO迴歸通過調整懲罰係數觀察結果β 先變爲0,然後剔除共線性特徵,從而達到簡化模型作用
目前最好擬合廣義線性模型的是glmnet,是LASSO迴歸的發明人開發的,它通過一系列不同的懲罰係數 k 值去擬合模型,每次擬合都用上一次擬合的結果,從而達到抑制過擬合以及選擇變量的效果,有興趣可以研究下,有開源的庫。
當然這些優化都可以用在邏輯迴歸上,邏輯迴歸只是在線性迴歸的模型上套了一個logit函數,數據本身誤差和共線性的問題同樣存在。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章