Почему библиотека grpreg и библиотека gglasso в R дают разные результаты для группы LASSO? - PullRequest
0 голосов
/ 27 февраля 2020

Я пытался сделать выбор объектов без присмотра, используя LASSO (удаляя столбец класса). Набор данных включает в себя категориальные (факторные) и непрерывные (числовые c) переменные. Вот ссылка . Я построил матрицу проектирования, используя 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))

Если вы проверите coefs и coef_mat_group_lasso, вы поймете, что они не совпадают , Кроме того, лучшие значения лямбда не совпадают. Я не уверен, какой из них выбрать для выбора функции.

Есть идеи, как удалить перехват в функции grpreg()? intercept = FALSE не работает.

Любая помощь приветствуется. Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...