t-SNE(t分布随机邻域嵌入)是一种用于探索高维数据的非线性降维算法。它将多维数据映射到适合于人类观察的两个或多个维度。t-SNE非线性降维算法通过基于具有多个特征的数据点的相似性识别观察到的簇来在数据中找到模式。另外t-SNE的输出可以作为其他分类算法的输入特征。因为t-SNE算法定义了数据的局部和全局结构之间的软边界。t-SNE几乎可用于所有高维数据集,广泛应用于图像处理,自然语言处理和语音处理。在生物信息中可广泛应用于基因表达数据、基因甲基化数据、基因突变数据等,能够直观地对不同数据集进行比较。
基本原理
从方法上来讲,t-SNE本质上是基于流行学习(manifoldlearning)的降维算法,不同于传统的PCA和MMD等方法,t-SNE在高维用normalized Gaussian kernel对数据点对进行相似性建模。相应的,在低维用t分布对数据点对进行相似性(直观上的距离)建模,然后用KL距离来拉近高维和低维空间中的距离分布,大致计算流程如下。
t-SNE术语解读
降维
降维是指把数据或特征的维数降低,一般分为线性降维和非线性降维,比较典型的有:
①线性降维:PCA(Principal Components Analysis)、LDA(Linear Discriminant Analysis)、MDS(Classical Multidimensional Scaling)。②非线性降维:Isomap(Isometric Mapping)、LLE(Locally Linear Embedding)、LE(Laplacian Eigenmaps) ,非线性降维中用到的方法大多属于流形学习方法。
t-SNE属于第二类。
SNE
SNE即stochastic neighbor embedding。在高维空间相似的数据点,映射到低维空间距离也是相似的,SNE就是基于这个原理的算法。常规的做法是用欧式距离表示这种相似性,而SNE把这种距离关系转换为一种条件概率来表示相似性。
kNN图
kNN图(k-Nearest Neighbour Graph)是在经典的kNN(k-NearestNeighbor)算法上增加了一步构图过程。假设空间中有n个节点,对节点vi,通过某种距离度量方式(欧式距离、编辑距离)找出距离它最近的k个邻居v1,v2,⋯,vk,然后分别将vi与这k个邻居连接起来,形成k条有向边。对空间中所有顶点均按此方式进行,最后就得到了kNN图。
数据要求
通常为表达谱芯片或测序数据、甲基化数据等矩阵数据。
下游分析
通常,进行t-SNE可视化后会进行:
1. 其他机器学习步骤,如LASSO回归分析等机器学习算法对变量进行筛选。
2. 如果为基因表达数据,通常会对t-SNE图中展现的不同分组进行差异表达分析。
图形示例:
1、t-SNE图1
2、t-SNE图2
图注
不同颜色散点在二维平面分布的差异展示了不同分组样本的数据分布的差异。
应用示例:
文献1:The whole-genome landscape of medulloblastoma subtypes。(于2017年7月发表在nature上,影响因子43.07)
髓母细胞瘤亚型的全基因组分析
为了研究Group3和Group4亚型髓母细胞瘤中细化的分子亚型,文章中使用t-SNE分析了Group3和Group4亚型髓母细胞瘤的450k甲基化芯片数据。
文献2:Expressionpatterns of small numbers of transcripts from functionally-related pathwayspredict survival in multiple cancers(于2019年7月发表在BMC Cancer. 上,影响因子2.933)
少量功能相关信号通路中基因的表达模式预测多种癌症预后的研究
作者使用t-SNE分析了TCGA中所有癌症类型的信号通路基因表达数据,并根据数据的t-SNE分布将34种癌症划分为30个亚型,进一步的生存分析发现划分出的亚型之间存在较为显著的预后差异。