天天看點

拓端tecdat|R語言實作LASSO回歸——自己編寫LASSO回歸算法原文連結:http://tecdat.cn/?p=18840原文出處:拓端資料部落公衆号

原文連結:http://tecdat.cn/?p=18840

原文出處:拓端資料部落公衆号

這篇文章中我們可以編寫自己的代碼來計算套索(lasso)回歸,

拓端tecdat|R語言實作LASSO回歸——自己編寫LASSO回歸算法原文連結:http://tecdat.cn/?p=18840原文出處:拓端資料部落公衆号

我們必須定義門檻值函數

拓端tecdat|R語言實作LASSO回歸——自己編寫LASSO回歸算法原文連結:http://tecdat.cn/?p=18840原文出處:拓端資料部落公衆号

R函數是

thresh = function(x,a){
sign(x) * pmax(abs(x)-a,0)
}
           

要解決我們的優化問題,設定

拓端tecdat|R語言實作LASSO回歸——自己編寫LASSO回歸算法原文連結:http://tecdat.cn/?p=18840原文出處:拓端資料部落公衆号

這樣就可以等效地寫出優化問題

拓端tecdat|R語言實作LASSO回歸——自己編寫LASSO回歸算法原文連結:http://tecdat.cn/?p=18840原文出處:拓端資料部落公衆号

是以

拓端tecdat|R語言實作LASSO回歸——自己編寫LASSO回歸算法原文連結:http://tecdat.cn/?p=18840原文出處:拓端資料部落公衆号

一個得到

拓端tecdat|R語言實作LASSO回歸——自己編寫LASSO回歸算法原文連結:http://tecdat.cn/?p=18840原文出處:拓端資料部落公衆号
拓端tecdat|R語言實作LASSO回歸——自己編寫LASSO回歸算法原文連結:http://tecdat.cn/?p=18840原文出處:拓端資料部落公衆号

同樣,如果有權重ω=(ωi),則按坐标更新将變為

拓端tecdat|R語言實作LASSO回歸——自己編寫LASSO回歸算法原文連結:http://tecdat.cn/?p=18840原文出處:拓端資料部落公衆号

計算此分量下降的代碼是

lasso = function(X,y,beta,lambda,tol=1e-6,maxiter=1000){

beta0 = sum(y-X%*%beta /(length(y))
beta0list[1] = beta0
for (j in 1:maxiter){
for (k in 1:length beta)){
r = y - X[,-k]%*%beta[-k] - beta0*rep(1,length(y )
beta[k] = (1/sum(omega*X[,k]^2) *
threshog(t(omega*r)%*%X[,k ,length(y *lambda)
}
beta0 = sum(y-X%*%beta)/(length(y))


obj[j] = (1/2)*(1/length(y))*norm(omega*(y - X%*%beta - 
beta0*rep(1,length(y))),'F')^2 + lambda*sum(abs(beta))
if (norm(rbind(beta0list[j],betalist[[j]]) - 
rbind(beta0,beta),'F') ) { break } 
           

 例如,考慮以下(簡單)資料集,其中包含三個協變量

chicago = read.table("data.txt",header=TRUE,sep=";")
           

我們可以“标準化”

for(j in 1:3) X[,j] = (X[,j]-mean(X[,j]))/sd(X[,j])

y = (y-mean(y))/sd(y)
           

 要初始化算法,使用OLS估算

lm(y~0+.,)$coef
           

例如

lasso(X,y,beta_init,lambda=.001)
$obj
[1] 0.001014426 0.001008009 0.001009558 0.001011094 0.001011119 0.001011119
 
$beta
[,1]
X_1 0.0000000
X_2 0.3836087
X_3 -0.5026137
 
$intercept
[1] 2.060999e-16
           

 我們可以通過循環獲得标準的lasso圖

拓端tecdat|R語言實作LASSO回歸——自己編寫LASSO回歸算法原文連結:http://tecdat.cn/?p=18840原文出處:拓端資料部落公衆号
拓端tecdat|R語言實作LASSO回歸——自己編寫LASSO回歸算法原文連結:http://tecdat.cn/?p=18840原文出處:拓端資料部落公衆号

最受歡迎的見解

1.R語言多元Logistic邏輯回歸 應用案例

2.面闆平滑轉移回歸(PSTR)分析案例實作

3.matlab中的偏最小二乘回歸(PLSR)和主成分回歸(PCR)

4.R語言泊松Poisson回歸模型分析案例

5.R語言回歸中的Hosmer-Lemeshow拟合優度檢驗

6.r語言中對LASSO回歸,Ridge嶺回歸和Elastic Net模型實作

7.在R語言中實作Logistic邏輯回歸

8.python用線性回歸預測股票價格

9.R語言如何在生存分析與Cox回歸中計算IDI,NRI名額

繼續閱讀