典型相关分析(CCA)

CCA是数据挖掘中重要的算法,可以挖掘出数据间的关联关系的算法。

基础知识

如何衡量两个变量之间的相关性呢?我们有相关系数,如下所示:

的绝对值越接近1,说明X与Y的线性相关性越高

的绝对值越接近0,说明X与Y的线性相关性越低

算法思想

CCA将多维数据利用线性变换投影为1维的数据,然后计算的相关系数,进而得到二者的相关性。

那么我们的投影标准就是:

投影后,两组数据的相关系数最大。(这样我们就能挖掘出最相关的特征了。)

算法推导

假设投影向量分别为, 则投影后的数据为:

则:

假设我们的原始数据是标准化的,即均值为0,方差为1,则:

因为均值为0,有:

我们的问题就转化为:

问题转化为:

则根据拉格朗日乘子法,有:

求导有:

所以有:

所以有:

可以推出:

因此有:

对上面的式子进行特征值分解,那么特征值的平方根的最大值的特征向量就是我们求得的向量a

同理可以求得向量b

基于SVD的推导

其实算法也可以通过svd分解的算法求得,如下所示:

令:

则问题转化为:

这里都是单位正交基。

令:

对M进行奇异值分解,有:

因此有:

因为都是单位正交基矩阵, 且都是单位正交基。

所以有是只有一个标量值为1,其他值为0的向量。

所以只要是最大的奇异值即可。

因此问题转换为对做奇异值分解,得到,进而得到

进而得到:

后记

我们看到CCA可以用作分析向量的相关性,一定意义上,也可以用作降维。

但是CCA最重要的一个应用还是特征融合,即根据两组特征找到相关性最大的特征,这样可以利用较好的特征来从较差的特征中进行进一步的特征抽取,提高分类效果。

显示 Gitment 评论