R語言實現LASSO回歸的方法

Lasso回歸又稱為套索回歸,是Robert Tibshirani於1996年提出的一種新的變量選擇技術。Lasso是一種收縮估計方法,其基本思想是在回歸系數的絕對值之和小於一個常數的約束條件下,使殘差平方和最小化,從而能夠產生某些嚴格等於0的回歸系數,進一步得到可以解釋的模型。R語言中有多個包可以實現Lasso回歸,這裡使用lars包實現。

1.利用lars函數實現lasso回歸並可視化顯示

x = as.matrix(data5[, 2:7]) #data5為自己的數據集
y = as.matrix(data5[, 1])
lar1 <-lars(x,y,type = "lasso")
lar1 #查看得到的結果

在這裡插入圖片描述

從圖1可以看出通過lasso回歸得到的R^2為0.426,較低。標紅的部分是在進行lasso回歸時,自變量被選入的順序。下面用圖表的形式顯示。

plot(lar1) 

在這裡插入圖片描述

可以看到圖2中的豎線對應於lasso中迭代的次數,對應的系數值不為0的自變量即為選入的,豎線的標號與圖1中的step相對應。

2.選取cp值最小時對應的模型,獲取模型對應系數

對於選取最小cp值對應的模型可以通過兩種方式實現:
(1)顯示所有cp值,從中挑選最小的

summary(lar1) #輸出lasso對象的細節,包括Df、RSS和Cp,其中Cp是MallowsCp統計量,通常選取Cp最小的那個模型

在這裡插入圖片描述

圖3顯示瞭lasso回歸中所有的cp值,選擇最小的,即上圖標紅的部分,對應的df=3,最前面一列對應迭代次數(即步數),step=2 。

(2)直接選取最小的cp值

lar1$Cp[which.min(lar$Cp)] #選擇最小Cp,結果如下:

在這裡插入圖片描述

與圖3中標紅的部分結果一樣,但是要註意,2表示的是step大小。

3.選取cp值最小時對應的模型系數

(1)獲取所有迭代系數,根據step大小選擇cp值最小對應的自變量系數值

lar1$beta #可以得到每一步對應的自變量對應的系數

在這裡插入圖片描述

圖4標紅的部分就是step=2對應的cp值最小時對應的模型的自變量的系數

(2)獲取指定迭代次數(即步數)對應的自變量的系數,可以通過下面的代碼實現:

coef <-coef.lars(lar,mode="step",s=3) #s為step+1,也比圖2中豎線為2的迭代次數對應,與圖3中df值相等;s取值范圍1-7.
coef[coef!=0] #獲取系數值不為零的自變量對應的系數值

在這裡插入圖片描述

與圖4中標紅部分一樣。

4.獲取截距的系數

通過第4部分可以獲取cp值最小時對應的自變量的系數,但是沒有辦法獲取對應模型的截距值,下面的代碼可以獲取對應模型的截距值。

上面的代碼就是求取cp值最小時對應的模型的截距值,結果如下:

在這裡插入圖片描述

總結:

通過上面的4步可以利用R語言實現Lasso回歸,並可以獲取模型相應的系數和截距值。

到此這篇關於R語言實現LASSO回歸的方法的文章就介紹到這瞭,更多相關R語言LASSO回歸內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: