原文鏈接:http://tecdat.cn/?p=22721
原文出處:拓端數據部落公眾號
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)
-
for(i in 1:10){
-
plot(x[,i], y)
-
abline(lm(y~x[,i])
-
}
練習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
最受歡迎的見解
3.matlab中的偏最小二乘回歸(PLSR)和主成分回歸(PCR)
5.R語言回歸中的Hosmer-Lemeshow擬合優度檢驗