我正在使用 LASSO 方法在 R 中构建逻辑回归,该方法具有cv.glmnet
选择lambda
和glmnet
用于最终模型的功能。
我已经知道自动模型选择的所有缺点,但无论如何我都需要这样做。
我的问题是我需要在模型中包含因子(分类)变量,有没有办法在不创建大量虚拟变量的情况下做到这一点?这个变量几乎都是字符串而不是数字。
我正在使用 LASSO 方法在 R 中构建逻辑回归,该方法具有cv.glmnet
选择lambda
和glmnet
用于最终模型的功能。
我已经知道自动模型选择的所有缺点,但无论如何我都需要这样做。
我的问题是我需要在模型中包含因子(分类)变量,有没有办法在不创建大量虚拟变量的情况下做到这一点?这个变量几乎都是字符串而不是数字。
glmnet 不能直接取因子,您需要将因子变量转换为虚拟变量。使用 model.matrix 只是一个简单的步骤,例如:
x_train <- model.matrix( ~ .-1, train[,features])
lm = cv.glmnet(x=x_train,y = as.factor(train$y), intercept=FALSE ,family = "binomial", alpha=1, nfolds=7)
best_lambda <- lm$lambda[which.min(lm$cvm)]
alpha=1 将构建一个 LASSO。