深入解析Seurat整合单细胞数据函数FindIntegrationAnchors 2(CCA和L2正则化算法)

hi 各位,今天我们来深入了解一下Seurat做多样本整合的深入算法,CCA算法以及FindIntegrationAnchors函数中的的参数l2.norm

先来知道一下CCA

典型关联分析(Canonical Correlation Analysis,以下简称CCA)是最常用的挖掘数据关联关系的算法之一。比如我们拿到两组数据,第一组是人身高和体重的数据,第二组是对应的跑步能力和跳远能力的数据。那么我们能不能说这两组数据是相关的呢?CCA可以帮助我们分析这个问题。

  1. CCA概述

在数理统计里面,我们都知道相关系数这个概念。假设有两组一维的数据集X和Y,则相关系数ρ
的定义为:


图片.png

其中cov(X,Y)是X和Y的协方差,而D(X),D(Y)分别是X和Y的方差。相关系数ρ的取值为[-1,1], ρ的绝对值越接近于1,则X和Y的线性相关性越高。越接近于0,则X和Y的线性相关性越低。
虽然相关系数可以很好的帮我们分析一维数据的相关性,但是对于高维数据就不能直接使用了。拿上面我们提到的,如果X是包括人身高和体重两个维度的数据,而Y是包括跑步能力和跳远能力两个维度的数据,就不能直接使用相关系数的方法。那我们能不能变通一下呢?CCA给了我们变通的方法。
CCA使用的方法是将多维的X和Y都用线性变换为1维的X'和Y',然后再使用相关系数来看X'和Y'的相关性。将数据从多维变到1位,也可以理解为CCA是在进行降维,将高维数据降到1维,然后再用相关系数进行相关性的分析。下面我们看看CCA的算法思想。

2. CCA的算法思想

上面我们提到CCA是将高维的两组数据分别降维到1维,然后用相关系数分析相关性。但是有一个问题是,降维的标准是如何选择的呢?回想下主成分分析PCA(参考文章单细胞PCA分析的降维原理),降维的原则是投影方差最大;再回想下线性判别分析LDA,降维的原则是同类的投影方差小,异类间的投影方差大。对于我们的CCA,它选择的投影标准是降维到1维后,两组数据的相关系数最大。
现在我们具体来讨论下CCA的算法思想。假设我们的数据集是X和Y,X为n1×m的样本矩阵。Y为n2×m的样本矩阵.其中m为样本个数,而n1,n2分别为X和Y的特征维度。
对于X矩阵,我们将其投影到1维,或者说进行线性表示,对应的投影向量或者说线性系数向量为a, 对于Y矩阵,我们将其投影到1维,或者说进行线性表示,对应的投影向量或者说线性系数向量为b, 这样X ,Y投影后得到的一维向量分别为X',Y'。我们有

图片.png

我们CCA的优化目标是最大化ρ(X′,Y′)得到对应的投影向量a,b,即
图片.png

在投影前,我们一般会把原始数据进行标准化,得到均值为0而方差为1的数据X和Y。这样我们有:
图片.png

由于我们的X,Y的均值均为0,则
图片.png

令SXY=cov(X,Y),则优化目标可以转化为:
图片.png

由于分子分母增大相同的倍数,优化目标结果不变,我们可以采用和SVM类似的优化方法,固定分母,优化分子,具体的转化为:
图片.png

也就是说,我们的CCA算法的目标最终转化为一个凸优化过程,只要我们求出了这个优化目标的最大值,就是我们前面提到的多维X和Y的相关性度量,而对应的a,b则为降维时的投影向量,或者说线性系数。
这个函数优化一般有两种方法,第一种是奇异值分解SVD,第二种是特征分解,两者得到的结果一样,下面我们分别讲解。

  1. CCA算法的SVD求解
    对于上面的优化目标,我们可以做一次矩阵标准化,就可以用SVD来求解了。


    图片.png

    也就是说,我们的优化目标变成下式:


    图片.png

    仔细一看,如果将u和v看做矩阵
    图片.png
    的某一个奇异值对应的左右奇异向量。那么利用奇异值分解,我们可以得到M=UΣVT,其中U,V分别为M的左奇异向量和右奇异向量组成的矩阵,而Σ为M的奇异值组成的对角矩阵。由于U,V所有的列都为标准正交基,则uTU和VTv得到一个只有一个标量值为1,其余标量值为0的向量。此时我们有
    图片.png

    也就是说我们最大化
    图片.png
    ,其实对应的最大值就是某一组左右奇异向量所对应的奇异值的最大值。也就是将M做了奇异值分解后,最大的奇异值就是我们优化目标的最大值,或者说我们的X和Y之间的最大相关系数。利用对应的左右奇异向量u,v我们也可以求出我们原始的X和Y的线性系数
    图片.png

    可以看出,SVD的求解方式非常简洁方便。但是如果你不熟悉SVD的话,我们也可以用传统的拉格朗日函数加上特征分解来完成这个函数的优化。
  2. CCA算法的特征分解求解  
    特征分解方式就比较传统了,利用拉格朗日函数,优化目标转化为最大化下式:
    图片.png

    分别对a,b求导并令结果为0,我们得到:
    图片.png

    将上面第一个式子左乘aT,第二个式子左乘bT,并利用
    图片.png
    ,我们得到
    图片.png

    其实也就是说我们的拉格朗日系数就是我们要优化的目标。我们继续将上面的两个式子做整理,第一个式子左乘S−1XX,第二个式子左乘S−1YY,我们得到:
    图片.png

    将上面第二个式子带入第一个式子,我们得到
    图片.png

    这个式子我们就熟悉了,这不就是特征分解吗!要求最大的相关系数λ,我们只需要对矩阵
    图片.png

    做特征分解,找出最大的特征值取平方根即可,此时最大特征值对应的特征向量即为X的线性系数a。
    同样的办法,我们将上面第一个式子带入第二个式子,我们得到
    图片.png
    , 我们只需要对矩阵
    图片.png

    做特征分解,找出最大的特征值取平方根即可,此时最大特征值对应的特征向量即为Y的线性系数b。
    可以看出特征分解的方法要比SVD复杂,但是两者求得的结果其实是等价的,只要利用SVD和特征分解之间的关系就很容易发现两者最后的结果相同。
  3. CCA算法流程
图片.png
  1. CCA算法小结
    CCA算法广泛的应用于数据相关度的分析,同时还是偏最小二乘法的基础。但是由于它依赖于数据的线性表示,当我们的数据无法线性表示时,CCA就无法使用,此时我们可以利用核函数的思想,将数据映射到高维后,再利用CCA的思想降维到1维,求对应的相关系数和线性关系,这个算法一般称为KCCA。
    此外,我们在算法里只找了相关度最大的奇异值或者特征值,作为数据的相关系数,实际上我们也可以像PCA一样找出第二大奇异值,第三大奇异值,。。。得到第二相关系数和第三相关系数。然后对数据做进一步的相关性分析。但是一般的应用来说,找出第一相关系数就可以了。
    有时候我们的矩阵SXX,SYY不可逆,此时我们得不到对应的逆矩阵,一般遇到这种情况可以对SXX,SYY进行正则化,将SXX,SYY变化为
    图片.png
    ,然后继续求逆。其中γ为正则化系数。

深入理解L1、L2正则化

我们在用Seurat做多样本整合的过程中,不仅仅用到了CCA的算法,其中还有一个参数l2.norm,那L2正则化是什么,为什么我们分析的时候一般添加这个参数、

1. L2 正则化直观解释

L2 正则化公式非常简单,直接在原来的损失函数基础上加上权重参数的平方和:

图片.png

其中,Ein 是未包含正则化项的训练样本误差,λ 是正则化参数,可调。但是正则化项是如何推导的?接下来,我将详细介绍其中的物理意义。

我们知道,正则化的目的是限制参数过多或者过大,避免模型更加复杂。例如,使用多项式模型,如果使用 10 阶多项式,模型可能过于复杂,容易发生过拟合。所以,为了防止过拟合,我们可以将其高阶部分的权重 w 限制为 0,这样,就相当于从高阶的形式转换为低阶。

为了达到这一目的,最直观的方法就是限制 w 的个数,但是这类条件属于 NP-hard 问题,求解非常困难。所以,一般的做法是寻找更宽松的限定条件:

图片.png

上式是对 w 的平方和做数值上界限定,即所有w 的平方和不超过参数 C。这时候,我们的目标就转换为:最小化训练样本误差 Ein,但是要遵循 w 平方和小于 C 的条件。

下面,我用一张图来说明如何在限定条件下,对 Ein 进行最小化的优化。

这里写图片描述

如上图所示,蓝色椭圆区域是最小化 Ein 区域,红色圆圈是 w 的限定条件区域。在没有限定条件的情况下,一般使用梯度下降算法,在蓝色椭圆区域内会一直沿着 w 梯度的反方向前进,直到找到全局最优值 wlin。例如空间中有一点 w(图中紫色点),此时 w 会沿着 -∇Ein 的方向移动,如图中蓝色箭头所示。但是,由于存在限定条件,w 不能离开红色圆形区域,最多只能位于圆上边缘位置,沿着切线方向。w 的方向如图中红色箭头所示。

那么问题来了,存在限定条件,w 最终会在什么位置取得最优解呢?也就是说在满足限定条件的基础上,尽量让 Ein 最小。

我们来看,w 是沿着圆的切线方向运动,如上图绿色箭头所示。运动方向与 w 的方向(红色箭头方向)垂直。运动过程中,根据向量知识,只要 -∇Ein 与运行方向有夹角,不垂直,则表明 -∇Ein 仍会在 w 切线方向上产生分量,那么 w 就会继续运动,寻找下一步最优解。只有当 -∇Ein 与 w 的切线方向垂直时,-∇Ein在 w 的切线方向才没有分量,这时候 w 才会停止更新,到达最接近 wlin 的位置,且同时满足限定条件。

这里写图片描述

-∇Ein 与 w 的切线方向垂直,即 -∇Ein 与 w 的方向平行。如上图所示,蓝色箭头和红色箭头互相平行。这样,根据平行关系得到:

图片.png

移项,得:


图片.png

这样,我们就把优化目标和限定条件整合在一个式子中了。也就是说只要在优化 Ein 的过程中满足上式,就能实现正则化目标。

接下来,重点来了!根据最优化算法的思想:梯度为 0 的时候,函数取得最优值。已知 ∇Ein 是 Ein 的梯度,观察上式,λw 是否也能看成是某个表达式的梯度呢?

当然可以!λw 可以看成是 1/2λw*w 的梯度:

图片.png

这样,我们根据平行关系求得的公式,构造一个新的损失函数:

图片.png

之所以这样定义,是因为对 Eaug 求导,正好得到上面所求的平行关系式。上式中等式右边第二项就是 L2 正则化项。

这样, 我们从图像化的角度,分析了 L2 正则化的物理意义,解释了带 L2 正则化项的损失函数是如何推导而来的。

2. L1 正则化直观解释

L1 正则化公式也很简单,直接在原来的损失函数基础上加上权重参数的绝对值:

图片.png

我仍然用一张图来说明如何在 L1 正则化下,对 Ein 进行最小化的优化。

这里写图片描述

Ein 优化算法不变,L1 正则化限定了 w 的有效区域是一个正方形,且满足 |w| < C。空间中的点 w 沿着 -∇Ein 的方向移动。但是,w 不能离开红色正方形区域,最多只能位于正方形边缘位置。其推导过程与 L2 类似,此处不再赘述。

3. L1 与 L2 解的稀疏性

介绍完 L1 和 L2 正则化的物理解释和数学推导之后,我们再来看看它们解的分布性。

这里写图片描述

以二维情况讨论,上图左边是 L2 正则化,右边是 L1 正则化。从另一个方面来看,满足正则化条件,实际上是求解蓝色区域与黄色区域的交点,即同时满足限定条件和 Ein 最小化。对于 L2 来说,限定区域是圆,这样,得到的解 w1 或 w2 为 0 的概率很小,很大概率是非零的。

对于 L1 来说,限定区域是正方形,方形与蓝色区域相交的交点是顶点的概率很大,这从视觉和常识上来看是很容易理解的。也就是说,方形的凸点会更接近 Ein 最优解对应的 wlin 位置,而凸点处必有 w1 或 w2 为 0。这样,得到的解 w1 或 w2 为零的概率就很大了。所以,L1 正则化的解具有稀疏性。

扩展到高维,同样的道理,L2 的限定区域是平滑的,与中心点等距;而 L1 的限定区域是包含凸点的,尖锐的。这些凸点更接近 Ein 的最优解位置,而在这些凸点上,很多 wj 为 0。

关于 L1 更容易得到稀疏解的原因,有一个很棒的解释,请见下面的链接:

https://www.zhihu.com/question/37096933/answer/70507353

4. 正则化参数 λ

正则化是结构风险最小化的一种策略实现,能够有效降低过拟合。损失函数实际上包含了两个方面:一个是训练样本误差。一个是正则化项。其中,参数 λ 起到了权衡的作用。

这里写图片描述

以 L2 为例,若 λ 很小,对应上文中的 C 值就很大。这时候,圆形区域很大,能够让 w 更接近 Ein 最优解的位置。若 λ 近似为 0,相当于圆形区域覆盖了最优解位置,这时候,正则化失效,容易造成过拟合。相反,若 λ 很大,对应上文中的 C 值就很小。这时候,圆形区域很小,w 离 Ein 最优解的位置较远。w 被限制在一个很小的区域内变化,w 普遍较小且接近 0,起到了正则化的效果。但是,λ 过大容易造成欠拟合。欠拟合和过拟合是两种对立的状态。

数学太难了,真的要吐了

生活很好,有你更好

你可能感兴趣的:(深入解析Seurat整合单细胞数据函数FindIntegrationAnchors 2(CCA和L2正则化算法))