cv.glment使用哪种模型进行拟合?为什么不同?使用R

cv.glment使用哪种模型进行拟合?为什么不同?使用R,r,warnings,logistic-regression,glmnet,lasso-regression,R,Warnings,Logistic Regression,Glmnet,Lasso Regression,我正在与R合作,使用带套索惩罚的二元逻辑构建预测模型 最初,该数据集由63147观察值和22变量组成,其中3%的观察值来自$G_1$,97%来自$G_2$。可以看出,这是非常不平衡的,因此我从$G_1$中选取了30%,从$G_2$中选取了70%,样本大小为5000 我试过拟合两个模型,使用R-software中的glm软件包的经典二元逻辑回归(BLR)和使用glmnet软件包的带套索惩罚的二元逻辑回归 我使用R中的scale函数缩放了数据,因为变量是使用不同的测量值测量的 安装BLR时发生错误,

我正在与
R
合作,使用带套索惩罚的二元逻辑构建预测模型

最初,该数据集由
63147
观察值和
22
变量组成,其中3%的观察值来自$G_1$,97%来自$G_2$。可以看出,这是非常不平衡的,因此我从$G_1$中选取了
30%
,从$G_2$中选取了
70%
,样本大小为
5000

我试过拟合两个模型,使用
R-software
中的
glm
软件包的经典二元逻辑回归(BLR)和使用
glmnet
软件包的带套索惩罚的二元逻辑回归

我使用
R
中的
scale
函数缩放了数据,因为变量是使用不同的测量值测量的

安装BLR时发生错误,如下所示:

> BLR.Model.SubPop <- train(y~., data = Train.Data.SubPop, method = "glm", family = "binomial")
There were 47 warnings (use warnings() to see them)
> warnings()
Warning messages:
1: glm.fit: algorithm did not converge
2: glm.fit: fitted probabilities numerically 0 or 1 occurred
3: glm.fit: algorithm did not converge
4: glm.fit: fitted probabilities numerically 0 or 1 occurred
5: glm.fit: algorithm did not converge
6: glm.fit: fitted probabilities numerically 0 or 1 occurred
7: glm.fit: algorithm did not converge)
当我尝试使用
lambda.min
lambda.1se
安装套索时,我遇到了以下警告

> lasso.model.1se <- glmnet(x, y, alpha = 1, family = "binomial", lambda = cv.lasso$lambda.1se)
Warning messages:
1: from glmnet Fortran code (error code -1); Convergence for 1th lambda value not reached after maxit=100000 iterations; solutions for larger lambdas returned 
2: In getcoef(fit, nvars, nx, vnames) :
  an empty model has been returned; probably a convergence issue

>lasso.model.1se默认情况下,glmnet使用lambda.1se,这是您的问题吗?@user2974951-我的问题是为什么会收到警告?当您尝试在CV之后构建模型时,似乎存在收敛问题。第一步是增加maxit,如果这不起作用,请更改优化器。@user2974951我试图更改maxit,但发出了相同的警告。我所做的是更改lambda值,现在它似乎正在工作,您是否了解为什么会发生这种情况?很难说,也许可以尝试检查模型在哪里失败,lambda的哪些值。它是否仅在lambda序列中的lambda值较低或较高时失败?如果是这样,就无法估计模型的这些价值。还是会发生在random Lambda上?在这种情况下,这将意味着麻烦。
> lasso.model.1se <- glmnet(x, y, alpha = 1, family = "binomial", lambda = cv.lasso$lambda.1se)
Warning messages:
1: from glmnet Fortran code (error code -1); Convergence for 1th lambda value not reached after maxit=100000 iterations; solutions for larger lambdas returned 
2: In getcoef(fit, nvars, nx, vnames) :
  an empty model has been returned; probably a convergence issue
LASSO.prob <- cv.lasso %>% predict(newx=x.test,type = "response")