单细胞RNA降维之UMAP

UMAP

首先,UMAP是一种非线性降维的算法,相对于t-SNE,UMAP算法更加快速
该方法的原理是利用流形学和投影技术,达到降维目的
首先计算高维空间中的点之间的距离,将它们投影到低维空间,并计算该低维空间中的点之间的距离。然后,它使用随机梯度下降来最小化这些距离之间的差异。



比方说,图中两个黑点,若考虑直线距离,那么这两个黑点之间距离很相近
如果放到流形学上,那么这两个点距离就得沿着图中曲线绕两圈

那么UMAP先计算高维的流形结构特征,将其中各个点之间的位置关系进行确定,从而构造高维的数据分布结构。然后将它们投影到低维空间,然后根据高维空间点与点之间的相对关系,提取特征值,在低维空间中重新构造这种距离关系,从而达到聚类以及特征提取的效果

R

在单细胞的R包Seurat中自带UMAP这个函数
我们这次介绍umap这个R包

install.packages("umap")
library(umap)

iris.umap = umap(iris[,1:4])#进行降维

# display object summary
iris.umap
head(iris.umap$layout)#获取数据矩阵

# create a dataset with structure likeiris, but with perturbation
iris.perturbed = iris[,1:4] +matrix(rnorm(nrow(iris)*4, 0, 0.1), ncol=4)

# project perturbed dataset
perturbed.embedding = predict(iris.umap,iris.perturbed)#做预测

par(mfrow=c(1,2))
# output is a matrix with embeddingcoordinates
plot(iris.umap$layout)

plot(perturbed.embedding)
输入数据

这是降维的聚类图


iris.umap$layout是降维的数值作为新的坐标,画在二维图上

iris.umap$layout

参考:https://cloud.tencent.com/developer/article/1476996

https://www.jianshu.com/p/fd1ad6a514ee

你可能感兴趣的:(单细胞RNA降维之UMAP)