Algorithm Principles in MOFSR
Zaoqu Liu
2026-01-29
Source:vignettes/algorithm-principles.Rmd
algorithm-principles.RmdOverview
MOFSR implements 15 state-of-the-art multi-omics clustering algorithms. This vignette provides theoretical background and mathematical foundations for each method.
Algorithm Classification
| Paradigm | Algorithms | Key Idea |
|---|---|---|
| Network Fusion | SNF, wSNF, CIMLR, NEMO | Construct similarity networks and fuse at network level |
| Matrix Factorization | IntNMF, LRAcluster | Joint non-negative or low-rank decomposition |
| Factor Analysis | MOFA, MCIA | Latent factor extraction across views |
| Canonical Correlation | RGCCA, SGCCA, CPCA | Maximize correlations between views |
| Bayesian | iClusterBayes, BCC | Probabilistic joint modeling |
| Ensemble | PINSPlus, Late Fusion | Combine view-specific clusterings |
Network-Based Methods
Similarity Network Fusion (SNF)
Reference: Wang et al., Nature Methods, 2014
SNF constructs patient similarity networks for each omics type and iteratively fuses them into a unified network.
Mathematical Framework:
- Affinity Matrix Construction: For data matrix of view :
where is the Euclidean distance between samples and , is the set of nearest neighbors, and .
- Network Normalization: Construct transition probability matrix:
- Iterative Fusion: Update networks until convergence:
where is the normalized kernel matrix.
library(MOFSR)
set.seed(42)
# Generate sample data
n <- 50
data_list <- list(
omics1 = matrix(rnorm(n * 100), 100, n),
omics2 = matrix(rnorm(n * 80), 80, n)
)
colnames(data_list$omics1) <- colnames(data_list$omics2) <- paste0("S", 1:n)
# Step 1: Compute affinity matrices
W1 <- snf_affinity_matrix(data_list$omics1, K = 10)
W2 <- snf_affinity_matrix(data_list$omics2, K = 10)
# Step 2: Fuse networks
W_fused <- snf_fuse(list(W1, W2), K = 10, t = 20)
# Step 3: Spectral clustering
clusters <- spectral_clustering(W_fused, n_clusters = 3)
table(clusters)CIMLR (Cancer Integration via Multi-kernel Learning)
Reference: Ramazzotti et al., Nature Communications, 2018
CIMLR extends SNF with multiple kernel learning to automatically learn optimal kernel combinations.
Key Innovation: Instead of a single Gaussian kernel, CIMLR uses:
where are Gaussian kernels with different bandwidths and are learned weights.
Matrix Factorization Methods
Integrative Non-negative Matrix Factorization (IntNMF)
Reference: Chalise & Fridley, PLoS ONE, 2017
IntNMF simultaneously factorizes multiple non-negative data matrices while sharing a common factor matrix.
Objective Function:
subject to ,
where: - : Data matrix for view - : Shared sample factor matrix - : View-specific feature factor matrix
Update Rules (multiplicative):
# IntNMF requires non-negative data
pos_data <- lapply(data_list, function(x) abs(x))
# Run IntNMF
result_intnmf <- intnmf_cluster(pos_data, n_clusters = 3, max_iter = 100)
table(result_intnmf$cluster)Factor Analysis Methods
Multi-Omics Factor Analysis (MOFA)
MOFSR implements a simplified variational inference approach inspired by MOFA.
Generative Model:
where: - : Latent factors - : View-specific loadings - : Gaussian noise
Prior Structure (ARD - Automatic Relevance Determination):
This allows automatic selection of relevant factors per view.
# Run factor analysis
result_mofa <- multi_view_factor_analysis(data_list, n_factors = 5, max_iter = 100)
# Examine variance explained
cat("Variance explained per factor:\n")
print(round(result_mofa$variance_explained, 3))Canonical Correlation Methods
RGCCA (Regularized Generalized CCA)
Reference: Tenenhaus & Tenenhaus, Psychometrika, 2011
RGCCA finds latent components that maximize the sum of correlations between connected blocks.
Optimization Problem:
subject to
where defines the design matrix (which blocks are connected) and is the regularization parameter.
Bayesian Methods
Ensemble Methods
PINSPlus (Perturbation Clustering)
Reference: Nguyen et al., Genome Research, 2017
PINSPlus uses perturbation-based subsampling to identify stable clusters.
Algorithm:
- Subsample data with noise perturbation
- Cluster each subsample
- Build connectivity matrix
- Final clustering from connectivity matrix
# Run PINSPlus
result_pins <- run_pinsplus(data_list, n_clusters = 3, n_reps = 20)
head(result_pins)Algorithm Selection Guide
| Scenario | Recommended Algorithms |
|---|---|
| High-dimensional, sparse data | CIMLR, SGCCA |
| Missing data | MOFA, iClusterBayes |
| Large sample size | SNF, IntNMF |
| Need feature selection | CIMLR, SGCCA |
| Interpretable factors | MOFA, MCIA |
| Robust to noise | PINSPlus, BCC |
References
- Wang B, et al. (2014). Similarity network fusion for aggregating data types on a genomic scale. Nature Methods, 11(3):333-337.
- Ramazzotti D, et al. (2018). Multi-omic tumor data reveal diversity of molecular mechanisms underlying survival. Nature Communications, 9(1):4453.
- Mo Q, et al. (2018). A fully Bayesian latent variable model for integrative clustering analysis of multi-type omics data. Biostatistics, 19(1):71-86.
- Chalise P, Fridley BL (2017). Integrative clustering of multi-level ’omic data based on non-negative matrix factorization algorithm. PLoS ONE, 12(5):e0176278.
- Tenenhaus A, Tenenhaus M (2011). Regularized generalized canonical correlation analysis. Psychometrika, 76(2):257-284.