Lease Absolute Shrinkage and Selection Operator(LASSO)在給定的模型上執行正則化和變量選擇
根據懲罰項的大小,LASSO将不太相關的預測因子縮小到(可能)零。是以,它使我們能夠考慮一個更簡明的模型。在這組練習中,我們将在R中實作LASSO回歸。
練習1
加載糖尿病資料集。這有關于糖尿病的病人水準的資料。資料為n = 442名糖尿病患者中的每個人獲得了10個基線變量、年齡、性别、體重指數、平均血壓和6個血清測量值,以及感興趣的反應,即一年後疾病進展的定量測量。"
接下來,加載包用來實作LASSO。
head(data)
向下滑動檢視結果▼
練習2
資料集有三個矩陣x、x2和y。x是較小的自變量集,而x2包含完整的自變量集以及二次和互動項。
檢查每個預測因素與因變量的關系。生成單獨的散點圖,所有預測因子的最佳拟合線在x中,y在縱軸上。用一個循環來自動完成這個過程。
summary(x)
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SNwUTO5QjM3Y2MyQ2YidzNzYzX2QTMxEDM5EzLcFTMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
for(i in 1:10){
plot(x[,i], y)
abline(lm(y~x[,i])
}
01
02
03
04
練習3
使用OLS将y與x中的預測因子進行回歸。我們将用這個結果作為比較的基準。
lm(y ~ x)
向下滑動檢視結果▼
練習4
繪制x的每個變量系數與β向量的L1準則的路徑。該圖表明每個系數在哪個階段縮減為零。
plot(model_lasso)
向下滑動檢視結果▼
練習5
得到交叉驗證曲線和最小化平均交叉驗證誤差的lambda的值。
plot(cv_fit)
向下滑動檢視結果▼
練習6
使用上一個練習中的lambda的最小值,得到估計的β矩陣。注意,有些系數已經縮減為零。這表明哪些預測因子在解釋y的變化方面是重要的。
> fit$beta
向下滑動檢視結果▼
練習7
為了得到一個更簡明的模型,我們可以使用一個更高的λ值,即在最小值的一個标準誤差之内。用這個lambda值來得到β系數。注意,現在有更多的系數被縮減為零。
lambda.1se
beta
向下滑動檢視結果▼
練習8
如前所述,x2包含更多的預測因子。使用OLS,将y回歸到x2,并評估結果。
summary(ols2)
向下滑動檢視結果▼
練習9
對新模型重複練習-4。
lasso(x2, y)plot(model_lasso1)
向下滑動檢視結果▼
練習10
對新模型重複練習5和6,看看哪些系數被縮減為零。當有很多候選變量時,這是縮小重要預測變量的有效方法。
plot(cv_fit1)
beta