典型关联分析(Canonical Correlation Analysis)


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

1.问题

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

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

      假设典型关联分析(Canonical Correlation Analysis)典型关联分析(Canonical Correlation Analysis),那么可以建立等式Y=AX如下

      典型关联分析(Canonical Correlation Analysis)

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

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

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

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

      典型关联分析(Canonical Correlation Analysis) 和 典型关联分析(Canonical Correlation Analysis)

      然后使用Pearson相关系数

      典型关联分析(Canonical Correlation Analysis)

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

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

2. CCA表示与求解

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

      典型关联分析(Canonical Correlation Analysis)

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

     与之前一样,我们从典型关联分析(Canonical Correlation Analysis)典型关联分析(Canonical Correlation Analysis)的整体入手,定义

      典型关联分析(Canonical Correlation Analysis) 典型关联分析(Canonical Correlation Analysis)

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

      典型关联分析(Canonical Correlation Analysis) 典型关联分析(Canonical Correlation Analysis) 典型关联分析(Canonical Correlation Analysis)  

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

      典型关联分析(Canonical Correlation Analysis)(这里用(aTxi-u1)2来表达不规范,向量的平方一般都表示为2-范数的平方形式,这样就好理解了)

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

      典型关联分析(Canonical Correlation Analysis)----------------------------------(1)

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

      典型关联分析(Canonical Correlation Analysis)

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

      接下来我们求解a和b。

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

      这个优化问题的条件是:

      Maximize 典型关联分析(Canonical Correlation Analysis)

      Subject to: 典型关联分析(Canonical Correlation Analysis)

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

      典型关联分析(Canonical Correlation Analysis)--------------------------------(2)

(可看出λ和θ不是矩阵,是单值,因为它们后面的()内的约束都是单值,λ/2和θ/2也可以何在一起作为矩阵,后面两个括号也合成一个矩阵(这时为好理解淡然s.t.中也将两个()内容合并作为一个g()=0的矩阵)

      求导,得

      典型关联分析(Canonical Correlation Analysis)

      典型关联分析(Canonical Correlation Analysis)

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

      典型关联分析(Canonical Correlation Analysis)

      典型关联分析(Canonical Correlation Analysis)

      第一个等式左乘典型关联分析(Canonical Correlation Analysis),第二个左乘典型关联分析(Canonical Correlation Analysis),再根据典型关联分析(Canonical Correlation Analysis),得到

      典型关联分析(Canonical Correlation Analysis)

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

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

      典型关联分析(Canonical Correlation Analysis)

      典型关联分析(Canonical Correlation Analysis)

      写成矩阵形式

      典型关联分析(Canonical Correlation Analysis)

      令

      典型关联分析(Canonical Correlation Analysis)

      那么上式可以写作:

      典型关联分析(Canonical Correlation Analysis)----------------------------------------------------(3)

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

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

      再次审视一下,如果直接去计算典型关联分析(Canonical Correlation Analysis)的特征值,复杂度有点高。

       我们将第二个式子代入第一个,得(CCA最终的实施等式)

-------------------------------------------------------------------------------------------------------------------------------

      典型关联分析(Canonical Correlation Analysis)--------------------------------------------------------------------(4)

     这样先对典型关联分析(Canonical Correlation Analysis)求特征值典型关联分析(Canonical Correlation Analysis)和特征向量典型关联分析(Canonical Correlation Analysis),然后根据第二个式子求得b。---------------(4)

----------------------------------------------------------------------------------------------------------------


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

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

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

      典型关联分析(Canonical Correlation Analysis) 典型关联分析(Canonical Correlation Analysis)----------------------------------------------------------------(5)

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

      Maximize    典型关联分析(Canonical Correlation Analysis)

      Subject to:   典型关联分析(Canonical Correlation Analysis)

                        典型关联分析(Canonical Correlation Analysis)

      其实第二组约束条件就是典型关联分析(Canonical Correlation Analysis)。(即:典型关联分析(Canonical Correlation Analysis) )

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

      得到的典型关联分析(Canonical Correlation Analysis)典型关联分析(Canonical Correlation Analysis)其实也满足

      典型关联分析(Canonical Correlation Analysis) 即 典型关联分析(Canonical Correlation Analysis)

      总结一下,i和j分别表示典型关联分析(Canonical Correlation Analysis)典型关联分析(Canonical Correlation Analysis)得到结果

      典型关联分析(Canonical Correlation Analysis)

      典型关联分析(Canonical Correlation Analysis)

3. CCA计算例子

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

      典型关联分析(Canonical Correlation Analysis)

      典型关联分析(Canonical Correlation Analysis)

      然后求典型关联分析(Canonical Correlation Analysis),得

      典型关联分析(Canonical Correlation Analysis)

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

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

      典型关联分析(Canonical Correlation Analysis)

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

      回想之前的等式

      典型关联分析(Canonical Correlation Analysis)

      典型关联分析(Canonical Correlation Analysis)

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

      典型关联分析(Canonical Correlation Analysis)

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

      不管使用哪种方法,

      典型关联分析(Canonical Correlation Analysis)

      典型关联分析(Canonical Correlation Analysis)

      这里我们得到a和b的两组向量,到这还没完,我们需要让它们满足之前的约束条件(前面虽然使用拉格朗日乘子法求出了λ和A、B,但是在求梯度时,并没有使用两个=1的限定等式约束条件,因此在这里需要使用两个条件对得到的结果进行调整)

      典型关联分析(Canonical Correlation Analysis)

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

      典型关联分析(Canonical Correlation Analysis)

      这里的典型关联分析(Canonical Correlation Analysis)是VecA的列向量。

      典型关联分析(Canonical Correlation Analysis)

      因此最后的a和b为:

      典型关联分析(Canonical Correlation Analysis)

      第一组典型变量为

      典型关联分析(Canonical Correlation Analysis)

      相关系数

      典型关联分析(Canonical Correlation Analysis)

      第二组典型变量为

      典型关联分析(Canonical Correlation Analysis)

      相关系数

      典型关联分析(Canonical Correlation Analysis)

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


CCA目的是:

典型关联分析(Canonical Correlation Analysis)

最终使用CCA求解的结果为:

典型关联分析(Canonical Correlation Analysis)





4. Kernel Canonical Correlation Analysis(KCCA)

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

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

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

      典型关联分析(Canonical Correlation Analysis)

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

      我们可以定义

      典型关联分析(Canonical Correlation Analysis)

      如果典型关联分析(Canonical Correlation Analysis)典型关联分析(Canonical Correlation Analysis)的构造一样,那么

      典型关联分析(Canonical Correlation Analysis)

                        典型关联分析(Canonical Correlation Analysis)

      这样,仅通过计算x和y的内积的平方就可以达到在高维空间(这里为典型关联分析(Canonical Correlation Analysis))中计算典型关联分析(Canonical Correlation Analysis)典型关联分析(Canonical Correlation Analysis)内积的效果(核函数的意义例子)

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

      典型关联分析(Canonical Correlation Analysis)

      即第典型关联分析(Canonical Correlation Analysis)行第典型关联分析(Canonical Correlation Analysis)列的元素是第典型关联分析(Canonical Correlation Analysis)个和第典型关联分析(Canonical Correlation Analysis)个样例在核函数下的内积。(人为定义的,为下面KxKy做准备罢了)

      一个很好的核函数定义:(这里应该是映射函数,而不是核函数,有误)

      典型关联分析(Canonical Correlation Analysis)

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

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

      典型关联分析(Canonical Correlation Analysis) 典型关联分析(Canonical Correlation Analysis)

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

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

      典型关联分析(Canonical Correlation Analysis)

      典型关联分析(Canonical Correlation Analysis)----------------------------------------------------(1) 注:带x或y下表的φx(x),表示的是对某一样本的映射

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

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

--------------------------------------------------------

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

      典型关联分析(Canonical Correlation Analysis)-----------------------------------(2)

      其中

      典型关联分析(Canonical Correlation Analysis)

      典型关联分析(Canonical Correlation Analysis)

-----------------------------------------------

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

      典型关联分析(Canonical Correlation Analysis)

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

      典型关联分析(Canonical Correlation Analysis)-----------------------------------------------------------(3)

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

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

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

-----------------------------------------------------

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

      典型关联分析(Canonical Correlation Analysis)

      典型关联分析(Canonical Correlation Analysis)---------------------------------(4)

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

--------------------------------------------------

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

      典型关联分析(Canonical Correlation Analysis)

      简写为

      典型关联分析(Canonical Correlation Analysis)

      其中X(M×N)为

            典型关联分析(Canonical Correlation Analysis)

      我们发现

      典型关联分析(Canonical Correlation Analysis)

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

      典型关联分析(Canonical Correlation Analysis)

      典型关联分析(Canonical Correlation Analysis)

      典型关联分析(Canonical Correlation Analysis)

      这里典型关联分析(Canonical Correlation Analysis)典型关联分析(Canonical Correlation Analysis)维度可以不一样。

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

      典型关联分析(Canonical Correlation Analysis)-----------------------------------------------(5)

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

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

      典型关联分析(Canonical Correlation Analysis)

      其中

      典型关联分析(Canonical Correlation Analysis)

      引入核函数后,得到(KCCA实际可操作的等式)

      典型关联分析(Canonical Correlation Analysis)-------------------------------------------------------------------(6)

      其中

      典型关联分析(Canonical Correlation Analysis)

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

5. 其他话题

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

      要进行regularization。

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

      典型关联分析(Canonical Correlation Analysis)

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

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

      典型关联分析(Canonical Correlation Analysis)

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

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

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

典型关联分析(Canonical Correlation Analysis)

  

     典型关联分析(Canonical Correlation Analysis)

      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


附:有关矩阵和向量乘积的某一范数,等于分别的某一范数的情况(一般是根据矩阵范数相容性定义,只要矩阵范数合法,即可满足矩阵范数相容性不等式:矩阵与向量的乘积的某M范数小于等于各自该M范数的乘积(进而对“矩阵与向量的乘积”和“向量”的具体V范数做出具体指定))

请问:矩阵2-范数相容性条件中等号成立的条件!
矩阵范数相容性条件如下:
||A*B||

我重新推导了一下!如果A的共轭转置与A的逆相等,则上式等号也是成立的~

答:

当且仅当A关于最大奇异值的某个右奇异向量等于B关于最大奇异值的某个左奇异向量相同时||AB||_2=||A||_2*||B||_2.
补充:
不客气地讲,你推导的结论可以说是显然的...2-范数是酉不变范数.
任何向量都是酉阵的奇异向量,所以这和我给你的判别法是相容的.证明只要按定义看||ABx||=||A||*||Bx||=||A||*||B||*||x||同时取等号的条件.