全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
22175 14
2014-03-07
我想自编程序(暂时不考虑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该怎么编?
二维码

扫码加我 拉你入群

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

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

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



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

二维码

扫码加我 拉你入群

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

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

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等。
二维码

扫码加我 拉你入群

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

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

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做变量选择,如果成功了就自然而然能推广到混合模型。
二维码

扫码加我 拉你入群

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

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

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?
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群