scDeepInsight

                    一种基于深度学习的scRNA-seq数据的有监督细胞类型识别方法

     细胞注释作为单细胞RNA数据分析的关键步骤,可以研究多个细胞群的异质性。目前,常是使用无监督和有监督的聚类两种算法。无监督算法将单细胞表达数据投影到低维空间,然后根据彼此之间的距离对细胞进行聚类,由于未使用参考数据集,只能实现细胞类型的粗略分类,难以进一步提高识别精度。因此,文章中提出了一种新的监督注释方法scDeepInsight。它通过批量归一化数据集成,对参考数据集执行监督训练,对查询数据集进行异常值检测和注释单元格类型,它也可以帮助识别与细胞类型相关的活性基因或标记基因。scDeepInsight将测序矩阵首先通DeepInsight方法转换为相应的图像(DeepInsight可以创建一个可训练的图像转换器,通过综合比较多个基因之间的相互关系,将非图像RNA数据转换为图像),随后,转换后的图像被馈送到CNN,最后对其进行注释。将scDeepInsight与其他六种主流细胞注释方法进行了基准测试,该模型的平均准确率达到87.5%,与最先进的方法相比提高了7%以上。

(A)数据集上预测结果的堆积百分比柱形图。(B)原始研究中按细胞类型着色的UMAP表示。(C) 混淆矩阵的热图。(D)由scDeepInsight预测的细胞类型着色的UMAP表示。(E) 使用SC3聚类和ScType的注释结果着色的UMAP表示。

注释方法

在单细胞分析中,提高自动标注的准确性已成为研究的重要领域,针对这些实际需求,研究人员提出了多种相关的标注方法。

可以大致分为三种不同的类型:

(i)基于标记基因的注释

(ii)使用参考数据集的相关分析进行注释

(iii)通过参考数据集训练的监督分类器进行注释

几种方法的局限性

(i)基于标记基因的注释

细胞注释从聚类开始,使用聚类方法将细胞分组,例如k-means,SC3,SNN。然后通过分析每个簇内标记基因的丰度,将簇映射到不同的细胞类型。基于标记基因的方法有几个局限性。

第一个问题是标记基因数据库的准确性。尽管现在有PanglaoDB ScTypeCellMarker等数据库,但标记基因的选择仍取决于先验知识。

第二个问题是,对于许多细胞亚型,特别是新发现的细胞类型,标记基因的信息往往不足。

第三个问题是细胞亚型之间标记基因的复制。例如B细胞多个亚类的标记基因彼此严重重叠,缺乏特异性导致分类过程中相似亚型之间的混淆。

(ii)使用参考数据集的相关分析进行注释

该方法比基于标记基因的方法更准确,这是因为通过将目标数据集与类似生物组织的参考数据集相关联,找到基因-基因相关性可以更全面地注释。但是,在注释不同实验中获得的数据集时,很难消除批量效应的影响。

因此鉴于深度学习方法的鲁棒性和精细注释参考数据集的可用性,有监督的学习模型已逐渐广泛用于参考数据集的分析。目前,用于处理单细胞组学数据的代表性ML方法主要包括来自变压器的双向编码器(BERT),自动编码器(AE)和递归神经网络RNN

模型方法

方法概述

scDeepInsight的工作流程包括:数据预处理、图像转换、神经网络训练和细胞类型预测

该模型基于监督学习的方法,因此需要准备好参考数据集和测试数据集后,进行数据预处理包括:质量控制、归一化和批次校正。之后,利用DeepInsight将数据转换为图像:首先,通过某种可视化方法(如t-SNE)将处理后的数据转换为二维嵌入,通过将基因映射到像素,将样品中不同基因的表达转化为独特的图像。接下来,来自参考数据集的处理图像用作CNN的输入。训练后,从查询数据集转换的图像可以馈送到训练的模型中,以完成细胞类型的注释。

QC

主要控制三个指标

单个细胞中检测到的特定基因的数量(nFeature_RNA)(通常设置在400—3000左右)

检测到的UMI总数(nCount_RNA)(数量较大或者较小的都要删除)

每个细胞中线粒体基因(percent.mt)(通常设置的阈值为15,其值较大时表示线粒体凋亡)

A)左图是测试数据集的质量控制图,过滤掉nFeature_RNA小于300或大于4000的细胞。percent.mt 大于15的细胞也被排除在外。右图由数据排序技术标记。

(B) 由细胞类型和数据源标记的批量效应校正之前的参考的均匀流形近似和投影 (UMAP) 表示。

 (C)批量效应校正后数据集的UMAP表示。

Normalization

常用的归一化方法如:Scanpy

SCTransform :该方法对每个细胞的总UMI计数执行正则化负二项式回归,以消除由于测序深度引起的方差(UMI读数通常与细胞的测序深度呈正相关)。

传统的对数归一化过程无法消除不同细胞样本之间的这种相关性。在提取可变基因时,SCTransform选择的基因也比传统归一化方法选择的基因表现出更具有生物学意义。此外,SCTransform还可以消除对样本的线粒体基因百分比或细胞周期的影响。

Batch  effect Correction

常用的几种消除批次效应方法包括:典型相关分析(CCA),ComBatHarmony。其中,CCA在大多数实验中表现最好。

CCA是一种研究两组变量之间相关性的多变量统计方法,它可以揭示变量之间的内部关系。通过调用Seurat::IntegrateData ,CCA方法可用于查找数据集之间的锚点并相应地集成多样本数据集,可以避免不同实验批次或测序技术造成的生物异质性对后续分析的准确性造成影响。

结果性能比较

A)scDeepInsight与其他方法相比的准确性和ARI:SC3,FindClusters,SCINA,SingleR,CellTypist和scBERT,跨越六个数据集:Yaza,Schulte-Schrepping,Arunachalam,Lee,10×-Multiome-Pbmc10k和Wilk。(B)描绘了scDeepInsight的准确性和ARI箱图以及基准测试中使用的其他六种方法。

基础知识延伸

一、UMAP(Uniform Manifold Approximation and Projection )

 一种降维技术,假设可用数据样本均匀(Uniform)分布在拓扑空间(Manifold)中,可以从这些有限数据样本中近似(Approximation)并映射(Projection)到低维空间。

UMAP分为两个主要步骤:

  1. 学习高维空间中的流形结构
  2. 找到该流形的低维表示。

1、Learning the manifold structure

在将数据映射到低维之前,首需要弄清楚它在高维空间中的样子。

1.1.Finding nearest nerghbors

UMAP 使用 Nearest-Neighbor-Descent 算法找到最近的邻居。我们可以通过调整 UMAP 的 n_neighbors 超参数来指定我们想要使用多少个近邻点。它控制 UMAP 如何平衡数据中的局部和全局结构。

本质上,一个小的n_neighbors 值意味着我们需要一个非常局部的解释,准确地捕捉结构的细节;而较大的 n_neighbors 值意味着我们的估计是基于更大的区域,因此在整个流形中更加广泛。

1.2.Constructing a neighbor graph

接下来UMAP 需要通过连接之前确定的最近邻来构建图。我们将他分成几个子步骤来解释邻域图是如何形成的。

1.2.1 Varying distance

假设点在流形上均匀分布,这表明它们之间的空间是根据数据看起来更稀疏或更密集的位置而拉伸或收缩的。

它本质上意味着距离度量不是在整个空间中通用的,而是在不同区域之间变化的。我们可以通过在每个数据点周围绘制圆圈/球体来对其进行可视化,由于距离度量的不同,它们的大小不同。

1.2.2 local_connectivity

接下来,我们要确保试图学习的流形结构不会导致许多不连通点。所以需要使用另一个超参数local_connectivity(默认值= 1)来解决这个潜在的问题

当我们设置local_connectivity=1 时,我们告诉高维空间中的每一个点都与另一个点相关联。

1.2.3 Fuzzy area

上面的图也包含了模糊的圆圈延伸到最近的邻居之外,这告诉我们,当我们离感兴趣的点越远,与其他点联系的确定性就越小。

这两个超参数(local_connectivity 和 n_neighbors)最简单的理解就是可以将他们视为下限和上限:

Local_connectivity(默认值为1):100%确定每个点至少连接到另一个点(连接数量的下限)。

n_neighbors(默认值为15):一个点直接连接到第 16 个以上的邻居的可能性为 0%。
 

1.2.4 Merging od edges

由于我们采用了不同距离的方法,因此从每个点的角度来看,都不可避免地会遇到边缘权重不对齐的情况, 例如,点 A→B 的边权重与 B→A 的边权重不同,因此需要确定边的权重

MAP 通过取两条边的并集克服了边权重不一致的问题。

最后,我们得到一个连接的邻域图,如下所示:

2、 Finding a low-dimensional representation

从高维空间学习近似流形后,UMAP 的下一步是将其投影(映射)到低维空间。

2.1 Minmum distance

在低维空间表示时不改变其距离,且流形上的距离是相对于全局坐标系的标准欧几里得距离。

从可变距离到标准距离的转换的转换也会影响与最近邻居的距离。因此,我们必须传递另一个名为 min_dist(默认值=0.1)的超参数来定义嵌入点之间的最小距离。

本质上,我们可以控制点的最小分布,避免在低维嵌入中许多点相互重叠的情况。

2.2 Minimizing the cost function

指定最小距离后,该算法可以开始寻找较好的低维流形表示。 UMAP 通过最小化以下成本函数(也称为交叉熵 (CE))来实现:

最终目标是在低维表示中找到边的最优权值。这些最优权值随着上述交叉熵函数的最小化而出现,这个过程是可以通过随机梯度下降法来进行优化的

UMAP的工作就完成了,我们得到了一个数组,其中包含了指定的低维空间中每个数据点的坐标。

二、机器学习常用的的评价指标

1、分类评价指标

准确率、召回率、F1分数、混淆矩阵

2、聚类指标

(1)兰德指数RI(Rand index)

衡量聚类性能的指标,范围为0—1,越接近1效果越好,但只能评估将样本分为两簇的算法。


>>> from sklearn import metrics
>>> labels_true = [0, 0, 0, 1, 1, 1]
>>> labels_pred = [0, 0, 1, 1, 2, 2]
 
>>> metrics.adjusted_rand_score(labels_true, labels_pred)  

 (2)调整兰德指数ARI(Adjusted Rand index)

可以评估分为多个簇的算法,取值范围为【-1,1】

 (3)互信息MI(Mutual information)

衡量聚类效果与真是标签的相似性,取值范围为【0,1】,受真是标签的影响,类别越多,越容易产生偏差。


>>> from sklearn import metrics
>>> labels_true = [0, 0, 0, 1, 1, 1]
>>> labels_pred = [0, 0, 1, 1, 2, 2]
 
>>> metrics.adjusted_mutual_info_score(labels_true, labels_pred)  
0.22504
(4)标准互信息NMI(Normalized Mutual information)

将互信息分数标准化,在0—1之间进行缩放,性能更加稳健,不受真实分类的影响。

 
(5)调整互信息AMI(Adjusted Mutual information)

 不受标签数值的影响,即使标签重排,也不影响分数


>>> from sklearn import metrics
>>> labels_true = [0, 0, 0, 1, 1, 1]
>>> labels_pred = [0, 0, 1, 1, 2, 2]
 
>>> metrics.adjusted_mutual_info_score(labels_true, labels_pred)  
0.22504

 
(6)Homogeneity and completness score

评估聚类的结果,前者为同质性,后者为完整性,需要找到真实标签的熵与预测标签的熵。

同质性  homogeneity   :每个群集只包含单个类的成员。
完整性  completeness :给定类的所有成员都分配给同一个群集。

>>> from sklearn import metrics
>>> labels_true = [0, 0, 0, 1, 1, 1]
>>> labels_pred = [0, 0, 1, 1, 2, 2]
 
>>> metrics.homogeneity_score(labels_true, labels_pred)  
0.66...
 
>>> metrics.completeness_score(labels_true, labels_pred) 


(7)V-measure

综合考虑同质性和完整性,衡量算法对数据划分的质量。

 
(8)轮廓系数(Silhouette Coefficient )

适用于实际类别信息未知的数据,取值范围为【-1,1】,同类样本距离越近且不同类别类别距离越远,分数越高。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值