問題引入
之前分析了線性迴歸問題的解法,最小二乘迴歸法,但是對於大多數的實際問題,由於我們要用有限的觀測值去估計模型的分佈,比如在之前講線性迴歸中的例子,給出的樣例有100對,而我們建立的模型是一條直線,我們都知道兩點確定一條直線,這裏有100個點,這種稱作過度確定估計,同時很多樣例由於各種原因本身存在誤差,另一個方面是特徵之間相關性很大,說白了就是兩個特徵之間存在關係,本身可以用一個變量來表示,這樣既簡化了模型,同時減少特徵意味着減小誤差,我們現在在線性迴歸中去想辦法優化這個問題。
多重共線性:是指多變量線性迴歸中,變量之間由於存在高度相關關係而使迴歸估計不準確。比如虛擬變量陷阱即有可能觸發多重共線性問題。
如果樣本存在很大誤差,那麼我們估計到的結果
LASSO迴歸
LASSO迴歸的思路是既然會導致
同時在這一項中給一個係數k,就能夠調節它的影響,k值越大,則
然後如果某個特徵參數導致嶺跡波動很大,說明這個變量參數有共線性,我們可以考慮剔除這個變量
步驟
1. 對數據做標準化,從而方便以後對
2.構建懲罰函數,對不同的k,畫出軌跡圖
3. 根據軌跡圖,選擇剔除掉哪些變量。
目標函數
我們通過不斷增大懲罰係數k,然後看看它的參數各個
上面右圖是LASSO迴歸圖像,可以看到從右到左隨着k值的增大,很多
爲什麼出現0的就是導致共線性的變量呢?
看看上面這個圖,假設現在是一個兩個參數的直線模型,有兩個參數
其實除了常用LASSO迴歸之外,還有一個嶺迴歸,差別在於約束條件是
總結
嶺迴歸(Ridge迴歸)能夠優化點是通過調整懲罰係數
而LASSO迴歸通過調整懲罰係數觀察結果
目前最好擬合廣義線性模型的是glmnet,是LASSO迴歸的發明人開發的,它通過一系列不同的懲罰係數
當然這些優化都可以用在邏輯迴歸上,邏輯迴歸只是在線性迴歸的模型上套了一個logit函數,數據本身誤差和共線性的問題同樣存在。