R语言实现LASSO回归——自己编写LASSO回归算法
2021/5/12 14:25:11
本文主要是介绍R语言实现LASSO回归——自己编写LASSO回归算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
原文链接:http://tecdat.cn/?p=18840
这篇文章中我们可以编写自己的代码来计算套索(lasso)回归,
我们必须定义阈值函数
R函数是
thresh = function(x,a){ sign(x) * pmax(abs(x)-a,0) }
要解决我们的优化问题,设置
这样就可以等效地写出优化问题
因此
一个得到
同样,如果有权重ω=(ωi),则按坐标更新将变为
计算此分量下降的代码是
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图
最受欢迎的见解
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指标
这篇关于R语言实现LASSO回归——自己编写LASSO回归算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性
- 2024-05-29哪些无用敏捷指标正在破坏敏捷转型?
- 2024-05-29鸿蒙原生应用再新丁!新华社 入局鸿蒙
- 2024-05-29设计模式 之 迭代器模式(Iterator)