glmnet如何处理大量的非自动化参数?

时间:2017-09-08 13:00:38

标签: r glmnet

我试图用glmnet拟合泊松模型,我知道很多参数必须包含在模型中,然后才能实现。我将其惩罚因子设置为0.不幸的是,glmnet因收敛的参数数量很高而存在收敛问题。以下是glmnet手册中的一个示例,如果unpenalized参数的数量很高,算法就不会收敛。

    library(glmnet)
    N=500; p=300
    nzc=5
    x=matrix(rnorm(N*p),N,p)
    beta=rnorm(nzc)
    f = x[,seq(nzc)]%*%beta
    mu=exp(f)
    y=rpois(N,mu)


    pena=rep(0,ncol(x))
    pena[1:10]=1 # penalized only the first ten parameters

    fit=glmnet(x,y,family="poisson",penalty.factor=pena,alpha=0.9)
    # fit is not converging 

    pena=rep(0,ncol(x))
    pena[1:250]=1 # penalized the first 250 parameters

    fit=glmnet(x,y,family="poisson",penalty.factor=pena,alpha=0.9)
    # fit is converging 

我知道该模型对此示例没有意义,但至少我可以重现与我的数据相同的错误。看起来lambda_max设置为无穷大。这是否意味着算法无法找到最小的lambda_max,其中所有惩罚参数都为零?如何使用许多参数非自动化的模型?

非常感谢

0 个答案:

没有答案