Rethinking batch effect removing methods—CCA

PS. 最近和组里的同学一起发现去 batch effect 的一些方法都可以由一个比较统一的框架来理解。(包括 CCA, MNN,LIGER),就想着先用中文梳理一遍顺便也是和大家分享一下。个人认为这三者之间的关系并不是非常显然hhh。

原文链接:
https://zhuanlan.zhihu.com/p/352695812?utm_source=wechat_session&utm_medium=social&s_r=0

  1. MNN: Haghverdi L, Lun A T L, Morgan M D, et al. Batch effects in single-cell RNA-sequencing data are corrected by matching mutual nearest neighbors[J]. Nature biotechnology, 2018, 36(5): 421-427.

  2. CCA: Stuart T, Butler A, Hoffman P, et al. Comprehensive integration of single-cell data[J]. Cell, 2019, 177(7): 1888-1902. e21.

  3. LIGER: Welch J D, Kozareva V, Ferreira A, et al. Single-cell multi-omic integration compares and contrasts features of brain cell identity[J]. Cell, 2019, 177(7): 1873-1887. e17.

背景介绍

CCA 因为 seurat 的广泛使用,所以基本是目前最流行的数据整合方法,但是之前读原来的文章的时候觉得有点奇怪,感觉和传统的CCA不太一样,当时和同学讨论了一下也没有想通,最近实验室同学又提起觉得 CCA 有点问题,就又给了我一个机会来重新理解一下原来的 CCA anchor,这次比较快就想明白了,原来 CCA anchor 的本质其实不是 CCA 而是 paired PCA,或者说是另类的 MDS,私以为和 MDS 的关系比 CCA 更近。

PCA回忆

一般介绍 PCA 都是从最大投影方差或者最小重构误差讲起,很少从类似于 MDS 的角度,感觉目前发现了一个基于 MDS 思维的理解,最大化保留样本间的余弦距离,从这个角度可以无缝衔接到所谓的 “CCA” (如果考虑 Dual PCA 的话,其实也非常自然)
Task: Given data

其中n表示 sample 数量,m表示 feature 数量。

下面考虑找到一个低维的矩阵

使得

尽可能的接近。也就是尽可能保留样本与样本之间的余弦距离也就是(向量的内积也可以视作是一种 similarity 的衡量)从这个角度可以发现其实和 MDS 是比较像的。

那么自然可以得到对

做 SVD 分解,可以得到

,此时

即为使得

最小的解,此时可以看到我们可以使用

作为 X 在低维空间中的一个表示(选取前 k 大对应的部分 U)

回忆传统的 PCA 流程

,然后得到投影矩阵为 V,随后新的坐标即为

。和之前的思路得到的结果是一致的。(其实也就是Dual PCA)

Not CCA, it's paired PCA or MDS

那么我们开始思考所谓的 CCA ,我们考虑两组数据

, 其中 n,k 表示 sample 数量, m 表示 feature 数量。

此时我们一样考虑找到两个低维矩阵

使得

的差别要尽可能小,也就是在低维空间中保留两个数据集样本之间的余弦距离或者点积相似度。

为了达到这个过程还是一样的做法,对

做 SVD 分解得到

,此时选取

可以得到是尽可能保留了 similarity 的结果。(选取前 k 大的特征值)

总结

此时对照 Satijia 的 2019 cell 中对 seruat 中 CCA 的说明,可以看到最后的结果和上述推导相差一个奇异值的 scale。这部分其实对衡量细胞之间的距离,构建 NN graph 有很重要的影响。
而且还有一点就是他们文章中是做了一些假设才得到最后的 SVD 形式,这些假设其实是不合理的(要求单个数据集的 covariance matrix是对角的),但是按照我们的理解形式就不需要这些假设了。

和正宗 CCA 的差别

首先 seruat 中的 CCA 是把 正宗的 CCA 中的 project vector 直接拿过来做 embedding,正宗的 CCA 降维应该是是使用

得到的是对 Gene 的投影,在这个投影空间上 两个数据集投影出来的 Gene 是correlation得到最大的保留。

Result

首先为了 Check 自己用 SVD 直接分解能否消除 Batch
原始数据:
按照文章中没有乘奇异值
乘上奇异值
可以看到乘上奇异值之后,不同 cell type 之间的距离是更远的,换言之保留了更多的生物 variance。也很好理解是为什么。

总结

其实就是如果是用传统的 PCA 对两个数据集降维就是在低维空间上尽可能保留两个数据集的

, 但是 paired PCA 是只尽可能保留两个数据集之间的

为什么能消除 batch,私以为是因为当考虑大的

的时候其实自身数据集之间的 similarity 是占据了主导,但是如果只考虑两个数据集之间的 similarity,自然相似的就会得到更接近的表示,因此可以得到这样的结果。

感觉基于这个思路也许可以得到一些更有意思的想法。比如其实本质是保留不同数据集之间的距离关系。
(0)

相关推荐