分享

PCA、UMAP、t-SNE!降维你搞懂了吗

 新用户4064dVjo 2025-05-24 发布于北京

单细胞系列如约进行!在上一期,我们搞定了单细胞分析的"三步走"核心流程👉有手就会的scRNA-seq 第8期|不搞懂这“三步走”,别说你会单细胞分析!),从Normalize到FindVariables再到Scale,为数据打下了坚实基础。现在,我们要带数据"瘦身"啦——进入激动人心的降维(Dimensionality Reduction)环节!

本期我们将介绍数据降维的几个关键部分:

1. 降维是什么,为什么需要降维?
2. 降维常用的方法
3. 降维实操展示

准备好了吗?让我们一同开启单细胞降维的探索之旅,用数据降维的"魔法透镜"透视细胞世界的隐藏奥秘!

往期回顾:单细胞测序有手就会版

(一) 单细胞测序带脑学习版

单细胞测序 | 第1期. 单细胞测序:揭开生命奥秘的钥匙
单细胞测序 | 第2期. 下游数据质控知多少
单细胞测序 | 第3期. Seurat之PBMC分析标准化流程
单细胞测序 | 第4期. 写文章时需要用到的单细胞转录组测序原理
单细胞测序 | 第5期. 单细胞测序文件面面观
单细胞测序 | 第6期. 10X genomics 上游分析-cellranger介绍
单细胞测序 | 第7期.10X genomics 上游分析-cellranger应用

单细胞测序 | 第8期. 一文打通单细胞测序研究思路

单细胞测序 | 第9期. Zenodo一个宝藏公共数据库和单细胞的不解之缘

单细胞测序 | 第10期. 生物信息学必须了解的数据库

单细胞测序 | 第11期. 不会还有人不知道这个免费一年的云服务吧!?

单细胞测序 | 第12期. 单细胞分析数据下载、导入和合并

单细胞组学 | 第13期. 单细胞测序中竟然存在双细胞?
单细胞组学 | 第14期. 想发单细胞测序文章?这一步必学!
单细胞组学 | 第15期. 一份强烈推荐收藏的细胞周期校正宝典!
单细胞组学 | 第16期. 不可不知的单细胞流程
单细胞组学|第17期. 找到Cluster的领头羊
单细胞组学|第18期. 单细胞注释不再是烦恼!
单细胞组学第19期. 单细胞数据分析的核心环节,必学!
单细胞组学 | 第20期. 美无极限——卷起来的UMAP图美化方案
单细胞组学 |  第21期. 点亮数据星空——Dotplot图绘制技巧揭秘
单细胞组学 |  第22期. 单细胞转录组基础分析流程详解
单细胞组学 | 第23期. 单细胞数据分析的灵魂,学起来!
单细胞组学 | 第24期. 找到属于你的细胞亚群!
单细胞组学 |第25期. 单细胞亚群细分
单细胞组学|第26期. 一个函数搞定单细胞富集分析!

单细胞组学|第27期. 想发高分?干湿结合才是王炸!

单细胞组学 | 第28期. 拟时序分析,看这里!

(二) 单细胞测序有手就会版

单细胞思路 | 第1期 必学习的最常规的单细胞思路!

单细胞思路 | 第2期 单细胞中的资源库

单细胞思路 | 第3期 找到靶点分子后可以直接测序!

单细胞思路 | 第4期 预测标志物,单细胞和疾病稳稳联系

有手就会的scRNA-seq | 1.数据导入

有手就会的scRNA-seq | 2.认识Seurat对象

有手就会的scRNA-seq|3.质控思路

有手就会的scRNA-seq|4. 为什么老是画不好小提琴图?

有手就会的scRNA-seq|5. 还在纠结双细胞质控方法吗!一文说清楚

有手就会的scRNA-seq|6. 不读完这篇,都不敢说自己懂单细胞质控!

有手就会的scRNA-seq|7. 单细胞批次效应,最全攻略!

有手就会的scRNA-seq|8. 不搞懂这“三步走”,别说你会单细胞分析!


TS

01

什么是降维,为什么需要降维?

1. 什么是降维?

降维(Dimensionality Reduction)是指将高维数据简化为低维表示的过程。在单细胞转录组分析中,每个细胞的基因表达谱包含上万个维度(基因),直接可视化这种高维数据计算较为复杂、可靠性下降且不直观。

2. 为什么需要降维?

总结下来有以下几点:

①数据压缩:通过提取关键特征(如共表达模式或生物学通路),将上万个基因的信息浓缩为少数核心维度(如主成分或UMAP坐标)

②去除噪声:保留数据中具有生物学意义的变异,过滤技术噪音或无关波动。

③直观可视化将细胞投影到2D/3D空间(如PCAt-SNEUMAP),直观展示细胞间的相似性或异质性。


TS

02

降维有哪些方法?

下面我们就常用的主流方法进行讲解:

1. PCA(Principal Component Analysis):是最常用和基本的降维方法

  • 技术原理:通过正交线性变换,将高维基因表达数据转换为一组不相关的低维主成分(PCs),这些主成分按照方差从大到小排序。第一主成分是在所有可能线性组合中方差最大的方向,后续各成分在与前序成分正交的条件下最大化剩余方差。
  • 计算效率高,适合初步降维,但如果直接以PCA进行二维DimPlot可视化呈现,是区分不开不同细胞的(如下图),因此其一般为初步降维去除噪声、改善结果质量,并作为t-SNE/UMAP的输入,可以让t-SNE/UMAP运行更快且效果更好。
  • 主成分具有明确数学解释(可追溯关键基因)


2. UMAPUniform Manifold Approximation and Projection):
  • 技术原理:非线形降维方法,基于拓扑理论和流形学习,平衡局部与全局结构。
  • 关键参数:n_neighbors(建议范围15-50)可控制数据局部和全局结构的平衡。
  • 应用场景:已成为单细胞研究的可视化常用方法。
  • 相比于PCA,使用UMAP的DimPlot就能更好地区分出细胞。


3. t-SNE(t-distributed Stochastic Neighbor Embedding)
  • 技术特点:非线形降维方法,通过概率分布匹配优化局部聚类结构
  • 突出优势:对细胞亚群的精细区分表现优异,侧重局部结构


不同方法对比:




TS

03

降维具体实操

具体数据Rdata数据可通过下方网盘链接获取:

链接: https://pan.baidu.com/s/1a1X-AsA1aVUvZIL0orD-rQ?pwd=vw63 提取码: vw63 

1. PCA降维代码

merged_rna <- RunPCA(merged_rna,
                     npcs = 50, #纬度选择
                     seed.use = 42,
                     verbose = FALSE)

注意我们的输入数据是scale.data,因为使用scale.data才能避免某个原始高表达基因在后续降维聚类中占据主导具体原理可以看往期推送“单细胞必须理解的三步走”

之前运行完毕RunPCA以及IntegrateLayers后的降维结果储存在reductions中。

2. 选择纬度策略

生物信息学实践中需要平衡:

  • 保留足够PCs以捕捉关键生物信号
  • 避免过多PCs引入噪声干扰
  • 控制计算资源消耗

推荐采用以下方法确定最佳PC数:

方法一:ElbowPlot (最常用)

ElbowPlot(demo_obj, ndims = 30)


结果解读:

  • X轴:主成分序号(PC1-PC30)

  • Y轴:各PC解释的方差百分比

  • 选择标准:曲线拐点对应的PC数(拐点后方差贡献增幅显著降低,更多可能包含技术噪音),此处选择20-30均可。

方法二:JackStrawPlot()

# 执行JackStraw分析
merged_rna <- JackStraw(merged_rna, num.replicate = 100,dims = 1:20) #可以更多,只是示例;这一步运行时间较长
merged_rna <- ScoreJackStraw(merged_rna, dims = 1:20)

# 可视化分析结果
JackStrawPlot(
  merged_rna,
  dims = 1:20,       # 检验前20个主成分
  reduction = "pca"# 指定降维方法
  xmax = 1,          # p值上限
  ymax = 1           # 统计量上限
)
结果解读:
  • 显著的主成分会偏离参考线(p<0.05)
  • 偏离程度反映主成分的生物学重要性
  • 如图示前20个PC均具有显著生物学意义

方法三:DimHeatmap()
DimHeatmap(merged_rna, 
           dims = 15:20,      # 查看PC15-20
           cells = 500,       # 显示500个细胞
           balanced = TRUE)   # 平衡正负负荷基因

分析价值:
  • 直观展示各PC的区分能力
  • 识别关键差异基因、辅助判断PC的生物学合理性

输出第一个PC的关键基因:


可以看到,PC1的正向调节基因与免疫明显相关,在后面UMAP图可视化的时候应该可以看出PC1区分出了免疫相关细胞和其他细胞。

3. 降维聚类实施流程
merged_rna <- merged_rna %>% 
  FindNeighbors(reduction = "integrated.cca", dims = 1:20) %>% 
  RunUMAP(reduction = "integrated.cca", dims = 1:20) %>%
  RunTSNE(reduction = "integrated.cca", dims = 1:20) %>%
  identity() #这里的dims 的意思是从 reduction 参数指定的降维结果(如 "integrated.cca")中选择哪些维度(这里是1:20)作为 RunUMAP 的输入。

运行之前可以看到reduction中只有pcaintegrated.cca两个。


运行完毕之后可以看到多了刚刚使用“integrated.cca”跑出来的umaptsne两个reduction。


RunUMAP重要参数(一般默认即可):

1. n_neighbors
  • 小值(如5-15):强调局部结构,可能导致簇内细节更清晰,但全局结构(如簇之间的相对位置)可能丢失。 
  • 大值(如50-200):强调全局结构,簇之间的分隔更明显,但可能牺牲局部细节。
一般默认是30,我们大多数情况下都没有调节

2. min.dist: 
  • 控制嵌入点压缩的紧密程度。较小的值使嵌入更关注局部结构(更紧密),较大的值使点分布更均匀、分散,更凸显全局结构。
  • 范围: 通常在 0.001 到0.5 之间。默认值: 0.3,一般这个大小即可。

大家使用时候的经典文献参考

Summary


本期从理论到实践,我们共同完成了单细胞降维的深度探索!在本次系列中,我们:
1. 揭晓降维的核心意义——将上万维的基因表达数据"浓缩"成2D/3D的宝藏图,让隐藏的细胞群体关系跃然眼前;
2. 解锁三大降维利器——线性降维PCA、非线性明星UMAP、局部聚类专家t-SNE,助您精准捕捉数据特征;
3. 实战代码演示——手把手带您走通从数据预处理到降维可视化的全流程。
记住:降维不是终点,而是打开单细胞世界的"钥匙"!下一期,我们将带着这份"地图",继续探索聚类分析和差异表达的奥秘~

这就是本期的全部内容啦,你学会了吗?后续我们将继续开始为大家分享单细胞转录组学相关内容。大家对于推送内容有任何问题或建议可以在公众号菜单栏“更多--读者的话”栏目中提出。希望我们能一起成长,共同进步,让医学科研有迹可循!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多