Canonical Correlation Analysis(CCA)典型相关分析也是一种常用的降维算法。我们知道,PCA(Principal Component Analysis) 主分量分析将数据从高维映射到低维空间同时,保证了数据的分散性尽可能地大, 也就是数据的方差或者协方差尽可能大。而LDA(Linear Discriminant Analysis) 线性判别分析则利用了类标签,利用一种监督学习的方法,将数据从高维空间映射到低维空间时,让不同类的数据尽可能地分开而同一类的数据尽可能地聚合。
但是,有的时候,我们想探讨多个线性空间之间的相关性。比如有的时候我们会从图像中提取各种特征,每一种特征都可以构成一个线性空间,为了分析这些空间之间的相关性,我们可以利用CCA 来做分析。
假设我们有两个特征空间, S1=x1∈Rd1 , S2=x2∈Rd2 , 我们可以将两个特征向量合并。
可以看到, Σ12=ΣT21 , Σ 称为协方差矩阵。我们引入投影向量 a , b , 假设投影之后的变量满足:
可以进一步算出 u,v 的方差和协方差:
可以计算出 u,v 的相关系数:
将 u,v 的表达式代入,可以得到:
我们的目标是让相关系数 Corr(u,v) 尽可能地大。为了求解 a,b , 可以固定分母而让分子最大化,所以上面的函数可以变成:
构造拉格朗日等式:
L 分别对 a,b 求导,可以得到:
根据约束条件,可以得到:
所以只要求出 λ1 或者 λ2 就可以得到最大的相关系数。令 λ=λ1=λ2 .
通过上面的偏导数,我们可以得到:
写成矩阵形式:
令:
所以, λ 和 w 就是 B−1A 的特征值和特征向量。我们可以求出 B−1A 的特征值和特征向量,然后利用特征向量将原来的特征
x1,x2 做映射。对应特征值 λ 的求解,可以有更简单的方法,从上面的偏导数,我们可以得到如下等式:
我们可以利用上面的表达式求出 λ 和 a ,然后再待会上面的偏导数等式求出 b .
λ 就是 u,v 的相关系数, u,v 就是一对典型变量(canonical variables)。按照 B−1A 的特征值从大到小排列,可以求出一系列的典型变量。特征值越大,说明典型变量的相关性越强。
参考来源:
http://www.cnblogs.com/jerrylead/archive/2011/06/20/2085491.html
https://en.wikipedia.org/wiki/Canonical_correlation