美文网首页
NMF数据分型的简单理解

NMF数据分型的简单理解

作者: 小潤澤 | 来源:发表于2021-07-13 18:17 被阅读0次

    简介

    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 可以理解为一种权重

    相关文章

      网友评论

          本文标题:NMF数据分型的简单理解

          本文链接:https://www.haomeiwen.com/subject/wcrspltx.html