您的位置:首页 > 其它

核典型关联分析(KCCA)算法原理

2015-07-24 16:34 423 查看

Kernel Canonical Correlation Analysis

1、CCA的不足

普通的线性CCA只能探索两组随机变量之间的线性关系,而在实际情况中,变量间的关系往往是非线性的,于是非线性的CCA出现了,KCCA就是一种常用的非线性CCA算法。KCCA是把核函数的思想引入CCA中,思想是把低维的数据映射到高维的特征空间(核函数空间),并通过核函数方便地在核函数空间进行关联分析。

2、算法实现

首先引入一个把数据映射到高维特征空间的的映射(从m维到n维的映射):

ϕ:x=(x1,...,xm)↦ϕ(x)=(ϕ1(x),...,ϕn(x)),(m<n)\phi: \textbf{x} = (x_1,...,x_m) \mapsto \phi(\textbf{x}) = (\phi_1(\textbf{x}),...,\phi_n(\textbf{x})) , (m

核Kernel是指一个函数K,对所有的x,z\textbf{x},\textbf{z}有:

K(x,z)=⟨ϕ(x),ϕ(z)⟩K(\textbf{x},\textbf{z}) = \langle \phi(\textbf{x}), \phi(\textbf{z})\rangle

设两组向量的样本矩阵为:

Xp×N=(X1,...,XN),Yq×N=(Y1,...,YN)X_{p\times N} = (\textbf{X}_1,...,\textbf{X}_N),Y_{q\times N} = (\textbf{Y}_1,...,\textbf{Y}_N)

设ϕX,ϕY\phi_X,\phi_Y分别表示作用于X,YX,Y上的变换,即:

ϕX(X)=(ϕX(X1),...,ϕX(XN)),ϕY(Y)=(ϕY(Y1),...,ϕY(YN))\phi_X(\textbf{X}) = (\phi_X(\textbf{X}_1),...,\phi_X(\textbf{X}_N)),\phi_Y(\textbf{Y}) = (\phi_Y(\textbf{Y}_1),...,\phi_Y(\textbf{Y}_N))

变换后的ϕX(X)、ϕY(Y)\phi_X(\textbf{X})、\phi_Y(\textbf{Y})均为n x N维矩阵。之后和线性CCA类似,我们希望找到两个n维向量wX,wYw_\textbf{X},w_\textbf{Y},使得u=wTXϕX(X)u=w_X^T\phi_X(\textbf{X})与 v=wTYϕY(Y)v=w_Y^T\phi_Y(\textbf{Y})相关系数ρ\rho最大。

在X、YX、Y上定义核矩阵KX、KY(均为N×N)K_X、K_Y(均为N\times N)如下:

KX(i,j)=KX(Xi,Xj)=ϕX(Xi)TϕX(Xj),KY(i,j)=KY(Yi,Yj)=ϕY(Yi)TϕY(Yj)K_X(i,j) = K_X(X_i,X_j) =\phi_X(\textbf{X}_i)^T\phi_X(\textbf{X}_j),K_Y(i,j) = K_Y(Y_i,Y_j) = \phi_Y(\textbf{Y}_i)^T\phi_Y(\textbf{Y}_j)

该问题可以转化为一个优化问题:

L(wX,wY,λX,λY)=αTMα−λX2αTLα−λY2βTNβL(w_{X},w_{Y},\lambda_X,\lambda_Y) = \alpha^TM\alpha-\frac{\lambda_X}{2}\alpha^TL\alpha-\frac{\lambda_Y}{2}\beta^TN\beta

其中:

M=1NKTXJKYM = \frac{1}{N}K_X^TJK_Y

L=1NKTXJKX+ηKXL = \frac{1}{N}K_X^TJK_X+\eta K_X

N=1NKTYJKY+ηKYN = \frac{1}{N}K_Y^TJK_Y+\eta K_Y

J=I−11TJ = I - \textbf{1}\textbf{1}^T

1=(1,...,1)T\textbf{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)w_X = \sum_{i=1}^{N}\alpha_i\phi_X(X_i),w_Y = \sum_{i=1}^{N}\beta_i\phi_Y(Y_i)

则有:

u=wTXϕX(X)=∑Ni=1αiϕX(Xi)TϕX(X)u = w_X^T\phi_X(X) = \sum_{i=1}^{N}\alpha_i\phi_X(X_i)^T\phi_X(X) (2.1)

v=wTYϕY(Y)=∑Ni=1βiϕY(Yi)TϕY(Y)v = w_Y^T\phi_Y(Y) = \sum_{i=1}^{N}\beta_i\phi_Y(Y_i)^T\phi_Y(Y) (2.2)

具体的KCCA实现步骤如下:

(1)由样本X、Y以及核函数K(x,z)K(\textbf{x},\textbf{z})的定义计算核矩阵KX、KYK_X、K_Y

高斯核函数为:

K(x,z)=e−∣x−z∣22σ2K(\textbf{x},\textbf{z}) = e^{-\frac{\lvert \textbf{x}-\textbf{z}\rvert^2}{2\sigma^2}}

(2)计算M、N、L;

(3)由以下式子计算α、β\alpha、\beta:

L−1MN−1MTα=λ2αL^{-1}MN^{-1}M^T\alpha = \lambda^2\alpha

N−1MTL−1Mβ=λ2βN^{-1}M^TL^{-1}M\beta = \lambda^2\beta

(4)由2.1、2.2式计算u,vu,v:

u=∑Ni=1αiKX(Xi,X)u = \sum_{i=1}^{N}\alpha_iK_X(X_i,X)

v=∑Ni=1βiKY(Yi,Y)v= \sum_{i=1}^{N}\beta_iK_Y(Y_i,Y)

通过很多样本对X,YX,Y可以得到很多u,vu,v对,通过这些u,vu,v对可以画图观察u,vu,v之间的线性相关性,并计算相关系数ρ(u,v)\rho(u,v),其实最后计算u,vu,v可以直接利用核矩阵和α,β\alpha,\beta求解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: