尔云间生信代码|还在用PCA做降维聚类吗?最强降维模型tSNE--你值得拥有
科研有捷径,输入代码,一键获取科研成果!就是这么省事,来具体看下有多方便!
搜索http://985.so/a9kb查看全部代码(目前共计50+持续新增中),也可以点击右侧【目录】,可以看到更多有趣的代码;真香提示:文末可以知道如何获取代码~
生信分析中降维聚类方法众多,当我们的数据各特征间存在高度的线性相关,这时你可能首先会想到使用 PCA 对数据进行降维处理,但是PCA 是一种线性算法,它不能解释特征之间的复杂多项式关系,而t-SNE (t-distributed stochastic neighbor embedding)是一种用于挖掘高维数据的非线性降维算法,是用于降维的一种机器学习算法,是由 Laurens van der Maaten 等在08年提出来。它能够将多维数据映射到二维或三维空间中,因此 t-NSE非常适用于高维数据的可视化操作。今天我们来介绍其中的一种方法:tSNE。相较其他降维算法,对于数据可视化而言tSNE的效果无疑是最好的,我们也会在文中使用PCA来对比两者的效果。
下面我们一起来看下 tSNE如何分析,本文展示做一组tSNE聚类分析与PCA可视化结果进行比较。代码相关文件见如下3个文件夹。

1. 加载相应R依赖包
library("Rtsne")
2. 数据导入
输入数据共2个文件,一个矩阵文件,每一行是一个样品,每一列是一个基因,另一个是分组信息文件,包含2列,一列是与矩阵文件对应的样品名称,第二列是分组信息,具体见下图。


3. tSNE分析
接下来我们对读取的数据进行分析,第一步设定种子,第二步去除重复数据,如果没有重复数据可跳过这一步,第三步将数据转成矩阵类型。

之后使用Rtsne函数进行tSNE降维分析,参数perplexity设置为20,该值表示混乱度,混乱度越高,t-SNE将考虑越多的邻近点,更关注全局,设置范围是5-50,因为我们使用的数据较简单,所以这里使用20就行,越复杂的数据建议该值越高。

最后使用ggplot2包进行可视化。

同时我们使用PCA分析来对比一下。


tSNE

PCA
由两者的对比结果可见tSNE的效果明显比PCA要好,因为tSNE算法考虑因素多所以计算时间会更长,尤其在特征较多时更为明显,这也是它的一个不可避免的槽点。不过能获得符合预期结果的美图,还是很值得一试的呦。
如需代码及示例数据等文件,请扫码聊天框回复 “B34”领取!

写在文末:
如果您近期想做生信方面的文章而苦于没有思路,或者不知道如何来入手生信分析,或者兑具体的某一个图有作图需求,都可以扫码咨询小云,我们有专业的技术团队,生信热点思路设计、生信分析、热点方向生信挖掘等,如有需要,可扫码下方二维码了解详情:
