gpt4 book ai didi

r - 为什么 R 中的 grpreg 库和 gglasso 库对组 LASSO 给出不同的结果?

转载 作者:行者123 更新时间:2023-12-04 11:36:26 42 4
gpt4 key购买 nike

我一直在尝试使用 LASSO(通过删除类列)进行无监督的特征选择。数据集包括分类(因子)和连续(数字)变量。 Here is the link .我使用 model.matrix() 构建了一个设计矩阵它为分类变量的每个级别创建虚拟变量。

dataset <- read.xlsx("./hepatitis.data.xlsx", sheet = "hepatitis", na.strings = "")
names_df <- names(df)
formula_LASSO <- as.formula(paste("~ 0 +", paste(names_df, collapse = " + ")))
LASSO_df <- model.matrix(object = formula_LASSO, data = df, contrasts.arg = lapply(df[ ,sapply(df, is.factor)], contrasts, contrasts = FALSE ))

### Group LASSO using gglasso package
gglasso_group <- c(1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 15, 16, 17, 17)
fit <- gglasso(x = LASSO_df, y = y_k, group = gglasso_group, loss = "ls", intercept = FALSE, nlambda = 100)
# Cross validation
fit.cv <- cv.gglasso(x = LASSO_df, y = y_k, group = gglasso_group, nfolds = 10)
# Best lambda
best_lambda_fit.cv <- fit.cv$lambda.1se
# Final coefficients of variables
coefs = coef.gglasso(object = fit, s = best_lambda_fit.cv)

### Group LASSO with grpreg package
group_lasso <- grpreg(X = LASSO_df, y = y_k, group = gglasso_group, penalty = "grLasso")
plot(group_lasso)
cv_group_lasso <- cv.grpreg(X = LASSO_df, y = y_k, group = gglasso_group, penalty = "grLasso", se = "quick")
# Best lambda
best_lambda_group_lasso <- cv_group_lasso$lambda.min
coef_mat_group_lasso <- as.matrix(coef(cv_group_lasso))

如果您检查 coefscoef_mat_group_lasso ,你会发现它们是不一样的。此外,最好的 lambda 值也不相同。我不确定选择哪一个进行特征选择。

关于如何在 grpreg() 中删除拦截的任何想法功能? intercept = FALSE不管用。

任何帮助表示赞赏。提前致谢。

最佳答案

请引用gglasso papergrpreg paper .
不同的目标函数 .在 grpreg paper 的第 175 页上,作者执行了一个称为组标准化的步骤,该步骤通过将正交矩阵和非负对角矩阵右乘来对每个组内的特征矩阵进行归一化。在具有组标准化的组套索步骤之后,估计系数左乘相同的矩阵,以便我们获得原始线性模型的系数。然而,这样一来,群套索惩罚就与没有群标准化的惩罚不等价了。有关详细讨论,请参见第 175 页。
不同的算法 . grpreg使用块坐标下降,而 gglasso使用称为 groupwise-majorization-descent 的算法。当算法不同时,很自然地会看到小的数值差异。

关于r - 为什么 R 中的 grpreg 库和 gglasso 库对组 LASSO 给出不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60439187/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com