@@ -330,7 +330,7 @@ Y0_toy <- matrix(runif(12, 0, 1), 4, 3)
330330omega_default = 0.5
331331# if ( ! exists("ini_default") )
332332lropts=c('armijo', 'armijo_aggressive', 'exponential', 'linear', 'random', 'adaptive', 'momentum_boost', 'entropy', 'poly_decay', 'bayes')
333- ini_default = 'bayes ' #
333+ ini_default = 'armijo ' #
334334optype='asgd' # for torch backend
335335def_ret = "soft_polar"
336336nsa_default <- function(Y0, w = omega_default,
@@ -344,7 +344,7 @@ nsa_default <- function(Y0, w = omega_default,
344344 verbose = verbose,
345345 seed = 42,
346346 apply_nonneg = TRUE,
347- tol = 1e-6 ,
347+ tol = 1e-8 ,
348348 window_size=10,
349349 fidelity_type = "scale_invariant", #"symmetric",
350350 orth_type = "scale_invariant",
@@ -573,7 +573,7 @@ X0 = generate_synth_data( p, k, corrval=0.35, noise=0.05, sparse_prob=0.0, inclu
573573###
574574w_seq <- c( 0.005, 0.05, 0.1, 0.2, 0.5 )
575575w_seq <- c( 0.001, 0.005, 0.01, 0.05, 0.25 )
576- w_seq <- c( 0.001 , 0.25, 0.5, 0.75, 0.9 )
576+ w_seq <- c( 0.1 , 0.25, 0.5, 0.75, 0.9 )
577577mytit = paste0("w = ", round(w_seq,3))
578578mats <- list()
579579convergeplots <- list()
@@ -603,10 +603,9 @@ for(i in seq_along(mats)) {
603603}
604604grid.arrange(grobs = lapply(swplots, function(x) x$gtable), ncol = 3)
605605if ( length(convergeplots) >=4 ) {
606- grid.arrange(grobs=convergeplots[c(1,2,3,5)],
607- top='Convergence Plots for Different w Values', ncol=2 )
606+ grid.arrange(grobs=convergeplots[c(1,2,3,5)], top='Convergence Plots for Different w Values', ncol=2 )
608607}
609-
608+ #########
610609# darkk #
611610####################
612611```
@@ -1048,6 +1047,7 @@ golub_scaled <- scale(data.matrix(golub_df))
10481047
10491048``` {r golub_sparse_pca_analysis, echo=FALSE, fig.width=5, message=FALSE, warning=FALSE,cache=FALSE}
10501049
1050+
10511051set.seed(1)
10521052myk <- 3
10531053mxit <- 100
@@ -1057,32 +1057,35 @@ golub_scaled_ss <- golub_scaled[, ss]
10571057## --- PCA Variants ------------------------------------------------------------
10581058pca_std <- prcomp(golub_scaled_ss, rank. = myk)
10591059proj_std <- pca_std$x
1060-
1061- res_basic <- nsa_flow_pca(golub_scaled_ss, myk,lambda = 0.1, alpha = 0.01 ,
1060+ myalph=0.1
1061+ res_basic <- nsa_flow_pca(golub_scaled_ss, myk, lambda = 0.1, alpha = myalph ,
10621062 max_iter = mxit, proximal_type = "basic", tol = 1e-5,
1063- nsa_w = omega_default, verbose = F )
1064- res_nns <- nsa_flow_pca(golub_scaled_ss, myk, lambda = 0.1, alpha = 0.01 ,
1063+ nsa_w = omega_default, verbose = TRUE )
1064+ res_nns <- nsa_flow_pca(golub_scaled_ss, myk, lambda = 0.1, alpha = myalph ,
10651065 max_iter = mxit, proximal_type = "nsa_flow", tol = 1e-5,
1066- nsa_w = omega_default, nsa_flow_fn = nsa_default, verbose = FALSE )
1066+ nsa_w = omega_default, nsa_flow_fn = nsa_default, verbose = TRUE )
10671067## --- Core Metrics ------------------------------------------------------------
10681068metrics_pca_g <- compute_core_metrics(pca_std$rotation, golub_scaled_ss)
10691069metrics_basic_g <- compute_core_metrics(res_basic$Y, golub_scaled_ss)
10701070metrics_nns_g <- compute_core_metrics(res_nns$Y, golub_scaled_ss)
1071+ proj_basic <- golub_scaled_ss %*% res_basic$Y
1072+ proj_nns <- golub_scaled_ss %*% res_nns$Y
10711073
10721074## --- Classification Performance ---------------------------------------------
10731075cv_acc <- function(proj, labels) {
10741076 colnames(proj) <- paste0("V", seq_len(ncol(proj)))
10751077 ctrl <- trainControl(method = "repeatedcv", number = 5, repeats = 50)
1076- model <- train(proj, labels, method = "knn",
1077- trControl = ctrl, tuneGrid = data.frame(k = 3))
1078+ tune_grid <- expand.grid(mtry = seq(1, ncol(proj), length.out = 5)) # Example: tune mtry over 5 values
1079+ model <- train(proj, labels, method = "rf",
1080+ trControl = ctrl, tuneGrid = tune_grid)
10781081 tibble(Accuracy = model$results$Accuracy, AccuracySD = model$results$AccuracySD)
10791082}
1080-
1081- proj_basic <- golub_scaled_ss %*% res_basic$Y
1082- proj_nns <- golub_scaled_ss %*% res_nns$Y
10831083acc_std <- cv_acc(proj_std, labels)
10841084acc_basic <- cv_acc(proj_basic, labels)
10851085acc_nns <- cv_acc(proj_nns, labels)
1086+ # acc_std
1087+ # acc_basic
1088+ # acc_nns
10861089
10871090## --- Integrated Results Table -----------------------------------------------
10881091golub_metrics <- tibble(
@@ -1093,6 +1096,7 @@ golub_metrics <- tibble(
10931096 CV_Accuracy = c(acc_std$Accuracy, acc_basic$Accuracy, acc_nns$Accuracy),
10941097 CV_Accuracy_SD = c(acc_std$AccuracySD, acc_basic$AccuracySD, acc_nns$AccuracySD)
10951098)
1099+
10961100#####
10971101```
10981102
0 commit comments