glmnet逻辑回归可以直接处理因子(分类)变量而不需要虚拟变量吗?

机器算法验证 r 物流 分类数据 套索 网络
2022-02-03 09:33:54

我正在使用 LASSO 方法在 R 中构建逻辑回归,该方法具有cv.glmnet选择lambdaglmnet用于最终模型的功能。

我已经知道自动模型选择的所有缺点,但无论如何我都需要这样做。

我的问题是我需要在模型中包含因子(分类)变量,有没有办法在不创建大量虚拟变量的情况下做到这一点?这个变量几乎都是字符串而不是数字。

1个回答

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。