打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
单细胞聚类方法大比拼(III)
生物_医药_科研
>《待分类》
2020.06.07
关注
嘿,大家好我又来了!回忆一下,在前两期的文章中我已经给大家介绍了常见的聚类如层次聚类、k-means等,以及为单细胞专门开发的
SC3
聚类。今天带来本系列的最后一个聚类方法——谱聚类(
Spectral Clustering
)的介绍。听这个名字大家可能会觉得很陌生,但是如果你有过单细胞的分析经历,可能会在无意中使用过它。没错,它就是大名鼎鼎的
R
包
S
eurat自带的默认聚类方法。
单细胞聚类方法大比拼(
III
)
简单来说,
S
eurat
中的谱聚类基于共享最近邻图(
S
NN
)和
模块化优化的聚类算法
来
识别
细胞簇
。
它
首先计算
k
最近邻(
k-nearest neighbors)
并构造
SNN
图
,
然后优化模块化功能以确定
具体类群
。
听起来好像有点难懂,没办法,高大上的方法背后一般都是深奥的理论作为支撑,并且这个算法最早居然在
2013
年发表在物理学的期刊
The European Physical Journal B
上。我会尽量简化其中所涉及到的数学相关知识,更多地传达方法背后生物学意义。
第一个难点是谱聚类是一种基于图论方法,如果你傻傻地分不清图论的“图”和图像的“图”,建议先去学习一下基本的离散数学。谱聚类是从图论中演化出来的算法,它的主要思想是把所有的细胞看为高维空间中的点,这些点之间可以用边连接起来。距离较远的两个点之间的边权重值较低;距离较近的两个点之间的边权重值较高。然后通过对所有数据点组成的图进行“切图”,让切图后不同的子图间边权重和尽可能的低,而子图内的边权重和尽可能的高,从而达到聚类的目的。
谱聚类中的图采用的是无向有权图,也就是说,每个细胞(图中的点)之间的连接是没有方向性的。但是每条边上是有权重信息的。类比一下地图,两地之间的路是没有方向(双向的),但是地点与地点之间路的远近距离是不同的。对于一个无向有权图
G
,一般用点的集合
V
和边的集合
E
来描述
,
即为
G(V,E)
。其中
V
即为我们数据集里面所有的点
(
v
1
,v
2
,...v
n
)
的集合
。对于
V
中的任意两个点,定义权重
w
ij
为点
v
i
和点
v
j
之间的权重
。
由于是无向图,所以
w
ij
=w
ji
如果两点之间没有边连接,那么
w
ij
=0
。
O
K
,如果你看到这都能懂,那么接下来也没啥问题了。
第二个难点如何把我们的单细胞的数据构建成为无向有权图,需要明确的是,我们手中最初只有细胞的表达量矩阵,这个每个细胞中各个基因的表达情况,属于
“节点信息”。那么哪些细胞之间需要有边相连,边的权重又该如何计算呢?这里引入了邻接矩阵
(
W)
的概念,我们首先定义一种计算细胞之间距离度量的方法,来计算每条边之间的权重
w
ij
,又称相似性
s
ij
,然后
获得
整个的
邻接矩阵
W
。构建邻接矩阵
W
的
常用
方法有三类
:
ϵ-
邻近法,
K
邻近法和全连接法
。
Seurat
中选用的是
k-
近邻法,那我们也就把
k-
近邻法作为例子讲解。首先利用
KNN
算法遍历所有的样本点,取每个
细胞
最近的
k
个
细胞
作为近邻,
然后设置
只有
与此细胞
距离最近的
k
个点之间的
w
ij
>0
,其他全设置为
0
。但是这种方法会造成重构之后的邻接矩阵
W
非对称,我们后面的算法需要对称邻接矩阵。为了解决这种问题,一般采取下面两种方法之一
(1)
只要第一个点在另一个点的
k
近邻中即可保留
s
ij
(
2
)必须两个点互为
k
近邻才可保留
s
ij
。由此我们就能用计算出的权重矩阵构建出如下所示的图。
然后是度矩阵
(
D)
的概念:对于图中的任意一个点
v
i
,它的度
d
i
定义为和它相连的所有边的权重之和,即
从每个点度的定义,我们可以得到一个
n x n
的度矩阵
D,
它是一个对角矩阵,只有主对角线有值,对应第
i
行的第
i
个点的度
的值
好了,最后一个重要的矩阵:拉普拉斯矩阵(
L
)登场。拉普拉斯矩阵定义很简单:
L
=
D
-
W ,
W
是
上面
所说的
邻接矩阵
,
D
是度矩阵
。但是拉普拉斯矩阵有着很重要的性质。
终于到了
“切图
”
的环节,实际就是将图
切成相互没有连接的
k
个子图
。目标就是让子图内的点权重和高,子图间的点权重和低。由于这里的求解过程十分复杂全是公式,具体的过程就不讲了,实际就是一个最优化问题。可以理解为通过
D
,
L
这两个矩阵所给的信息,在图的部分边进行切分,让完整的图变成许多子图,每一个子图就构成了一个类群,如下图所示
当然,如果你只想在
S
eurat
中简单的用一下,直接用
FindClusters
(
)
这个函数就好了。就是简单的一句话
’pbmc <- FindClusters(pbmc, resolution =
int
)’
。最常调整参数有
resolution
和
pc.use
,
pc.use
决定哪些维度用来进行聚类,如果之前做过
P
C
A
,会选一般前
10-20
维度。
resolution
参数决定类群的
“粒度”,官网建议将此参数设置在
0.4-1.2
之间通常可为
包含
大约
3K
个cell的数据集返回良好的
聚类
结果。对于较大的数据集,最佳
resolution
值
通常会增加。
值得一提的是,
FindClusters
(
)
函数是不需要输入希望划分类群数量的,由算法自动划分。调整
resolution
会得到不同的类群的结果,越高细胞类群数量越多,想获得更多
的
类群
,可以
尝试
高于
1.0
的值
。
最后加上一句
umap
或者
t-
SNE
的绘图命令就能可视化聚类结果了。下图是我用
S
eurat
自带的
pbmc
数据的聚类结果,可以发现效果还是非常不错的。
好啦,以上就是谱聚类的所有内容了。如果你不太懂算法原理,可以不用过于纠结,能在R语言中灵活运用才是解决生物信息问题的关键。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报
。
打开APP,阅读全文并永久保存
查看更多类似文章
猜你喜欢
类似文章
【热】
打开小程序,算一算2024你的财运
【综述】Nature Methods | 干货!一文读懂单细胞转录组分析的现状和问题!
桥梁工程风险分析研究综述
首篇植物单细胞图谱文章解析 | Plant Physiology:植物根尖单细胞图谱
单细胞RNAseq常规分析流程(10X)
高分综述 | 美国斯坦福大学:单细胞RNA测序在心血管发育、疾病及心血管医学中的应用
Neuron | 更加灵活!艾伦研究所开发新的增强子病毒,实现亚细胞类型特异性标记
更多类似文章 >>
生活服务
热点新闻
留言交流
回顶部
联系我们
分享
收藏
点击这里,查看已保存的文章
导长图
关注
一键复制
下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×