楼主: jqsn89
22289 14

[问答] 如何用R实现Lasso及adaptive lasso lambda的取值? [推广有奖]

  • 3关注
  • 1粉丝

已卖:87份资源

讲师

33%

还不是VIP/贵宾

-

威望
0
论坛币
19 个
通用积分
2.8351
学术水平
3 点
热心指数
3 点
信用等级
3 点
经验
321 点
帖子
169
精华
0
在线时间
549 小时
注册时间
2011-4-30
最后登录
2025-10-7

楼主
jqsn89 发表于 2014-3-7 23:54:42 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我想自编程序(暂时不考虑lars及magps包等)
y=xb+e

set.seed(123)
suijishu=runif(1000,-2,2)
zhu=matrix(suijishu,100,10)
x0=zhu[,1:4]
x=zhu[,1:10]
beta0=matrix(c(1,2,3,4),4,1)
y0=x0%*%beta0

ssL=function(beta) #自编Lasso 其中beta[11]为lambda
{tt=y0-x%*%beta[1:10]
s=1/100*log(t(tt)%*%tt)+beta[11]*sum(abs(beta[1:10]))}
stL=nlm(ssL,c(rep(1,11)))

请问:为什么这样吧得不到lasso解?
自编lasso该怎么编?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Adaptive Adaptiv daptive Lambda LASSO function matrix 如何 程序

沙发
jqsn89 发表于 2014-3-7 23:59:06
按理上面这个function可以求beta(beta[1:10],beta[11])的极值。可求出的解明显不对。
是否应该设定lambda=seq(0,1,by=0.1),然后按lambda的值逐个求出残差,最小残差对应的lambda即为lambda的取值?



被这个困扰很久了,求指点!

藤椅
ntsean 发表于 2014-3-8 14:15:58
lambda不能当作参数求极值, 否则你永远得到lambda=0
lambda应该是可以调的常数
需要通过比如cross validation来选取合适的lambda
有glmnet package为何自己求?而且lasso的算法比较特殊,nlm估计不行

板凳
楚韵荆风 学生认证  发表于 2014-3-8 14:45:11
楼上说的对,以minimize RSS作为criteria得到的optimal lambda永远都是0,Efron(2004)发表在Annals of Statistics上的LARS算法很快能求解这个问题,不知道你为何不用?现在关于求解LASSO的算法也有很多,楼上已经给出了很流行的一个package,还有lars,grpreg等等。现在流行的选lambda的准则有k-fold cross validation和BIC等。
共享是一种彼此的快乐

报纸
jqsn89 发表于 2014-3-8 17:04:57
楚韵荆风 发表于 2014-3-8 14:45
楼上说的对,以minimize RSS作为criteria得到的optimal lambda永远都是0,Efron(2004)发表在Annals of Stat ...
我实际上是要用lasso对混合线性模型进行变量选择,其中我对lasso方程中作了小小改变,所以混合线性模型的包lmmlasso以及lars等都不能用。
我原想着从定义上来用lasso做变量选择,如果成功了就自然而然能推广到混合模型。

地板
jqsn89 发表于 2014-3-8 18:16:49
ntsean 发表于 2014-3-8 14:15
lambda不能当作参数求极值, 否则你永远得到lambda=0
lambda应该是可以调的常数
需要通过比如cross valida ...
用glmnet求得lambda后,lasso和adaptive lasso是否都可用这个lambda求估计?
把lambda带入我上面编写的函数,用nlm可否求得lasso?

7
jqsn89 发表于 2014-3-8 18:17:37
楚韵荆风 发表于 2014-3-8 14:45
楼上说的对,以minimize RSS作为criteria得到的optimal lambda永远都是0,Efron(2004)发表在Annals of Stat ...
用glmnet求得lambda后,lasso和adaptive lasso是否都可用这个lambda求估计?
把lambda带入我上面编写的函数,用nlm可否求得lasso?

如果用BIC,是哪个包?

8
jqsn89 发表于 2014-3-8 19:23:54
ntsean 发表于 2014-3-8 14:15
lambda不能当作参数求极值, 否则你永远得到lambda=0
lambda应该是可以调的常数
需要通过比如cross valida ...
我用glmnet包求得lambda,并用nlm求得lasso估计,但adaptive lasso估计求不出来,是否不能用nlm?

9
楚韵荆风 学生认证  发表于 2014-3-9 10:13:20
glmnet和lars一样都可以得到整个path,glmnet里面用的是CV选择的最优lambda,本身可以直接求解lasso估计,BIC直接根据其definition formula编写一个小的function来计算。你用glmnet得到的最优lambda不能直接用于计算adaptive lasso估计,因为两者对应的最优lambda不一定相同,都可以按照CV或者BIC来选择。
共享是一种彼此的快乐

10
jqsn89 发表于 2014-3-9 16:04:15
楚韵荆风 发表于 2014-3-9 10:13
glmnet和lars一样都可以得到整个path,glmnet里面用的是CV选择的最优lambda,本身可以直接求解lasso估计,B ...
谢谢你。再问一下:
如果我想求混合线性模型的lasso估计,其中目标函数我改变了一下,beta、d、T为待估的。lmmlasso包求可混合线性模型的lasso估计,但现在我目标函数改了下,怎么办?
目标函数为Q=||y-x*beta-Z*T*d||^2+lambda(sum(bata)+sum(d))

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 08:06