Group lasso, briefly
Group lasso is the right tool here because genes travel in packs. A plain lasso picks one gene out of a correlated pathway and drops the rest, which makes the selected set jump around between data splits. Group lasso penalizes whole groups together, so a pathway enters or leaves as a unit. Groups come from hierarchical clustering of the feature correlation matrix. That choice is worth defending: it matches how the biology is organized, and it is what makes the selection stable enough to interpret.
The permutation assist
The thesis adds a decoy mechanism. For each feature, add a row-permuted copy of it, a "control" that keeps the marginal distribution but breaks the link to the outcome. Fit the group lasso on the doubled matrix, originals plus controls. A real feature that the model cannot distinguish from its own permuted decoy is not worth keeping.
Two details matter:
- Lambda rule. The thesis picked the lambda maximizing the difference between original and control discoveries (λ* = argmax(#nonzero X − #nonzero X̃)). In later fixes I replaced this with a false-discovery cap: (1 + number of controls selected) / max(1, number of originals selected) ≤ 0.10. That is a knockoff-plus style rule, heuristic here, not a formal guarantee, and not what the thesis did.
- Frequency cutoff. Repeat over permutations and keep features selected in at least half of them. The frequency is the selection statistic.
Early fusion vs late fusion
Early fusion stacks the modalities into one feature matrix before selection: one joint model. Late fusion runs the selection within each modality and combines afterwards. Early fusion lets the model trade off expression and methylation directly; late fusion is safer when one modality dominates. I ran both and compared honestly.
Standard vs adaptive weights
The thesis has two weighting schemes. Standard weights rank groups by internal correlation and are outcome-blind. Adaptive weights shrink the penalty for groups with strong univariate association to the outcome, so promising groups get selected more easily.
Stabilizing the selection
Even fixed, the adaptive models were accurate but unstable: mean pairwise Jaccard across data splits was 0.23, meaning two runs on different splits agreed on less than a quarter of the selected features. Three stages fixed most of that:
- S1, consensus groups. Compute bootstrap-averaged absolute Spearman correlations on the full cohort (unsupervised, no labels), cluster once, and fix those groups for all runs and permutations. This removes grouping jitter between runs.
- S2, shrunk weights. Soft-threshold the univariate z-statistics at |z| = 1 before building adaptive weights, so weak noisy signals stop shaking the group penalties.
- S3, stability selection. 30 complementary-pair subsamples, 15 inner permutations each with an inner vote cutoff of 0.4, keep features present in at least 60% of subsamples. This costs about 5 to 6 times the compute per run; S1 and S2 are free.
Why this is the right fix: the diagnostic showed that within one fixed data split the model is perfectly reproducible (Jaccard 1.00 across seeds), so the instability was genuine sampling variation, not algorithmic jitter. Fixing the groups and hardening the weights attacks the real source.