阅读 151

NMF数据分型的简单理解

简介

NMF又称之为非负矩阵分解,可以理解为又一种降维聚类的方法,常常运用于单细胞分群,癌症RNA-seq数据分群等运用中,下图即是NMF分解的示意图:



其中:V矩阵是一个n×m的矩阵,W为n×k的矩阵,H为m×k的矩阵;而分解出来的 k 可以理解为所分出来的 k 个亚群(当然 W 矩阵的 k 与 H 矩阵的 k 的含义有一定区别,后续会举例子说明)

在R中实现

在R中完成NMF分解有两种方式,第一种利用R包NMF可以完成:

# random data
x <- rmatrix(20,10)

# run default algorithm with rank 3
res <- nmf(x, 3)

其中 rank 可以理解为矩阵分解后的 k ,即你要区分出来的亚群数量

如果是单细胞数据,还有一种方式是通过seurat选择降维方法来完成

# 提取单细胞标准化的data
vm <- data@assays$RNA@scale.data
res = nmf(vm,16)

# 将nmf对象注入到seurat中
data@reductions$nmf <- data@reductions$pca
data@reductions$nmf@cell.embeddings <- t(coef(res))
data@reductions$nmf@feature.loadings <- basis(res)
## 其中coef(res)为 H 矩阵,basis(res) 为 W 矩阵


data_reduction <- RunUMAP(pbmc, reduction = 'nmf', dims = 1:16) %>% 
  FindNeighbors(reduction = 'nmf', dims = 1:16) %>% 
    FindClusters()

举例

之前我们说过NMF的分解图:


在单细胞领域可以理解为,有n个基因,m个cell,并进行NMF分解,W矩阵可理解为:

有n个基因,k个cell clusters;而H矩阵可理解为:

在向量空间中有 m 个细胞,H 矩阵的每一列代表该细胞的 k 维坐标,因此 H 矩阵可以理解为 V 矩阵投影到低维空间的点坐标;即如果我们用NMF降维聚类并在二维平面上可视化时,H 矩阵的 k 维坐标取贡献最大的前两维即可;在seurat代码中有:

# 将nmf对象注入到seurat中
data@reductions$nmf <- data@reductions$pca
data@reductions$nmf@cell.embeddings <- t(coef(res))
data@reductions$nmf@feature.loadings <- basis(res)
## 其中coef(res)为 H 矩阵,basis(res) 为 W 矩阵

那么 cell.embeddings 就是降维后每个细胞的坐标;而 feature.loadings 可以理解为一种权重

作者:小潤澤

原文链接:https://www.jianshu.com/p/3bc148d31b86

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐