Compute multiple kernels into a single meta-kernel

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

## Arguments

...

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

scale

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

method

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

knn

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.

rho

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

## Value

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.

## Details

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.

## References

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

## Author

Jerome Mariette <jerome.mariette@inrae.fr>

Nathalie Vialaneix <nathalie.vialaneix@inrae.fr>

compute.kernel, kernel.pca

## Examples

data(TARAoceans)

# 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")