StatQuest生物统计学专题 - tSNE的基础概念
t-SNE同PCA的简单区别一个t-SNE的例子
t-SNE(t-distributed stochastic neighbor embedding)是一种降维机器学习算法,是由 Laurens van der Maaten 和 Geoffrey Hinton在08年提出来。
t-SNE 是一种非线性降维算法,非常适用于高维数据降维到2维或者3维,并进行可视化。
同PCA一样,t-SNE也是一种无监督机器学习算法,也就是说它不是通过训练得到一些模型之后再用于预测数据,它是以数据原有的趋势为基础,重建其在低纬度(二维或三维)下的数据趋势,一般情况下,这种数据趋势指的是数据点的聚团(或距离关系)。
t-SNE同PCA的简单区别
前面的PCA中已经讲过,PCA也是根据数据原有趋势,找到方差最大的方向,此方向为主成分1,然后在与主成分1正交的方向上找方差最大的方向,此方向为主成分2,依次类推,降维变量有多少个纬度,主成分就有多少个。
那PCA的降维功效如何体现呢?
大部分情况下,只需要2-3个主成分就可以很好地解释原数据波动(80%以上),所以就只使用2-3个主成分就可以用于代替原有的数据,在低纬度下直观而方便的考察数据的趋势。
那么t-SNE又是如何完成降维的工作呢?
其实两两数据点在空间中都是存在距离关系的,不过2维空间和3维空间中的数据点,我们还可以直观想象,但是超过3维之后,数据点就无法使用图形来表示了,但是可以知道这些数据点之间依然存在或大或小距离关系。
比如使用4个RNA-seq基因表达量来表示不同的细胞,那么是无法绘出4维的空间图形的,但是我们知道这些数据点(也就是4个基因数据表示的细胞)肯定两两之间存在距离关系。
再进一步的,如果基因的表达量数据可以很好的区分细胞,比如有两种细胞类别:肝脏细胞和肾脏细胞,各有50个数据点,那么可以知道的是在4个基因表示的4维空间中,代表肝脏细胞的50个数据点一定是有一种聚团的趋势,也就是相互之间距离较小,代表肾脏细胞的50个数据点一定也有聚团的趋势,也就是相互之间的距离较小,但是50个肝脏细胞数据点和50个肾脏细胞数据点之间距离就会较大。
t-SNE就是一种在低纬度下也能完好的展示出这种聚团的趋势或者叫做距离关系的方法。
那么如何实现这个思想?
t-SNE构建一个高维对象之间的概率分布(正态分布),用这个概率分布来去表征数据点之间的距离关系。
t-SNE在低维空间里在构建这些点的概率分布(t分布),使得这两个概率分布之间尽可能的相似,也就代表在低纬度空间重现了高纬度空间中距离关系。
一个t-SNE的例子
为了便于叙述t-SNE的思想,下面是一个从2维空间使用t-SNE方法降维到1维空间的例子。
如下图所示,在2维平面上各自聚团的3群数据点,降维之后在1维直线上得到很好地保持。
那么t-SNE具体是如何实现的呢?
首先获得每个点同其他所有点之间的距离关系
如图中高维空间中的黑色点所示,它同蓝色点之间的距离会转换成一个正态概率密度值,此正态概率以黑色点为均值。
最终其他所有点同黑色点之间的距离都会转换成一个概率密度值,如下图右所示。
然后计算出每个点同其他所有点之间的距离关系。
最后再将所有的概率密度值进行标准化,标准化之后他们的和为1,也就是将每一个的概率密度除以总概率密度和即可。
到此时,这还不是最终的距离矩阵,还差最后一步。
由于是使用正态分布密度图转换的距离,那么两两点之间计算出来的概率密度并不相等,也就是说以A为基点,计算的AB之间的距离为(AB),以B为基点,计算的BA之间的距离为(BA),这两个距离是使用的不同的正态分布曲线转换的,因此并不相同。此时取这两个距离的均值作为最终的距离值。
如下图所示。
将所有数据点随机打散在1维直线上
计算此时的1维直线上每个点同其他所有点之间的距离关系
这个过程同步骤1类似,只是不使用正态分布来模拟,而是使用t-分布来模拟。
根据高维空间的距离矩阵,移动点的位置,使得目前点与点之间距离矩阵同高维空间的距离矩阵类似
如下图所示,当前点的位置应该适当右移,这样距离矩阵才会更向右侧的高维空间距离矩阵靠拢。
剩余点同理操作,均会朝着一个方向适当左移或右移一段距离。
重复3,4步,直至最优
最终结果如下图所示。
专题以往文章
参考资料
StatQuest课程:https://statquest.org/video-index/
猜你喜欢
生信菜鸟团-专题学习目录(6)
生信菜鸟团-专题学习目录(7)
还有更多文章,请移步公众号阅读
▼ 如果你生信基本技能已经入门,需要提高自己,请关注下面的生信技能树,看我们是如何完善生信技能,成为一个生信全栈工程师。
▼ 如果你是初学者,请关注下面的生信菜鸟团,了解生信基础名词,概念,扎实的打好基础,争取早日入门。