Compute multiple kernels into a single meta-kernel

combine.kernels(..., scale = TRUE, 
                method = c("full-UMKL", "STATIS-UMKL", "sparse-UMKL"), knn = 5,
                rho = 20)



list of kernels (called 'blocks') computed on different datasets and measured on the same samples.


boleean. If scale = TRUE, each block is standardized to zero mean and unit variance and cosine normalization is performed on the kernel. Default: TRUE.


character. Which method should be used to compute the meta-kernel. Default: "full-UMKL".


integer. If method = "sparse-UMKL" or method = "full-UMKL", number of neighbors used to get a proxy of the local topology of the datasets from each kernel. Default: 5.


integer. Parameters for the augmented Lagrangian method. Default: 20.


combine.kernels returns an object of classes "kernel" and "metaKernel", a list that contains the following components:

  • kernel: the computed meta-kernel matrix;

  • X: the dataset from which the kernel has been computed, as given by the function compute.kernel. Can be NULL if a kernel matrix was passed to this function;

  • weights: a vector containing the weights used to combine the kernels.


The arguments method allows to specify the Unsupervised Multiple Kernel Learning (UMKL) method to use:

  • "STATIS-UMKL": combines input kernels into the best consensus of all kernels;

  • "full-UMKL": computes a kernel that minimizes the distortion between the meta-kernel and the k-NN graphs obtained from all input kernels;

  • "sparse-UMKL": a sparse variant of the "full-UMKL" approach.


Mariette J. and Villa-Vialaneix N. (2018). Unsupervised multiple kernel learning for heterogeneous data integration . Bioinformatics, 34(6), 1009-1015.


Jerome Mariette <>

Nathalie Vialaneix <>



# compute one kernel per dataset
phychem.kernel <- compute.kernel(TARAoceans$phychem, kernel.func = "linear")
pro.phylo.kernel <- compute.kernel(TARAoceans$pro.phylo, kernel.func = "abundance")
pro.NOGs.kernel <- compute.kernel(TARAoceans$pro.NOGs, kernel.func = "abundance")

# compute the meta kernel
meta.kernel <- combine.kernels(phychem = phychem.kernel,
                               pro.phylo = pro.phylo.kernel,
                               pro.NOGs = pro.NOGs.kernel, 
                               method = "full-UMKL")