CCA典型关联分析

典型关联分析(Canonical Correlation Analysis)

[pdf版本] 典型相关分析.pdf

1. 问题

      在线性回归中,我们使用直线来拟合样本点,寻找n维特征向量X和输出结果(或者叫做label)Y之间的线性关系。其中CCA典型关联分析CCA典型关联分析。然而当Y也是多维时,或者说Y也有多个特征时,我们希望分析出X和Y的关系。

      当然我们仍然可以使用回归的方法来分析,做法如下:

      假设CCA典型关联分析CCA典型关联分析,那么可以建立等式Y=AX如下

      CCA典型关联分析

      其中CCA典型关联分析,形式和线性回归一样,需要训练m次得到m个CCA典型关联分析

      这样做的一个缺点是,Y中的每个特征都与X的所有特征关联,Y中的特征之间没有什么联系。

      我们想换一种思路来看这个问题,如果将X和Y都看成整体,考察这两个整体之间的关系。我们将整体表示成X和Y各自特征间的线性组合,也就是考察CCA典型关联分析CCA典型关联分析之间的关系。

      这样的应用其实很多,举个简单的例子。我们想考察一个人解题能力X(解题速度CCA典型关联分析,解题正确率CCA典型关联分析)与他/她的阅读能力Y(阅读速度CCA典型关联分析,理解程度CCA典型关联分析)之间的关系,那么形式化为:

      CCA典型关联分析 和 CCA典型关联分析

      然后使用Pearson相关系数

      CCA典型关联分析

      来度量u和v的关系,我们期望寻求一组最优的解a和b,使得Corr(u, v)最大,这样得到的a和b就是使得u和v就有最大关联的权重。

      到这里,基本上介绍了典型相关分析的目的。

2. CCA表示与求解

      给定两组向量CCA典型关联分析CCA典型关联分析(替换之前的x为CCA典型关联分析,y为CCA典型关联分析),CCA典型关联分析维度为CCA典型关联分析CCA典型关联分析维度为CCA典型关联分析,默认CCA典型关联分析。形式化表示如下:

      CCA典型关联分析

      CCA典型关联分析是x的协方差矩阵;左上角是CCA典型关联分析自己的协方差矩阵;右上角是CCA典型关联分析;左下角是CCA典型关联分析,也是CCA典型关联分析的转置;右下角是CCA典型关联分析的协方差矩阵。

      与之前一样,我们从CCA典型关联分析CCA典型关联分析的整体入手,定义

      CCA典型关联分析 CCA典型关联分析

      我们可以算出u和v的方差和协方差:

      CCA典型关联分析 CCA典型关联分析 CCA典型关联分析

      上面的结果其实很好算,推导一下第一个吧:

      CCA典型关联分析

      最后,我们需要算Corr(u,v)了

      CCA典型关联分析

      我们期望Corr(u,v)越大越好,关于Pearson相关系数,《数据挖掘导论》给出了一个很好的图来说明:

      CCA典型关联分析

      横轴是u,纵轴是v,这里我们期望通过调整a和b使得u和v的关系越像最后一个图越好。其实第一个图和最后一个图有联系的,我们可以调整a和b的符号,使得从第一个图变为最后一个。

      接下来我们求解a和b。

      回想在LDA中,也得到了类似Corr(u,v)的公式,我们在求解时固定了分母,来求分子(避免a和b同时扩大n倍仍然符号解条件的情况出现)。这里我们同样这么做。

      这个优化问题的条件是:

      Maximize CCA典型关联分析

      Subject to: CCA典型关联分析

      求解方法是构造Lagrangian等式,这里我简单推导如下:

      CCA典型关联分析

      求导,得

      CCA典型关联分析

      CCA典型关联分析

      令导数为0后,得到方程组:

      CCA典型关联分析

      CCA典型关联分析

      第一个等式左乘CCA典型关联分析,第二个左乘CCA典型关联分析,再根据CCA典型关联分析,得到

      CCA典型关联分析

      也就是说求出的CCA典型关联分析即是Corr(u,v),只需找最大CCA典型关联分析即可。

      让我们把上面的方程组进一步简化,并写成矩阵形式,得到

      CCA典型关联分析

      CCA典型关联分析

      写成矩阵形式

      CCA典型关联分析

      令

      CCA典型关联分析

      那么上式可以写作:

      CCA典型关联分析

      显然,又回到了求特征值的老路上了,只要求得CCA典型关联分析的最大特征值CCA典型关联分析,那么Corr(u,v)和a和b都可以求出。

      在上面的推导过程中,我们假设了CCA典型关联分析CCA典型关联分析均可逆。一般情况下都是可逆的,只有存在特征间线性相关时会出现不可逆的情况,在本文最后会提到不可逆的处理办法。

      再次审视一下,如果直接去计算CCA典型关联分析的特征值,复杂度有点高。我们将第二个式子代入第一个,得

      CCA典型关联分析

      这样先对CCA典型关联分析求特征值CCA典型关联分析和特征向量CCA典型关联分析,然后根据第二个式子求得b。

待会举个例子说明求解过程。

      假设按照上述过程,得到了CCA典型关联分析最大时的CCA典型关联分析CCA典型关联分析。那么CCA典型关联分析CCA典型关联分析称为典型变量(canonical variates),CCA典型关联分析即是u和v的相关系数。

      最后,我们得到u和v的等式为:

      CCA典型关联分析 CCA典型关联分析

      我们也可以接着去寻找第二组典型变量对,其最优化条件是

      Maximize       CCA典型关联分析

      Subject to:   CCA典型关联分析

                        CCA典型关联分析

      其实第二组约束条件就是CCA典型关联分析

      计算步骤同第一组计算方法,只不过是CCA典型关联分析CCA典型关联分析的第二大特征值。

      得到的CCA典型关联分析CCA典型关联分析其实也满足

      CCA典型关联分析 即 CCA典型关联分析

      总结一下,i和j分别表示CCA典型关联分析CCA典型关联分析得到结果

      CCA典型关联分析

      CCA典型关联分析

3. CCA计算例子

      我们回到之前的评价一个人解题和其阅读能力的关系的例子。假设我们通过对样本计算协方差矩阵得到如下结果:

      CCA典型关联分析

      CCA典型关联分析

      然后求CCA典型关联分析,得

      CCA典型关联分析

      这里的A和前面的CCA典型关联分析中的A不是一回事(这里符号有点乱,不好意思)。

      然后对A求特征值和特征向量,得到

      CCA典型关联分析

      然后求b,之前我们说的方法是根据CCA典型关联分析求b,这里,我们也可以采用类似求a的方法来求b。

      回想之前的等式

      CCA典型关联分析

      CCA典型关联分析

      我们将上面的式子代入下面的,得

      CCA典型关联分析

      然后直接对CCA典型关联分析求特征向量即可,注意CCA典型关联分析CCA典型关联分析的特征值相同,这个可以自己证明下。

      不管使用哪种方法,

      CCA典型关联分析

      CCA典型关联分析

      这里我们得到a和b的两组向量,到这还没完,我们需要让它们满足之前的约束条件

      CCA典型关联分析

      这里的CCA典型关联分析应该是我们之前得到的VecA中的列向量的m倍,我们只需要求得m,然后将VecA中的列向量乘以m即可。

      CCA典型关联分析

      这里的CCA典型关联分析是VecA的列向量。

      CCA典型关联分析

      因此最后的a和b为:

      CCA典型关联分析

      第一组典型变量为

      CCA典型关联分析

      相关系数

      CCA典型关联分析

      第二组典型变量为

      CCA典型关联分析

      相关系数

      CCA典型关联分析

      这里的CCA典型关联分析(解题速度),CCA典型关联分析(解题正确率),CCA典型关联分析(阅读速度),CCA典型关联分析(阅读理解程度)。他们前面的系数意思不是特征对单个u或v的贡献比重,而是从u和v整体关系看,当两者关系最密切时,特征计算时的权重。

4. Kernel Canonical Correlation Analysis(KCCA)

      通常当我们发现特征的线性组合效果不够好或者两组集合关系是非线性的时候,我们会尝试核函数方法,这里我们继续介绍Kernel CCA。

      在《支持向量机-核函数》那一篇中,大致介绍了一下核函数,这里再简单提一下:

      当我们对两个向量作内积的时候

      CCA典型关联分析

      我们可以使用CCA典型关联分析CCA典型关联分析来替代CCA典型关联分析CCA典型关联分析,比如原来的CCA典型关联分析特征向量为CCA典型关联分析,那么

      我们可以定义

      CCA典型关联分析

      如果CCA典型关联分析CCA典型关联分析的构造一样,那么

      CCA典型关联分析

                        CCA典型关联分析

      这样,仅通过计算x和y的内积的平方就可以达到在高维空间(这里为CCA典型关联分析)中计算CCA典型关联分析CCA典型关联分析内积的效果。

      由核函数,我们可以得到核矩阵K,其中

      CCA典型关联分析

      即第CCA典型关联分析行第CCA典型关联分析列的元素是第CCA典型关联分析个和第CCA典型关联分析个样例在核函数下的内积。

      一个很好的核函数定义:

      CCA典型关联分析

      其中样例x有n个特征,经过CCA典型关联分析变换后,从n维特征上升到了N维特征,其中每一个特征是CCA典型关联分析

      回到CCA,我们在使用核函数之前

      CCA典型关联分析 CCA典型关联分析

      这里假设x和y都是n维的,引入核函数后,CCA典型关联分析CCA典型关联分析变为了N维。

      使用核函数后,u和v的公式为:

      CCA典型关联分析

      CCA典型关联分析

      这里的c和d都是N维向量。

      现在我们有样本CCA典型关联分析,这里的CCA典型关联分析表示样本x的第i个样例,是n维向量。

根据前面说过的相关系数,构造拉格朗日公式如下:

      CCA典型关联分析

      其中

      CCA典型关联分析

      CCA典型关联分析

      然后让L对a求导,令导数等于0,得到(这一步我没有验证,待会从宏观上解释一下)

      CCA典型关联分析

      同样对b求导,令导数等于0,得到

      CCA典型关联分析

      求出c和d干嘛呢?c和d只是CCA典型关联分析的系数而已,按照原始的CCA做法去做就行了呗,为了再引入CCA典型关联分析CCA典型关联分析

      回答这个问题要从核函数的意义上来说明。核函数初衷是希望在式子中有CCA典型关联分析,然后用K替换之,根本没有打算去计算出实际的CCA典型关联分析。因此即是按照原始CCA的方式计算出了c和d,也是没用的,因为根本有没有实际的CCA典型关联分析让我们去做CCA典型关联分析。另一个原因是核函数比如高斯径向基核函数可以上升到无限维,N是无穷的,因此c和d也是无穷维的,根本没办法直接计算出来。我们的思路是在原始的空间中构造出权重CCA典型关联分析CCA典型关联分析,然后利用CCA典型关联分析CCA典型关联分析CCA典型关联分析上升到高维,他们在高维对应的权重就是c和d。

      虽然CCA典型关联分析CCA典型关联分析是在原始空间中(维度为样例个数M),但其作用点不是在原始特征上,而是原始样例上。看上面得出的c和d的公式就知道。CCA典型关联分析通过控制每个高维样例的权重,来控制c。

      好了,接下来我们看看使用CCA典型关联分析CCA典型关联分析后,u和v的变化

      CCA典型关联分析

      CCA典型关联分析

      CCA典型关联分析表示可以将第i个样例上升到的N维向量,CCA典型关联分析意义可以类比原始CCA的x。

      鉴于这样表示接下来会越来越复杂,改用矩阵形式表示。

      CCA典型关联分析

      简写为

      CCA典型关联分析

      其中X(M×N)为

            CCA典型关联分析

      我们发现

      CCA典型关联分析

      我们可以算出u和v的方差和协方差(这里实际上事先对样本CCA典型关联分析CCA典型关联分析做了均值归0处理):

      CCA典型关联分析

      CCA典型关联分析

      CCA典型关联分析

      这里CCA典型关联分析CCA典型关联分析维度可以不一样。

      最后,我们得到Corr(u,v)

      CCA典型关联分析

      可以看到,在将CCA典型关联分析CCA典型关联分析处理成CCA典型关联分析CCA典型关联分析后,得到的结果和之前形式基本一样,只是将CCA典型关联分析替换成了两个K乘积。

      因此,得到的结果也是一样的,之前是

      CCA典型关联分析

      其中

      CCA典型关联分析

      引入核函数后,得到

      CCA典型关联分析

      其中

      CCA典型关联分析

      注意这里的两个w有点区别,前面的CCA典型关联分析维度和x的特征数相同,CCA典型关联分析维度和y的特征数相同。后面的CCA典型关联分析维度和x的样例数相同,CCA典型关联分析维度和y的样例数相同,严格来说“CCA典型关联分析维度=CCA典型关联分析维度”。

5. 其他话题

      1、当协方差矩阵不可逆时,怎么办?

      要进行regularization。

      一种方法是将前面的KCCA中的拉格朗日等式加上二次正则化项,即:

      CCA典型关联分析

      这样求导后得到的等式中,等式右边的矩阵一定是正定矩阵。

      第二种方法是在Pearson系数的分母上加入正则化项,同样结果也一定可逆。

      CCA典型关联分析

      2、求Kernel矩阵效率不高怎么办?

      使用Cholesky decomposition压缩法或者部分Gram-Schmidt正交化法,。

      3、怎么使用CCA用来做预测?

CCA典型关联分析

  

     CCA典型关联分析

      4、如果有多个集合怎么办?X、Y、Z…?怎么衡量多个样本集的关系?

      这个称为Generalization of the Canonical Correlation。方法是使得两两集合的距离差之和最小。可以参考文献2。

6. 参考文献

      1、 http://www.stat.tamu.edu/~rrhocking/stat636/LEC-9.636.pdf

      2、 Canonical correlation analysis: An overview with application to learning methods. David R. Hardoon , Sandor Szedmak and John Shawe-Taylor

      3、 A kernel method for canonical correlation analysis. Shotaro Akaho

      4、 Canonical Correlation a Tutorial. Magnus Borga

      5、 Kernel Canonical Correlation Analysis. Max Welling