普通的线性CCA只能探索两组随机变量之间的线性关系,而在实际情况中,变量间的关系往往是非线性的,于是非线性的CCA出现了,KCCA就是一种常用的非线性CCA算法。KCCA是把核函数的思想引入CCA中,思想是把低维的数据映射到高维的特征空间(核函数空间),并通过核函数方便地在核函数空间进行关联分析。
首先引入一个把数据映射到高维特征空间的的映射(从m维到n维的映射):
ϕ:x=(x1,...,xm)↦ϕ(x)=(ϕ1(x),...,ϕn(x)),(m<n)
核Kernel是指一个函数K,对所有的 x,z 有:
K(x,z)=⟨ϕ(x),ϕ(z)⟩
设两组向量的样本矩阵为:
Xp×N=(X1,...,XN),Yq×N=(Y1,...,YN)
设 ϕX,ϕY 分别表示作用于 X,Y 上的变换,即:
ϕX(X)=(ϕX(X1),...,ϕX(XN)),ϕY(Y)=(ϕY(Y1),...,ϕY(YN))
变换后的 ϕX(X)、ϕY(Y) 均为n x N维矩阵。之后和线性CCA类似,我们希望找到两个n维向量 wX,wY ,使得 u=wTXϕX(X) 与 v=wTYϕY(Y) 相关系数 ρ 最大。
在 X、Y 上定义核矩阵 KX、KY(均为N×N) 如下:
KX(i,j)=KX(Xi,Xj)=ϕX(Xi)TϕX(Xj),KY(i,j)=KY(Yi,Yj)=ϕY(Yi)TϕY(Yj)
该问题可以转化为一个优化问题:
L(wX,wY,λX,λY)=αTMα−λX2αTLα−λY2βTNβ
其中:
M=1NKTXJKY
L=1NKTXJKX+ηKX
N=1NKTYJKY+ηKY
J=I−11T
1=(1,...,1)T
参考《CCA在数字图像处理中的应用研究》
《canonical correlation analysis: an overview with application to learning methods》
由理论推导可得:
wX=∑Ni=1αiϕX(Xi),wY=∑Ni=1βiϕY(Yi)
则有:
u=wTXϕX(X)=∑Ni=1αiϕX(Xi)TϕX(X) (2.1)
v=wTYϕY(Y)=∑Ni=1βiϕY(Yi)TϕY(Y) (2.2)
具体的KCCA实现步骤如下:
(1)由样本X、Y以及核函数 K(x,z) 的定义计算核矩阵 KX、KY
高斯核函数为:
K(x,z)=e−∣x−z∣22σ2
(2)计算M、N、L;
(3)由以下式子计算 α、β :
L−1MN−1MTα=λ2α
N−1MTL−1Mβ=λ2β
(4)由2.1、2.2式计算 u,v :
u=∑Ni=1αiKX(Xi,X)
v=∑Ni=1βiKY(Yi,Y)
通过很多样本对 X,Y 可以得到很多 u,v 对,通过这些 u,v 对可以画图观察 u,v 之间的线性相关性,并计算相关系数 ρ(u,v) ,其实最后计算 u,v 可以直接利用核矩阵和 α,β 求解。