I wrote this thesis to answer a practical question: when you have thousands of gene expression and methylation measurements per patient, how do you pick the small set of features that actually matter, and how do you know they will show up again on new data? The thesis proposes a permutation-assisted group lasso, and I validated it on real TCGA breast cancer data.
The bottom line
0.680
Selection stability (Jaccard) of the final model, up from 0.229
0.948
Held-out AUC predicting ER status (mean over 5 data splits)
~123
Features selected, down from 236, with better stability and accuracy
5/5
Splits in which the known ER drivers (ESR1, PGR, FOXA1, GATA3) were all recovered, and in which the PAM50 and Oncotype DX signatures were significantly enriched
What I did
- Built the method. Group lasso over correlated feature groups, with row-permuted "control" copies of each feature as decoys. A feature has to beat its own permuted decoys, repeatedly, to get selected. Early fusion (one joint model) and late fusion (per-modality models) variants, with adaptive penalty weights.
- Checked it in simulation. Across 18 simulation scenarios (Table 4.1), the adaptive early-fusion method recovered true features far better than LASSO: mean F1 0.81 and mean sensitivity 0.74, versus LASSO mean F1 0.20 and mean sensitivity 0.16.
- Tried it on real TCGA-BRCA data, and found a bug in the thesis. The thesis used SKAT for the adaptive weights. SKAT is a rare-variant test built for genotype counts, and on continuous expression data it silently returned p=1 for every group, so the "adaptive" penalty carried no signal at all. I replaced it with univariate-signal weights and a false-discovery-rate targeted lambda rule, then kept everything else.
- Ran a head-to-head benchmark. On ER status by IHC (n=737, RNA-seq plus methylation, 5 fresh train/test splits per arm), the fixed adaptive models beat plain LASSO and standard non-adaptive group lasso on every biological measure.
- Fixed the stability problem. The adaptive models were accurate but unstable across data splits (Jaccard 0.23). Three stabilization stages, consensus groups, shrunk weights, and stability selection, took early-fusion adaptive to Jaccard 0.68 with AUC 0.948.
One honest lesson from this work: stability alone must not pick the winner. The late-fusion adaptive model also got more stable, but the stabilized version lost the known ER driver genes in most splits. I report that failure alongside the success, because it is the more instructive result.
Where to go next
- Background: the problem, the data, and what counts as ground truth.
- Methods: how permutation-assisted selection works, early vs late fusion, the SKAT correction, and the stabilization stages.
- TCGA-BRCA results: the benchmark numbers, the interactive prediction-vs-reproducibility plot, and the secondary endpoint.
- Reproducibility: the frozen scripts behind every reported table, and how to rerun them.
Analysis code and notes live in the GitHub repo. The longer methods note is REPORT.md.