P*****6 发帖数: 273 | 1 lasso 的使用本版讨论了不少,受益不浅,不过实际应用中还是遇到一个问题,不知高
手如何解决
我的基本问题跟前一段一位老兄相似,就是run不同次结果不同
我的数据只有50个左右,variable 却有400多个
我可以理解可能有多个参数coefficent类似,不过有时参数只有1-2个(可能是最
dominant的那1-2个),有时却有10几个,差别太大,结果中一般来说参数只有1-2个的
CV.err大
另一个解释是,听说glmnet 用coordinate descent 找lamda,可能不是每次都能找到
CV.err最小的
我的问题是:
1。如果我多run几次,选择CV最小的lamda建立的model 业界是否可以接受?我这个
model只是筛选,以后还要验证,所以多引几个variable在model中没有关系
2。使用glmnet有什么技巧可以使建出的model的重复性好些,比如选出的variable都在
10个左右。CV.err也更接近 |
a***g 发帖数: 2761 | 2 我不是很清楚这个问题数据是什么样的
不过望文生义觉得你可以考虑一下adaptive lasso
这个就是相当于把lasso对各个变量都是用一个阀值变成了使用不同的阀值,理论上说
剃刀性很强,能够找出make sence的变量 |
w**********y 发帖数: 1691 | 3 我的问题是:
1。如果我多run几次,选择CV最小的lamda建立的model 业界是否可以接受?我这个
model只是筛选,以后还要验证,所以多引几个variable在model中没有关系
--一般不推荐用min而是用lambda.1se吧?特别你的目的只是筛选..
2。使用glmnet有什么技巧可以使建出的model的重复性好些,比如选出的variable都在
10个左右。CV.err也更接近 |
a***g 发帖数: 2761 | 4
这个比较不好说,像他这个情况,画solution path,拿眼睛看也许真的更靠谱,以前
谁就这么调侃的
【在 w**********y 的大作中提到】 : 我的问题是: : 1。如果我多run几次,选择CV最小的lamda建立的model 业界是否可以接受?我这个 : model只是筛选,以后还要验证,所以多引几个variable在model中没有关系 : --一般不推荐用min而是用lambda.1se吧?特别你的目的只是筛选.. : 2。使用glmnet有什么技巧可以使建出的model的重复性好些,比如选出的variable都在 : 10个左右。CV.err也更接近
|
P*****6 发帖数: 273 | 5 多谢指点,我没有注意到lambda.1se 和 lambda.min 的差别,我是用的lambda.min.
不过lambda.1se 对我可能不是很适用。因为我的solution path 图上lambda通常有两
个极值,一个倾向于选取1-2个参数。一个倾向于选择15个左右的参数。我试了一下,
lambda.1se 选取较大的lambda,最后就剩intercept了
不过我说多run几次选CV.err最小的model,到不是指lambda.min. 我的意思是比如run
5次lasso
每一次Min(cv.fit$CVM) 分别如下,2.75, 2.7,2.6, 2.62 , 2.65, 2.49
Min(CVM) 是2.75 的只有1-2个predictor
而Min(CVM)是2.49 通常有14个左右的perdictors。 我可不可以选取这个model?这
种选出的参数会不会随机成分过高,没有后续分析的价值?
我个人感觉是可以的,因为coordinate descent 在选取极值上有随机性,我多run几次
相当于尝试多个路径。最终的最低点是一个客观存在的点,不是我随机加入的。至于上
面CVM这点差别,是否justify 加入更多的predictors,我不是很清楚。
【在 w**********y 的大作中提到】 : 我的问题是: : 1。如果我多run几次,选择CV最小的lamda建立的model 业界是否可以接受?我这个 : model只是筛选,以后还要验证,所以多引几个variable在model中没有关系 : --一般不推荐用min而是用lambda.1se吧?特别你的目的只是筛选.. : 2。使用glmnet有什么技巧可以使建出的model的重复性好些,比如选出的variable都在 : 10个左右。CV.err也更接近
|
a***g 发帖数: 2761 | 6 假如你min可以选出来15个左右的参数,接着再验证,再然后用aic之类的看看
反正又不是写论文,公司用的不必很fancy管用就行,土法上马也可以吧
呵呵
run
【在 P*****6 的大作中提到】 : 多谢指点,我没有注意到lambda.1se 和 lambda.min 的差别,我是用的lambda.min. : 不过lambda.1se 对我可能不是很适用。因为我的solution path 图上lambda通常有两 : 个极值,一个倾向于选取1-2个参数。一个倾向于选择15个左右的参数。我试了一下, : lambda.1se 选取较大的lambda,最后就剩intercept了 : 不过我说多run几次选CV.err最小的model,到不是指lambda.min. 我的意思是比如run : 5次lasso : 每一次Min(cv.fit$CVM) 分别如下,2.75, 2.7,2.6, 2.62 , 2.65, 2.49 : Min(CVM) 是2.75 的只有1-2个predictor : 而Min(CVM)是2.49 通常有14个左右的perdictors。 我可不可以选取这个model?这 : 种选出的参数会不会随机成分过高,没有后续分析的价值?
|
w**o 发帖数: 15 | 7 这个随机性主要是cv产生的吧,1se rule在低noise的时候才好用
高noise的时候,有一两个fold的error很大,cv curve就会增长很快,导致选的lambda
太大
你这样做可以,不过还要看一下solution path是否合理,不会过于rough
run
【在 P*****6 的大作中提到】 : 多谢指点,我没有注意到lambda.1se 和 lambda.min 的差别,我是用的lambda.min. : 不过lambda.1se 对我可能不是很适用。因为我的solution path 图上lambda通常有两 : 个极值,一个倾向于选取1-2个参数。一个倾向于选择15个左右的参数。我试了一下, : lambda.1se 选取较大的lambda,最后就剩intercept了 : 不过我说多run几次选CV.err最小的model,到不是指lambda.min. 我的意思是比如run : 5次lasso : 每一次Min(cv.fit$CVM) 分别如下,2.75, 2.7,2.6, 2.62 , 2.65, 2.49 : Min(CVM) 是2.75 的只有1-2个predictor : 而Min(CVM)是2.49 通常有14个左右的perdictors。 我可不可以选取这个model?这 : 种选出的参数会不会随机成分过高,没有后续分析的价值?
|
N******n 发帖数: 3003 | 8 这个solution path 是用glmnet做的吗?
lambda
【在 w**o 的大作中提到】 : 这个随机性主要是cv产生的吧,1se rule在低noise的时候才好用 : 高noise的时候,有一两个fold的error很大,cv curve就会增长很快,导致选的lambda : 太大 : 你这样做可以,不过还要看一下solution path是否合理,不会过于rough : : : run
|