首页 > 代码库 > 【转载】典型关联分析(Canonical Correlation Analysis)

【转载】典型关联分析(Canonical Correlation Analysis)

典型关联分析(Canonical Correlation Analysis)

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

1. 问题

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

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

      假设技术分享技术分享,那么可以建立等式Y=AX如下

      技术分享

      其中技术分享,形式和线性回归一样,需要训练m次得到m个技术分享

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

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

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

      技术分享 和 技术分享

      然后使用Pearson相关系数

      技术分享

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

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

2. CCA表示与求解

      给定两组向量技术分享技术分享(替换之前的x为技术分享,y为技术分享),技术分享维度为技术分享技术分享维度为技术分享,默认技术分享。形式化表示如下:

      技术分享

      技术分享是x的协方差矩阵;左上角是技术分享自己的协方差矩阵;右上角是技术分享;左下角是技术分享,也是技术分享的转置;右下角是技术分享的协方差矩阵。

      与之前一样,我们从技术分享技术分享的整体入手,定义

      技术分享 技术分享

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

      技术分享 技术分享 技术分享

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

      技术分享

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

      技术分享

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

      技术分享

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

      接下来我们求解a和b。

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

      这个优化问题的条件是:

      Maximize 技术分享

      Subject to: 技术分享

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

      技术分享

      求导,得

      技术分享

      技术分享

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

      技术分享

      技术分享

      第一个等式左乘技术分享,第二个左乘技术分享,再根据技术分享,得到

      技术分享

      也就是说求出的技术分享即是Corr(u,v),只需找最大技术分享即可。

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

      技术分享

      技术分享

      写成矩阵形式

      技术分享

      令

      技术分享

      那么上式可以写作:

      技术分享

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

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

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

      技术分享

      这样先对技术分享求特征值技术分享和特征向量技术分享,然后根据第二个式子求得b。

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

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

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

      技术分享 技术分享

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

      Maximize       技术分享

      Subject to:   技术分享

                        技术分享

      其实第二组约束条件就是技术分享

      计算步骤同第一组计算方法,只不过是技术分享技术分享的第二大特征值。

      得到的技术分享技术分享其实也满足

      技术分享 即 技术分享

      总结一下,i和j分别表示技术分享技术分享得到结果

      技术分享

      技术分享

3. CCA计算例子

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

      技术分享

      技术分享

      然后求技术分享,得

      技术分享

      这里的A和前面的技术分享中的A不是一回事(这里符号有点乱,不好意思)。

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

      技术分享

      然后求b,之前我们说的方法是根据技术分享求b,这里,我们也可以采用类似求a的方法来求b。

      回想之前的等式

      技术分享

      技术分享

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

      技术分享

      然后直接对技术分享求特征向量即可,注意技术分享技术分享的特征值相同,这个可以自己证明下。

      不管使用哪种方法,

      技术分享

      技术分享

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

      技术分享

      这里的技术分享应该是我们之前得到的VecA中的列向量的m倍,我们只需要求得m,然后将VecA中的列向量乘以m即可。

      技术分享

      这里的技术分享是VecA的列向量。

      技术分享

      因此最后的a和b为:

      技术分享

      第一组典型变量为

      技术分享

      相关系数

      技术分享

      第二组典型变量为

      技术分享

      相关系数

      技术分享

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

4. Kernel Canonical Correlation Analysis(KCCA)

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

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

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

      技术分享

      我们可以使用技术分享技术分享来替代技术分享技术分享,比如原来的技术分享特征向量为技术分享,那么

      我们可以定义

      技术分享

      如果技术分享技术分享的构造一样,那么

      技术分享

                        技术分享

      这样,仅通过计算x和y的内积的平方就可以达到在高维空间(这里为技术分享)中计算技术分享技术分享内积的效果。

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

      技术分享

      即第技术分享行第技术分享列的元素是第技术分享个和第技术分享个样例在核函数下的内积。

      一个很好的核函数定义:

      技术分享

      其中样例x有n个特征,经过技术分享变换后,从n维特征上升到了N维特征,其中每一个特征是技术分享

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

      技术分享 技术分享

      这里假设x和y都是n维的,引入核函数后,技术分享技术分享变为了N维。

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

      技术分享

      技术分享

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

      现在我们有样本技术分享,这里的技术分享表示样本x的第i个样例,是n维向量。

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

      技术分享

      其中

      技术分享

      技术分享

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

      技术分享

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

      技术分享

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

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

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

      好了,接下来我们看看使用技术分享技术分享后,u和v的变化

      技术分享

      技术分享

      技术分享表示可以将第i个样例上升到的N维向量,技术分享意义可以类比原始CCA的x。

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

      技术分享

      简写为

      技术分享

      其中X(M×N)为

            技术分享

      我们发现

      技术分享

      我们可以算出u和v的方差和协方差(这里实际上事先对样本技术分享技术分享做了均值归0处理):

      技术分享

      技术分享

      技术分享

      这里技术分享技术分享维度可以不一样。

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

      技术分享

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

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

      技术分享

      其中

      技术分享

      引入核函数后,得到

      技术分享

      其中

      技术分享

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

5. 其他话题

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

      要进行regularization。

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

      技术分享

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

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

      技术分享

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

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

      3、怎么使用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

【转载】典型关联分析(Canonical Correlation Analysis)