降维
降维顾名思义就是把数据或特征的维数降低,一般分为线性降维和非线性降维,比较典型的如下:
- 线性降维:PCA(Principal Components Analysis)、LDA(Linear Discriminant Analysis)、MDS(Classical Multidimensional Scaling),其中PCA我们使用的最多。
- 非线性降维:Isomap(Isometric Mapping)、LLE(Locally Linear Embedding)、LE(Laplacian Eigenmaps) 等。非线性降维中用到的方法大多属于流形学习方法,UMAP就属于流形学习,而tSNE不是。
流形学习
流形学习(Manifold Learning)听名字就觉得非常深奥,涉及微分流行和黎曼几何等数学知识。当然,想要了解流形学习并不需要我们一行一行的去推导公式,通过简单的例子也能够有一个直观的认识。
简单来说,地球表面就是一个典型的流形,在流形上计算距离与欧式空间有所区别。例如,计算南极与北极点之间的距离不是从地心穿一个洞计算直线距离,而是沿着地球表面寻找一条最短路径,这样的一条路径称为测地线。如下面所示的三幅图
在实际应用中,真实测地距离较难获得,一般可以通过构造kNN图,在kNN图中寻找最短路径距离作为真实测地线距离的近似。
tSNE
tSNE是一种《比 较 简 单》的机器学习算法,可以用以下四个公式表示
(1)定义了高维空间中任意两点之间观测距离的高斯概率,满足对称性规则。Eq。
(2)引入了困惑的概念作为一个约束,确定最优σ为每个样本。
(3)声明了低维嵌入中点对之间距离的学生t分布。t分布是为了克服嵌入低维时的拥挤问题。
(4)给出了K-L散度损失函数,将高维概率投影到低维概率上,并给出了梯度下降优化中使用的梯度的解析形式。
tSNE的缺点
- 在scRNAseq中,tSNE并不能很好地扩展增加的样本量。添加用FItSNE来加速它会导致大量的内存消耗,使得在计算机集群之外无法进行分析。
- tSNE没有保留全局数据结构,这意味着只有在集群距离内才有意义,而集群之间的相似性并不能保证,因此使用tSNE作为集群不是一个很好的主意。
- tSNE实际上只能嵌入到2维或3维中,即仅用于可视化目的。这对于更现代的FItSNE算法来说仍然是一个问题。
- tSNE执行从高维到低维的非参数映射,这意味着它不利用驱动观察到的集群的特性(也称为PCA维度)。
- tSNE不能直接处理高维数据,在将其插入tSNE之前,通常使用自动编码器或PCA执行预降维。
- tSNE的计算占用了大量的内存,在使用大型perplexity超参数时,这一点变得尤为明显,因为k近邻的初始步长(就像Barnes-Hut过程)变得低效,而且对时间减少也很重要。更现代的FItSNE算法也不能解决这个问题。
tSNE参数的意义:
- seed.use:我们知道计算机产生的随机数都是伪随机数,是利用算法产生的一系列数。因此,需要给函数一个随机值作为初始值,以此基准不断迭代得到一系列随机数。这个初始值就叫做随机种子。
-
tsne.method :Select the method to use to compute the tSNE. Available methods are
tSNE和FIt-SNE。
UMAP
UMAP ,全称Uniform Manifold Approximation and Projection,统一流形逼近与投影,是基于曼和几何代数据的理论框架结构构建的。在处理大数据集时,UMAP优势明显,运行速度块,占用内存小。Etienne Becht等人2019年在Nature Biotechnology上发表的一篇文章将其应用在生物学数据上并分析了UMAP在处理单细胞数据方面的应用和优势。
UMAP应该说是目前最好的降维算法了,现在的10X单细胞的降维图都选择了UMAP,因为其能最大程度的保留原始数据的特征同时降低特征维数。
UMAP与tSNE的区别
- UMAP在高维中使用指数概率分布,但不一定是像tSNE那样的欧氏距离,而是任何距离都可以代入。另外,概率没有归一化。
- UMAP使用二元交叉熵(CE)作为成本函数,而不是像tSNE那样使用K-L散度。
- UMAP使用图拉普拉斯变换分配初始的低维坐标,与tSNE使用的随机正常初始化形成对比。
- UMAP使用随机梯度下降(SGD)代替常规梯度下降(GD),这既加快了计算速度,又减少了内存消耗。
tSNE和UMAP基本上都包含两个步骤:
- 建立一个图在高维度的带宽和计算指数概率,σ,使用二进制搜索和固定数量的最近的邻居需要考虑。
- 通过梯度下降优化低维表示。第二步是算法的瓶颈,它是连续的,不能是多线程的。由于tSNE和UMAP都执行第二步,所以并不清楚为什么UMAP比tSNE更有效。
UMAP在处理大数据时具有独特的优势
除了运行速度快,内存占用小等特点,UMAP在处理细胞学数据时还有一个大的优势,就是可以反映细胞群体之间分化的连续性和组织性。对同一组数据分别进行tSNE和UMAP降维,该数据为多达30万个从8种不同组织富集得到的T细胞和NK细胞的样本,并使用Phenograph聚类把细胞分为6大类,每种颜色代表一种细胞。从图中可以看出,UMAP和tSNE都可以较好地把不同类别的细胞分开。但tSNE倾向于把相同细胞群划分为更多的群,如图显示,黑色圈中CD8 T细胞,在tSNE结果中,群数更多,距离更远。
UMAP参数
- 最重要的参数是 n_neighbors ,近似最近邻居数。它有效地控制了UMAP局部结构与全局结构的平衡,数据较小时,UMAP会更加关注局部结构,数据较大时,UMAP会趋向于代表大图结构,丢掉一些细节。
- 第二个参数是 min_dist,点之间的最小距离。此参数控制UMAP聚集在一起的紧密程度,数据较小时,会更紧密。较大的值会更松散,而将重点放在保留广泛的拓扑结构上。
参考
tSNE的详细算法:https://www.jianshu.com/p/0f93e3a7ae29
UMAP的详细算法:https://www.jianshu.com/p/812bb054e1d5
tSNE与UMAP对比的一个很棒的网站:https://pair-code.github.io/understanding-umap